これで行けた。
G Suite アカウントを用いた AWS へのシングルサインオン | AWS Startup ブログ
一旦設定をすれば、ユーザの追加は以下のみ。
・Google Workspaceでユーザ作成
・ユーザー > ○○名○○前○○ > ユーザー情報 の「AWS」にて、Roleの設定
ある日突然、400エラーになったら証明書の有効期限切れの可能性あり。
400. That’s an error.
Error: malformed_certificate
Error while signing data with certificate
1. Googleコンソールの「アプリ」から「Amazon Web Services」を選択
https://admin.google.com/ac/apps/unified
2. 「サービスプロバイダの詳細」を選択
3. 「証明書を管理」を選択、「証明書の追加」、「メタデータをダウンロード」
4. 「サービスプロバイダの詳細」で新しい証明書を選択して「保存」
5. AWSコンソールでIDプロバイダを選択
https://us-east-1.console.aws.amazon.com/iamv2/home?region=ap-northeast-1#/identity_providers
6. メタデータ置換
以上で400エラーが解消する。
ページが無くなった時のために、引用しておく。
Step1: AWS で利用する SAML 属性を G Suite のユーザープロファイルに追加
1. 管理者アカウントで G Suite 管理コンソール にログインし、”ユーザー” をクリック、次の画面で右上の “カスタム属性を管理します” と表示されるアイコンをクリックします。
2. “カスタム属性を追加” をクリックします。
3. 次のようにカスタムフィールドを追加します。
追加せずに既存のフィールドを代用することも可能ですが、新規に作成されたほうがいいかと思います。(その場合、 “部署” フィールドに IAM Role の ARN を登録するなどのようになります。)Role 用のフィールドは必須ですが、 Session Duration は無くても動作するため任意になります。
Step 2: G Suite でサービスプロバイダの設定と、IdP メタデータの取得
1. G Suite 管理コンソール のトップん戻り、”アプリ” > “SAML アプリ” の順にクリックします。
2. 新規作成を選択し、”Amazon Web Services” をクリックします。。
3. “ダウンロード” ボタンから IdP メタデータをダウンロードして下さい。
4. “サービス プロバイダの詳細” は変更箇所はありません。
5. “属性のマッピング” 設定を行います。
どのような情報を引き渡せばいいかは 認証レスポンスの SAML アサーションを設定する に記載がありますが、”RoleSessionName” と “Role” は必須になります。”RoleSessionName” はユーザ毎にユニークであることが好ましいのでメールアドレスを利用します。
また、デフォルトの Session の有効期間は1時間であり、作業中に切れることも多いかと思います。パラメータで可変にするためには属性名に https://aws.amazon.com/SAML/Attributes/SessionDuration を設定し、値に “Session Duration” を設定します。
Step 3: AWS アカウントで IdP の作成
1. IAM の管理画面を開き、”ID プロバイダー” を選択し “プロバイダの作成” を行います。
2. 先ほどダウンロードしたメタデータをアップロードし、任意のプロバイダー名を設定して下さい。
Step 4: AWS アカウントで IAM Role の作成
1. IAM の管理画面を開き、”ロール” を選択し “ロールの作成” を行います。
2. “SAML 2.0 フェデレーション” を選択し、先ほど作成した ID プロバイダーを選択します。
3. SAML 経由で認証したユーザに割り当てる権限を設定します。今回は試しに ReadOnlyAccess を付与します。
4. 任意のロール名をつけて作成します。
Step5: AWS で利用する SAML 属性を G Suite のユーザープロファイルに追加
1. 属性を設定するユーザのプロファイルを開き、”ユーザー情報” をクリックします。
2. AWS の項目を入力します。
設定する内容は 認証レスポンスの SAML アサーションを設定する に記載がありますが、Role については Role ARN と ID プロバイダーの ARN をコンマ区切りで記載する必要があります。今回の例だと arn:aws:iam::123456789012:role/GsuiteReadOnly,arn:aws:iam::123456789012:saml-provider/GSuite のようになります。(アカウント ID はご自身のものを設定して下さい。)
また、今回は Session の有効期間を最大の12時間 (43200秒) に設定しておりますが、こちらは推奨値という訳でははないのでお客様の要件に合わせて設定頂く必要があります。
6. G Suite で SAML アプリの有効化
設定直後は無効化されているため、SAML アプリを有効化する必要があります。
今回はテストのためすべてのユーザーに対して有効化しますが、実際には部門ごとにロールアウトしていく方が好ましいかと思います。また、 SAML アプリが有効になっていても、前述の SAML 属性が設定されていない場合は認証に失敗します。
7. ログインできるかの確認
一通り設定が終わったら、アプリランチャーの最下部に “Amazon Web Services” のアイコンが表示されます。(アイコンは “SAML アプリ” の設定で変更可能ですが割愛します)
こちらをクリックすることで AWS のマネジメントコンソールへログインすることが出来るようになります。
ログイン後にコンソールに表示されるアカウント情報を確認すると、次のように表示されているはずです。
G Suite 側のメールアドレスで各個人はユニークに識別されつつ、権限的には IAM Role のものが適用されます。
※ Role を複数設定している場合は次のような画面が表示されます。