IAM Identity Center と Active Directory 連携して MFA を利用する構成 (AppStream 2.0)

# はじめに

AppStream 2.0 では、2 つの認証方式があります

- ローカルの User Pool を利用した認証
- SAML を利用した外部の IdP と連携した認証



たまに、Active Directory と AppStream 2.0 を連携したい、というお話を頂きます。SAML 認証で、Entra ID や ADFS との連携が考えられるのですが、Entra ID や ADFS を利用していない環境では、新規の導入はなかなか大変です。そこで、IAM Identity Center と AWS Directory Service の AD Connector を利用して、既存の Active Direvctory と連携する方法を検討できます。今回の記事では、この設定方法を紹介します。





# 構成図

今回の検証を行う環境の構成図です。

重要なポイントは、IAM Identity Center が AD Connector 経由で自己管理型の Active Directory と連携することで、ユーザーは IAM Identity Center のポータル画面経由で AppStream 2.0 にアクセスが可能です。

![image-20250212233509651.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/88edb89c-e881-4577-84ff-6f6fe68871e4.png)



# IAM Identity Center の作成

IAM Identity Center を作成していきます。Enable を押します。

![image-20250211210054814.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/94a29c72-1bfe-4941-bbe3-2da68544a9ae.png)



Enable を押します。

![image-20250211210107764.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2ce7f94f-ce4d-4bf8-a060-55906a99aa16.png)



# Active Directory 上の設定

この手順は参考手順です。読み飛ばして頂いて大丈夫です。



Active Directory のグループ作成

- identitycentergroup01

![image-20250211212501932.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ec41e359-e70a-4241-bf0a-7d4613287f3a.png)



Active Directory の ユーザー作成

- user001
- グループ identitycentergroup01 に紐づける

![image-20250211212647534.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/11e8e19e-7415-49c3-b52c-2b4d1e56bd61.png)



なお注意点として、User の Email は設定しないと IAM Identity Center との連携でエラーになります。以下の Email の値は忘れずに入れましょう。

![image-20250211220409406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d0c7a369-3711-4bda-9a00-48e691df8ea4.png)



# AD Connector 作成

AWS Directory Service で AD Connector を作成します。

![image-20250211212810044.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ba2b0c8b-323e-43f9-bfb6-f4776f88f1c4.png)



AD Connector を選択します。

![image-20250211212823561.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/735d9a7b-9fa4-4091-b0d9-83d4d2584c69.png)

Directory size は、Small にしておきます。

![image-20250211212834501.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8ce63aa1-f159-44bb-98a3-db11e37b807c.png)

VPC や Subnet は、既存の Active Directory に通信可能なネットワークを選択します。

![image-20250211212857726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7648325c-bf87-4ba6-8efd-3aebcac32b7b.png)



Active Directory 連携のための IP アドレスや、ユーザー名、パスワードを入れます。

![image-20250211213029799.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/db6a3f63-82ab-470b-bf87-4666d747604f.png)

Create Directory を押します。

![image-20250211213042419.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3104d2d8-31b6-4576-a55e-c64911b8dbf4.png)





5 分ほど待つと、AD Connector の Status が Active に変わりました。

![image-20250211213609218.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/020a4f6e-5404-46a2-a32d-9bf540dd2695.png)



# IAM Identity Center と AD 連携

IAM Identity Center は、デフォルトでローカルの User 管理になっているので、Active Directory 連携のために設定が必要です。

Settings から Identity source タブで、Change identity source を選択します。

![image-20250211213549125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9f9350b3-150b-49c0-82dc-1f1e4dd785f3.png)



Active Directory を選びます。

![image-20250211213625561.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b1e08914-4e97-4d68-ba38-9b17027f9ae9.png)

上の手順で作成した、AD Connector を選択します。

![image-20250211213644943.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e2bd8042-f611-48fe-8a0c-dc8b9d0efdf6.png)



Change identity source を選択します。

![image-20250211213714474.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/95592dd1-38c2-4664-b1f1-849d1a236828.png)





変更できました。

![image-20250211213729974.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c2ef6a28-51b0-4943-81dd-c6e480bf3d53.png)



Start guided setup を押します。

![image-20250211213932656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/120b7a52-eff8-4916-b3b6-54c3f6254de0.png)



デフォルトのまま Next を押します。

![image-20250211213953337.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bf7da79c-db59-49ad-8008-de94ddc64f99.png)

次の手順で指定する Group や User が、IAM Identity Center に定期的に反映されます。連携したいユーザーが参加する Group を設定すると運用が楽だと思います。

Group のタブに、Active Directory 上で作成したグループを指定します。この手順では、User は指定しません。Group を指定することで、その Group に所属する User も自動的に反映されます。

![image-20250211214217459.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0bb8d633-e8dc-4387-903e-19d94a1111c4.png)



Save configuration を押します。

![image-20250211214042002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/bc227d36-9e91-4759-bab3-b70903f01392.png)



数分後、Identity Center 上で、Group と User が自動的に認識されました。どうやら、1 時間くらい時間がかかることもあるようです。

![image-20250211214812388.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7fe0f3d0-d6b0-4916-8eda-7fa70e90ee4d.png)





User も反映されています。

![image-20250211214827647.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b0d48243-7183-4ec6-8165-99f87a409753.png)



# IAM Identity Center で AppStream を登録

IAM Identity Center で、Application として AppStream 2.0 を登録します。

![image-20250211215401917.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9c9e158f-9c38-4618-9ab1-5a506d5fd699.png)



catalog から、AppStream 2.0 を選択できます。

![image-20250211215434988.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c25b4b49-0940-4357-b62a-93c00ad81409.png)



デフォルトのまま Submit を押します。IAM Identity Center SAML metadata file は忘れずにダウンロードをしましょう。

![image-20250212112525958.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d36d7963-1105-45e8-b2e3-790db5997c60.png)



登録された AppStream 2.0 のアプリケーションに、ユーザーやグループを紐づけます。

![image-20250211215702163.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fcc20853-527f-4542-9b2c-2e9591984141.png)



グループを指定して、Assign を押します。

![image-20250211215735881.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7f8af858-7efa-434d-aba3-134e1ebb43ab.png)



Assign されました。

![image-20250211215745649.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/78909308-b68c-4c0a-93b6-289572e9ab91.png)



# IAM で SAML Identity Provider の作成

IAM で、SAML Identity Provider として、IAM Identity Center を登録します。(IAM という用語ばかり出てきて、ややこしいですね)

![image-20250212112249420.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f1e6b253-d384-47da-a4fe-ef9ac768a19c.png)



Choose File で、先ほどダウンロードしたメタデータファイルをアップロードします。

![image-20250212112655094.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ca55f46d-11ef-4463-92bd-855fb67ddc68.png)





Add Provider を押します。

![image-20250212112736615.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e658bec0-4f86-4960-b468-9e993c414ea8.png)

追加されました。

![image-20250212112745307.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/26493c7a-f674-486c-be23-bf893ab13935.png)





# IAM Role 作成

作成した Identity Provider に紐づける IAM Role を作成します。Assing role を押します。

![image-20250212121720715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fb2a63c7-9b97-42cc-87d7-9051601326e6.png)



Create a new role を押します。

![image-20250212121734793.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/33022aff-f888-473e-94b8-dd2077b9dd49.png)



SAML 2.0 federation から、作成した Identity Provider を選択し、Next を押します。

![image-20250212122434819.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5545c382-4096-4b69-8fe5-c1f9e514678f.png)



Permissions は、、、簡易な設定のため AdministratorAccess とします。適宜最小限の設定にしましょう。

![image-20250212113355793.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8bc9dc26-2313-46ca-9ca3-6eafd1ce1e9e.png)



Create Role を押します。

![image-20250212113927175.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d2af316d-70af-4390-bc15-016985428aab.png)



Create Inline Policy を押します。

![image-20250212120202825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c87add4e-e12b-4cb3-b8d4-b60a0eed58db.png)



以下の値を入れます。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "appstream:Stream",
      "Resource": "arn:aws:appstream:ap-northeast-1:AWSACCOUNTID:stack/IdentityCenterIntegrateTest01",
      "Condition": {
          "StringEquals": {
              "appstream:userId": "${saml:sub}"           
          }
        }
    }
  ]
}
```



![image-20250212120343644.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/244107f5-3485-40ac-9633-61d82c9032c3.png)

Create policy を押します。

![image-20250212120410906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/af8f7a5b-1b2f-4bf9-8c5d-0a5a41a7996c.png)









# IAM Identity Center の AppStream の Attribution Mapping を修正

IAM Identity Center で、AppStream の設定変更が必要です。

![image-20250212114304178.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0c0c595b-c38c-486d-90a1-e4ca7bbe789c.png)



Edit configuration を押します。

![image-20250212114505648.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2997c9c8-cb47-47bc-b353-6c5599b250ee.png)



Relay state に次のフォーマットの値を入力します。



```
フォーマット
https://appstream2.euc-sso.ap-northeast-1.aws.amazon.com/saml?stack=STACKNAME&accountId=ACCOUNTID
```



実際の値

https://appstream2.euc-sso.ap-northeast-1.aws.amazon.com/saml?stack=IdentityCenterIntegrateTest01&accountId=XXXXXXXXXXXX

![image-20250212115310843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4571b19e-9988-4250-8b70-31ea9962f748.png)



Edit attribute mappings を選択します。

![image-20250212114323791.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3d3bbbdc-1385-4447-b785-db5bf3b3a9a5.png)



- User attribute in the application に次の値を入れます。
  - https://aws.amazon.com/SAML/Attributes/Role
- Maps to this string value or user attribute in IAM Identity Center に、次の値を入れます。AWSACCOUNTID や IAMROLENAME や SAMLPROVIDERNAME は、環境に合わせて書き換えてください。
  - arn:aws:iam::AWSACCOUNTID:role/IAMROLENAME,arn:aws:iam::AWSACCOUNTID:role:saml-provider/SAMLPROVIDERNAME



![image-20250212115622075.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8e02689f-4f1c-4df5-be5a-48636be55d07.png)



# IAM Identity Center にログイン

これまでの設定でやっと準備完了しました、IAM Identity Center のポータルサイトの URL を確認し、アクセスを行います。

https://d-9567b10dbf.awsapps.com/start

![image-20250211215822666.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/aacc2cb0-e497-47b6-bcc3-85f88e9c6d93.png)



Active Directory 上のユーザー名を指定します。

> user001@identitycenter.test.local

![image-20250211215842909.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/415b12c7-cc3a-4a22-a86b-d421f9b1b67e.png)





Active Directory 上のパスワードを指定します。

![image-20250211215854805.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/9643f1a3-1a81-4b23-944d-80d5ff66ede0.png)



初回のログインは、MFA の登録が求められます。IAM Identity Center は、デフォルトで MFA が必須となっています。

![image-20250211215929661.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/589e83e4-354c-4d26-b76e-00a25a41b824.png)





登録しました。

![image-20250211220141379.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/abe792e6-a3f5-41cc-ab1c-07b0621536bc.png)

IAM Identity Center のポータル画面です。AppStream 2.0 の Icon が表示されるので、これを選択します。

![image-20250211220153484.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7118e3a2-6f7f-4a96-aa4d-aada15a3ae8e.png)





Continue with browser を押します。

![image-20250212122528335.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2f04ac6a-4ab5-40ec-9445-e5eec4ada9d0.png)

Desktop を選択します。

![image-20250212122536315.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fe8d5457-d3ee-4c75-ac11-ab5d61badf12.png)



接続できました。ここからは、通常の AppStream 2.0 の操作となります。

![image-20250212123233955.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/8b754891-bbe5-4cf6-8189-ba2fd01a0950.png)



# Tips : Identity Center ではデフォルトで MFA が強制有効化となる

設定変更は可能。

![image-20250211221923569.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e6711097-f5ba-40a3-be73-59ae2fd91f33.png)



# Tips : インストールしている Windows Client を利用して接続

IAM Identity Center で Open AppStream 2.0 client を選択すると、事前にインストールしていた Windows Client が自動的に立ち上がり、これを利用して接続できます。

![image-20250213000713548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ad4e8777-d958-486f-9cc8-cfbe5aab6340.png)

このように、インストールされたアプリケーションで接続処理が開始します。

![image-20250213000732796.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6a866b42-df34-4a30-b8cf-ae848488a89d.png)



こんな感じの画面です。

![image-20250213001520413.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d7fd0f5b-ffce-4b13-bc03-e7a6c70b6f6e.png)







# 検証を通じてわかったこと

- Identity Center で設定した同期について、3 時間ごとに最新情報を取得する動作となる。

  - https://docs.aws.amazon.com/singlesignon/latest/userguide/how-it-works-configurable-ADsync.html

  - > After you connect your self-managed directory in Active Directory or your AWS Managed Microsoft AD directory that is managed by AWS Directory Service to IAM Identity Center, you can explicitly configure the Active Directory users and groups that you want to sync into the IAM Identity Center identity store. **The identities that you choose will be synchronized every three hours or so into the IAM Identity Center identity store.** Depending on the size of your directory, the sync process might take longer.





# 参考 URL

https://blog.serverworks.co.jp/2021/10/28/174800

https://static.global.sso.amazonaws.com/app-eb7f4060188865be/instructions/index.htm