IAMユーザーを使わずに、GoogleアカウントからSAML認証でAWSのマネジメントコンソールにログインする場合の手順をスクリーンショット付きでまとめました。
使用するGoogleアカウントについては普通の@gmail.com
のアカウントでは不可で、有料サービスであるGoogle Workspace(旧名 G Suite)のGoogleアカウントである必要があります。
Google Workspaceは、一番安いBusiness Starterプランで1ユーザー680円/月がかかります(2021年7月現在)。
以下の手順の通りにやってもうまくいかない場合は、Google公式のヘルプに掲載されている手順を参照してください。
目次
- 目次
- 【Google】カスタム属性の追加
- 【Google】IdPメタデータのダウンロード
- 【AWS】IDプロバイダーの追加
- 【AWS】IAMロールの追加
- 【Google】Amazon Web Servicesアプリの追加
- 【Google】ユーザーにAWSのロールを紐付け
- GoogleアカウントからAWSのマネジメントコンソールにログインする
- AWS CLIを使う
【Google】カスタム属性の追加
Google Workspaceの管理者アカウントでadmin.google.comにアクセス。
ユーザー
> その他
> カスタム属性を管理します
を選択。
カスタム属性を追加
を選択。
以下の通り入力し、追加
ボタンを押す。
項目 | 値 |
---|---|
カテゴリ | Amazon |
説明 | Amazon Custom Attributes |
名前 | Role |
情報の種類 | テキスト |
公開設定 | ユーザーと管理者が閲覧可能 |
値の数 | 複数の値 |
【Google】IdPメタデータのダウンロード
セキュリティ
> 設定
を選択。
SAML アプリケーションに対するシングル サインオン(SSO)の設定
を選択。
メタデータをダウンロード
ボタンを押す。
ダウンロードしたファイルは、後でAWS側の画面で使用します。
【AWS】IDプロバイダーの追加
AWSマネジメントコンソールのIAM画面で、IDプロバイダー
を選択。
以下の通り入力し、プロバイダを追加
ボタンを押す。
項目 | 値 |
---|---|
プロバイダのタイプ | SAML |
プロバイダ名 | GoogleApps |
メタデータドキュメント | GoogleのIdPメタデータをアップロードする |
【AWS】IAMロールの追加
IAM
> ロール
> ロールの作成
を選択。
以下の通り選択し、次のステップ: アクセス権限
ボタンを押す。
項目 | 値 |
---|---|
信頼されたエンティティ | SAML2.0フェデレーション |
SAMLプロバイダー | GoogleApps |
ラジオボタン | プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する |
以下を実施し、IAMロールの作成を終える(画面は省略)
- ロールに任意のポリシーをアタッチする
- 必要に応じてタグを付ける
- 任意のロール名を入力
そのAWSアカウントで複数のIAMロールを使い分けるのであれば、その分だけ繰り返しIAMロールを作成してください。
【Google】Amazon Web Servicesアプリの追加
admin.google.comにアクセス。
アプリ
> ウェブアプリとモバイルアプリ
を選択。
アプリを検索
を選択。
検索欄にAmazon Web Services
と入力し、表示されたAmazon Web Services
ウェブアプリを選択。
最初の画面では何もせず、続行
ボタンを押す。
次の画面でも何もせず、続行
ボタンを押す。
以下の通り選択し、完了
ボタンを押す。
項目 | 値 |
---|---|
属性(1つめ) | Basic Information > Primary Email |
属性(2つめ) | Amazon > Role |
Amazon Web Services
アプリのユーザーアクセス
を選択。
サービスのステータス
をオン(すべてのユーザー)
にして保存
を押す。
【Google】ユーザーにAWSのロールを紐付け
admin.google.comにアクセス。
ディレクトリ
> ユーザー
> AWSにログインさせたいユーザーの名前を選択。
ユーザー情報
を選択
画面の下の方にあるAmazon
のパネルまでスクロールする。
Role
にIAMロールのARN
とIDプロバイダーのARN
をカンマ区切りで入力する。
例 : arn:aws:iam::{AWSアカウントID}:role/{ロール名},arn:aws:iam::{AWSアカウントID}:saml-provider/GoogleApps
以下の画面例では、異なる2つのAWSアカウントそれぞれに作成済みのAdminRoleとReadOnlyRoleというIAMロールを、1人のGoogleユーザーに紐付けています。
GoogleアカウントからAWSのマネジメントコンソールにログインする
Roleを紐付けたGoogleアカウントでGoogleのトップ画面に行き、右上のGoogleのアプリ一覧メニューからAmazon Web Services
を選択。
もし複数のGoogleアカウントが表示されたら、Google Workspaceのアカウントを選択。
AWSアカウントとRoleの一覧が表示されたら、Roleを選んでサインイン
ボタンを押す。
以下の通り、AWSのマネジメントコンソールが表示されたら成功です。
注意点
AWSアカウントとRoleの一覧が表示されるところで、代わりに以下のnot_a_saml_app
のエラーが表示されたら、数時間から最長1日待ってからやり直してください。
先ほど、admin.google.comの
Amazon Web Services
アプリ > ユーザーアクセス
> サービスのステータス
をオン(すべてのユーザー)
にしましたが、その反映が完了していないとエラーになるようです。
AWS CLIを使う
AWS CLIを使う場合は、saml2awsが便利です。設定方法は後日書こうと思います。