GoogleアカウントからSAML認証でAWSにログインする

f:id:shonansurvivors:20210724073416p:plain

IAMユーザーを使わずに、GoogleアカウントからSAML認証でAWSのマネジメントコンソールにログインする場合の手順をスクリーンショット付きでまとめました。

使用するGoogleアカウントについては普通の@gmail.comのアカウントでは不可で、有料サービスであるGoogle Workspace(旧名 G Suite)のGoogleアカウントである必要があります。

Google Workspaceは、一番安いBusiness Starterプランで1ユーザー680円/月がかかります(2021年7月現在)。

以下の手順の通りにやってもうまくいかない場合は、Google公式のヘルプに掲載されている手順を参照してください。

目次

【Google】カスタム属性の追加

Google Workspaceの管理者アカウントでadmin.google.comにアクセス。

ユーザー > その他 > カスタム属性を管理しますを選択。

f:id:shonansurvivors:20210723141056p:plain

カスタム属性を追加を選択。

f:id:shonansurvivors:20210723142659p:plain

以下の通り入力し、追加ボタンを押す。

項目
カテゴリ Amazon
説明 Amazon Custom Attributes
名前 Role
情報の種類 テキスト
公開設定 ユーザーと管理者が閲覧可能
値の数 複数の値

f:id:shonansurvivors:20210723142609p:plain

【Google】IdPメタデータのダウンロード

セキュリティ > 設定を選択。

f:id:shonansurvivors:20210723143023p:plain

SAML アプリケーションに対するシングル サインオン(SSO)の設定を選択。

f:id:shonansurvivors:20210723143210p:plain

メタデータをダウンロードボタンを押す。

ダウンロードしたファイルは、後でAWS側の画面で使用します。

f:id:shonansurvivors:20210723143327p:plain

【AWS】IDプロバイダーの追加

AWSマネジメントコンソールのIAM画面で、IDプロバイダーを選択。

f:id:shonansurvivors:20210723143623p:plain

以下の通り入力し、プロバイダを追加ボタンを押す。

項目
プロバイダのタイプ SAML
プロバイダ名 GoogleApps
メタデータドキュメント GoogleのIdPメタデータをアップロードする

f:id:shonansurvivors:20210723150330p:plain

【AWS】IAMロールの追加

IAM > ロール > ロールの作成を選択。

以下の通り選択し、次のステップ: アクセス権限ボタンを押す。

項目
信頼されたエンティティ SAML2.0フェデレーション
SAMLプロバイダー GoogleApps
ラジオボタン プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する

f:id:shonansurvivors:20210723145355p:plain

以下を実施し、IAMロールの作成を終える(画面は省略)

  • ロールに任意のポリシーをアタッチする
  • 必要に応じてタグを付ける
  • 任意のロール名を入力

そのAWSアカウントで複数のIAMロールを使い分けるのであれば、その分だけ繰り返しIAMロールを作成してください。

【Google】Amazon Web Servicesアプリの追加

admin.google.comにアクセス。

アプリ > ウェブアプリとモバイルアプリを選択。

f:id:shonansurvivors:20210723150529p:plain

アプリを検索を選択。

f:id:shonansurvivors:20210723150722p:plain

検索欄にAmazon Web Servicesと入力し、表示されたAmazon Web Servicesウェブアプリを選択。

f:id:shonansurvivors:20210723150822p:plain

最初の画面では何もせず、続行ボタンを押す。

f:id:shonansurvivors:20210724080106p:plain

次の画面でも何もせず、続行ボタンを押す。

f:id:shonansurvivors:20210723151505p:plain

以下の通り選択し、完了ボタンを押す。

項目
属性(1つめ) Basic Information > Primary Email
属性(2つめ) Amazon > Role

f:id:shonansurvivors:20210723152240p:plain

Amazon Web Servicesアプリのユーザーアクセスを選択。

f:id:shonansurvivors:20210723153138p:plain

サービスのステータスオン(すべてのユーザー)にして保存を押す。

f:id:shonansurvivors:20210723153336p:plain

【Google】ユーザーにAWSのロールを紐付け

admin.google.comにアクセス。

ディレクトリ > ユーザー > AWSにログインさせたいユーザーの名前を選択。

f:id:shonansurvivors:20210723154035p:plain

ユーザー情報を選択

f:id:shonansurvivors:20210723154219p:plain

画面の下の方にあるAmazonのパネルまでスクロールする。

RoleIAMロールのARNIDプロバイダーのARNをカンマ区切りで入力する。

例 : arn:aws:iam::{AWSアカウントID}:role/{ロール名},arn:aws:iam::{AWSアカウントID}:saml-provider/GoogleApps

以下の画面例では、異なる2つのAWSアカウントそれぞれに作成済みのAdminRoleとReadOnlyRoleというIAMロールを、1人のGoogleユーザーに紐付けています。

f:id:shonansurvivors:20210723154850p:plain

GoogleアカウントからAWSのマネジメントコンソールにログインする

Roleを紐付けたGoogleアカウントでGoogleのトップ画面に行き、右上のGoogleのアプリ一覧メニューからAmazon Web Servicesを選択。

f:id:shonansurvivors:20210724064412p:plain

もし複数のGoogleアカウントが表示されたら、Google Workspaceのアカウントを選択。

f:id:shonansurvivors:20210724064547p:plain

AWSアカウントとRoleの一覧が表示されたら、Roleを選んでサインインボタンを押す。

f:id:shonansurvivors:20210724064641p:plain

以下の通り、AWSのマネジメントコンソールが表示されたら成功です。

f:id:shonansurvivors:20210724065335p:plain

注意点

AWSアカウントとRoleの一覧が表示されるところで、代わりに以下のnot_a_saml_appのエラーが表示されたら、数時間から最長1日待ってからやり直してください。

f:id:shonansurvivors:20210724064811p:plain

先ほど、admin.google.com

Amazon Web Servicesアプリ > ユーザーアクセス > サービスのステータスオン(すべてのユーザー)

にしましたが、その反映が完了していないとエラーになるようです。

f:id:shonansurvivors:20210723153336p:plain

AWS CLIを使う

AWS CLIを使う場合は、saml2awsが便利です。設定方法は後日書こうと思います。