AWS IAM Identity CenterをGoogle Cloud IdentityとIdP連携してGoogleアカウントでAWSにSSOする

Cloud Identity や IAM Identity Center（以下IdC）のどちらか、或いは両方に詳しくなくともIdP連携してSSOできるよう設定手順を本稿に記します。
なお、本稿では SCIM の設定は行いません。

無料版の Cloud Identity でも利用可能です。
Google Workspace も同じ手順で設定できます。

# Cloud Identity とは

[Cloud Identity](https://cloud.google.com/identity) は、[Google Workspace](https://workspace.google.co.jp/) から Gmail やカレンダーなどのグループウェア機能を取り除いたサービスであり、アカウント管理に特化した IDaaS（Identity as a Service）ソリューションです。
[Cloud Identity とは - Cloud Identity ヘルプ](https://support.google.com/cloudidentity/answer/7319251)

# AWS IAM Identity Center とは

[AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/)は、AWS Single Sign-On の後継サービスで、複数の AWS アカウントへのアクセス一元管理が出来るサービスです。
[IAM Identity Center とは何ですか? - AWS IAM Identity Center](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/what-is.html)

# 前提

- Cloud Identity の登録と組織作成が完了している
- 組織の特権管理者権限が付与されたアカウントでログインしている

* IdC を有効化している
* IdC を操作できるポリシーが付与されたロールやユーザーでサインインしている

# 注意事項

IdC を単体或いはAD連携して利用しているなどの場合、アイデンティティソースの切り替え後は元の認証情報でサインイン出来なくなります。

# 設定手順

## サービスプロバイダーのメタデータを取得

AWS マネジメントコンソールへサインインし、[IAM Identity Center コンソール](https://console.aws.amazon.com/singlesignon)を開く

画面左のサイドナビゲーションより「設定」をクリック

アイデンティティソース タブの「アクション」を展開し、「アイデンティティソースを変更」をクリック

![2024-03-21_19h28_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/d8ec045f-fa90-7df0-3f71-81d1bbd088eb.png)

「外部 ID プロバイダー」を選択し、「次へ」をクリック

![2024-03-21_19h46_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/df4dc5e0-51fa-ad48-bd50-738773e83266.png)

次項で使用するため、サービスプロバイダーのメタデータをそれぞれ控える
※後ほど本画面の設定を進めるため、タブは開いたままにして、次の手順を実施した後に設定を続けられるようにするとスムーズです。

![2024-03-21_15h46_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/2449a54f-47c2-8f76-f3d1-773fd8e08e25.png)

## SAML アプリを追加

[Google 管理コンソール](https://admin.google.com/)を開く

左側のナビゲーションパネルから、「アプリ」を展開し、「ウェブアプリとモバイルアプリ」をクリック

「アプリを追加」をクリックし、「カスタム SAML アプリの追加」を選択

![2024-03-18_18h51_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/75354f18-c93b-0d21-3be6-49ed6b897c7f.png)

任意のアプリ名と説明を入力し、「続行」をクリック

![2024-03-27_17h40_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/e3ac44a8-ee5b-fbd6-501f-14f6d9154c71.png)

「メタデータをダウンロード」し、「続行」をクリック
※後からでもダウンロード可能です。

![2024-03-21_14h19_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/0a2c270d-cdb4-d195-1c1f-13611b3e6551.png)

（以下のようなメタデータファイルがダウンロードされます。）

```xml:GoogleIDPMetadata.xml
<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://accounts.google.com/o/saml2?idpid=01234abcd" validUntil="2028-01-25T08:20:34.000Z">
  <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MLkrSJaa2pxVaKhnJqiSWywM4cqFvUwpTcCrYrHkZa9y2THfWn2xsySRVGZLRpEC6mYAtr8vjZmP
pGjdeDjMq9xdHCxbSb5UZMFbTju3GM3PiTrsCbZTpdJEmC4wzdHd2xpGnynUC9SYnUURfNww6yZb
VQ9ugsC5AzQqmcaWMNjiv4Lxt59nE3EA52CTDQsVxCfPPjdd9Qgy5zpG2BvP9wtkTFT7DaZwBvhG
pq9sfb5uZuzhsVnPMYaExxGUzkKFfJjUpKD3MVuPvAf4iL5kcS27mC4wzdHd2xpGnynUC9SYnUUR
fNww6yZbVQ9ugsC5Za9y2THfWn2xsySRVGZLRpEC6mYAtr8vjZmPpGjdeDjMq9xdHCxbSb5UZMFb
Tju3GM3PiTrsCbZTpdJEUecdgWqpydm4bAYnkfV8TvNg4RNT5k5DB73cF2rAAzQqmcaWMNjiv4Lx
t59nE3EA52CTDQsVxCfPPjddhNVeUw2LMas494tMcXX37NydGBTstnf6yRhp8jU79Qgy5zpG2BvP
9wtkTFT7DaZwBvhGpq9sfb5uZuzhsVnPMYaExxGUzkKFfJjUpKD3MVuPvAf4iL5kcS27CQjXBzKC
Ns6S5nWBnT6LVHrt3cQSHUREH47meGg5MLkrSJaa2pxVaKhnJqiSWywM4cqFvUwpTcCrYrHkCT6J
VwZ7cZyrCpiT6re6h5T9Z98aZQT5t4BmVCkqYGU9W2FG6rqQmZ4dHM8mxPEZrEzgJ5fCwEyk42Ef
bwTdmBUFKPZa7SmXAk9QvyCQ3ZiyCvzsygMxiQYPrdfiKfydfJLhhuLLsgjESkWc8HDDBawWaNdG
KtYpUMD7TrqYDhsPdhUAyd4F9rHB8BuVLUCFxiU7jvciYajc9jNyGyYEwu8hvu6umdXvfzLKVYZk
nWUuEBu3jz4w74QayPNqyL3yMyUe64H3NwqeqKXJjq4vXh8HZcKg43VhJ4UxYeSnFRaVbgeKgXLt
F4JaQtXUKPEuNCRwApZ7JA5kXePDfEKp3Zmz3VVHFVPcpEMSXjGxjGzYHmHS79wvk7e6XLgAvqnW
D5eYccLSJdWWJz7YZHzBzbNDXFyY3VmNZ7pqP6BRP7ZJq9N2ffZhnCB8P9wqpuFJKnNBGvHUpa8G
gSLLugWDBKGqZcnwWahKhs8r8WtPbaaJMeHxzEDrsV</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://accounts.google.com/o/saml2/idp?idpid=01234abcd"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://accounts.google.com/o/saml2/idp?idpid=01234abcd"/>
  </md:IDPSSODescriptor>
</md:EntityDescriptor>

```

前項の手順で控えた AWS のサービスプロバイダーのメタデータを、下記サービス プロバイダの詳細にそれぞれ入力し、「続行」をクリック

- ACS の URL：`IAM Identity Center Assertion Consumer Service (ACS) の URL`を入力
- エンティティ ID：`IAM Identity Center の発行者 URL`を入力
- 名前 ID の形式：`EMAIL`を選択
  - ※何れの形式を選択しても認証自体は可能ですが、アクセスに後述の Google アプリを用いる場合は、`EMAIL`を選択していない場合認証に失敗します
- 名前 ID：`Basic Information > Primary email`を選択
  - ※IdCのユーザー名を姓や名にしたい場合は`Last name`や`First name`を選択します

![2024-03-21_14h50_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/4a9af4a8-66d4-d394-1a90-47360a5d72b6.png)

属性のマッピングは設定せず、「完了」をクリック

![2024-03-21_15h09_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/982eed64-802d-153f-e45f-d14c6c4df16e.png)

## アプリを有効化

アプリは追加時点でデフォルト無効なため、有効化します。

（前項でアプリを追加後、アプリの詳細画面に遷移していない、などの場合）
アプリ > ウェブアプリとモバイルアプリ 画面にてアプリの一覧から追加したアプリをクリック

![2024-03-28_02h27_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/8c09e0e5-68bd-7f1c-fa85-5ceaab790b0d.png)

追加したアプリの詳細画面にて、「ユーザー アクセス」項目をクリック

![2024-03-28_02h29_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/b3433078-a44a-0b36-b5d0-873452cf95fd.png)

サービスのステータス「オン（すべてのユーザー）」を選択し、「保存」をクリック
※特定の組織部門やグループに対してアプリを有効化する場合は、左側を展開し、必要な組織やグループを選択した上で、「継承」や「オーバーライド」してください。

![2024-03-28_02h32_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/f799e6bc-1468-7deb-d42b-6da4e0ea861d.png)

## アイデンティティソースを変更

AWS IdC コンソールの、「外部アイデンティティプロバイダーを設定」画面を表示する

IdP SAML メタデータ項目の「ファイルを選択」をクリックし、前項でダウンロードしたメタデータファイルをアップロード

「次へ」をクリック

![2024-03-21_15h43_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/5eb20bdf-b2d5-9c69-bd56-f73f78ddd959.png)

表示されたフィールドに「承諾」と入力し、「アイデンティティソースを変更」をクリック

![2024-03-21_15h48_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/b00d695e-8e13-b7a4-0853-5e0265ce4313.png)

# 動作確認

## ユーザーを追加

今回は、確認用の Google ユーザーを新しく作成します。
（既存のユーザーも使用可能です。）

![2024-03-26_11h32_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/32f67c7a-94a9-08a8-de27-f120ed2f722f.png)

![2024-03-26_20h31_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/1f8fc265-e3c0-efb5-3b3c-16663cca6665.png)

IdCにユーザーを追加する

「ユーザー名」は Google アカウントのカスタム SAML アプリで指定した名前 ID 項目の値と**必ず**一致する必要があります。
本稿通り設定している場合は、Google アカウントと同じメールアドレスを指定してください。

ユーザー名以外の項目は任意の値で問題ありません（Google アカウントと異なる指定も可）

![2024-03-26_15h50_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/c52ad869-66d3-cfec-0ce4-8ecc5f2d622e.png)

![2024-03-26_16h15_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/c52976fd-e9a3-dfdf-174b-6586534a675f.png)

## SSOを実施

Googleアカウントへログイン

![2024-03-26_11h41_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/81a07595-87ff-fbc6-0c67-112b793f2ec3.png)

AWS アクセスポータルのサインイン URL にアクセス
もしくは
Google アプリ（ワッフルアイコン）からランチャーを開き、追加したカスタム SAML アプリを選択
※カスタム SAML アプリ追加時に名前 ID を`Primary email`かつ名前 ID の形式を`EMAIL`に指定している場合のみ Google アプリ経由でアクセス可能です。

![2024-03-26_11h51_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/9e3d00da-6a9c-816a-046c-25ac342a6cc5.png)

![2024-03-28_02h48_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/4e64331c-3956-24a1-5379-b152146d3665.png)

自動でリダイレクトされます。

![2024-03-26_11h55_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/d7f48bc9-d816-3fa9-6602-4e4a60698750.png)

AWS アクセスポータルへサインインが確認できました。
（IdC で AWS アカウントへのアクセス許可を追加していないため、対象アカウントが表示されていません）
![2024-03-26_22h26_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/b15b23cf-15bd-bd21-d7ea-40f4400d24d5.png)

（IdC で SSO しているユーザーにアクセス許可を追加した後）
AWS アカウントへのサインインも確認できました。

![2024-03-26_22h32_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269716/7e807f1b-9c87-57d9-0306-bde58d6bd069.png)

# 参考

[Google Workspace および IAM アイデンティティセンターによる SAML と SCIM の設定 - AWS IAM Identity Center](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/gs-gwp.html)

[カスタム SAML アプリを設定する - Google Workspace 管理者 ヘルプ](https://support.google.com/a/answer/6087519)

[アマゾン ウェブ サービス（AWS）クラウド アプリケーション - Google Workspace 管理者 ヘルプ](https://support.google.com/a/answer/6194963)