「IAM Identity Center 許可セット」で作成されるリソースを追ってみる

# はじめに
- 本記事では、IAM Identity Center許可セットについて概要だけでなく、実際に作成されるリソースについてご説明します
- 結論を見たいかたは[まとめ](https://qiita.com/drafts/9858863738333d4760a9/edit#%E3%81%BE%E3%81%A8%E3%82%81)をご覧ください

# IAM Identity Centerってなに？
IAM Identity Center（以下、IIC）とは、複数のアカウントおよびアプリケーションへのアクセス許可を制御するサービスです。
マルチアカウントへのアクセス許可を割り当てる場合、Organizationsとの連携が必須で、管理アカウントで有効化する必要があります。（([組織のインスタンス](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/organization-instances-identity-center.html))

また、アプリケーション（例：Amazon Q Businessアプリケーション）へのアクセス許可をIICで管理したい場合、Organizationsを使用せずに、直接アプリケーションへのアクセス許可を割り当てることも可能です。([アカウントインスタンス](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/account-instances-identity-center.html))

「認証許可はIAMで十分では？」と思うかもしれませんが、[こちら](https://speakerdeck.com/nrinetcom/iamnomaniatukunahua-2025?slide=24)でも紹介されているように、今後はIAMユーザではなく、すべてIICで管理しようという流れもあり、IICの重要性が増していくと考えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/f5ff612f-9c42-44e6-b251-f6e04c044b38.png)

https://speakerdeck.com/nrinetcom/iamnomaniatukunahua-2025?slide=24

そこで本記事では、IICの機能のひとつである **許可セット(旧権限セット)** についてご説明します。

# 許可セットってなに？(概要)
許可セットとは「どんな権限」を付与するかを定義するテンプレートです。
許可セットを割り当てることで、以下のようにアクセス許可を制御できます。
- **どのIICユーザ/グループ** に対して
- **どのような権限** を(ここが許可セット)
- **どのAWSアカウント** に付与するか

↓よくあるイメージ図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/d7cca871-2d50-4dab-bb2e-36cacc8d20ca.png)

このように許可セットを活用することで、各IICユーザ/グループのアカウントへの権限を制御することが可能です。
それでは、実際に許可セットが割り当てられたメンバーアカウントA、B、C内ではどのようなリソースが作成されているのでしょうか？

本記事では各アカウントに作成されるリソースについてご説明します。

# 許可セット割り当てで作成されるリソース
IICの許可セットの割り当てによって各アカウントに作成されるのは **許可セットに対応したIAMロール** です。 

具体的には「AWSReservedSSO_{許可セット名}_{小文字英数字のランダム文字列}」という名前のIAMロールが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/74c2b393-0927-45f0-a245-72ae92fb68be.png)

**注意点**
- 許可セットによって作成されるのは **IAMロール** であり、IAMポリシー（マネージドポリシーやカスタマー管理ポリシー）は直接作成されません
- ただし、**インラインポリシー** を設定することでIAMポリシーを直接作成できます
- IAMポリシー作成の手間を考慮すると、インラインポリシーの利用が推奨されています
- 許可セットに複数のIAMポリシーを紐づけて管理したい場合は **カスタマー管理ポリシー** を使用し、
  - 直接メンバーアカウントにIAMポリシーを作成する
  - CloudFormation StacksetsでIAMポリシーを配布する(運用性の観点から推奨)
  
## 実際に画面から確認してみる

本記事では、AWSマネージドポリシーとインラインポリシーを用いて、IIC許可セットを作成します。

管理アカウントのIIC許可セット画面から許可セットにアタッチするIAMポリシーを選択します。
今回は以下の設定を行います。
- AWSマネージドポリシー：「ReadOnlyAccess」
- インラインポリシー：
```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "*"
    }
  ]
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/32b81b6d-8482-43c0-b7db-655775b1d66c.png)

許可セット名を「PermissionSetTest」とし、許可セットを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/6e97ec6b-97a6-4661-8395-947c7ca12c53.png)


許可セットの作成後、IICのAWSアカウント画面から
対象のユーザ/グループと作成した許可セットを選択して、割り当てを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/500475b2-fc50-4721-94a8-6b5f692e0d07.png)

割り当てが完了後、割り当て先アカウントへ移動し、IAMロールを確認します。
想定通り許可セットの割り当てによってIAMロールが作成されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3123043/091265b4-0637-49f7-a0dd-985aac349215.png)

# まとめ
- IAM Identity Center許可セットの割り当てると、割り当て先アカウントへIAMロールが作成される
- 許可セットへ付与するポリシーとしては以下の種類がある
  - AWSマネージドポリシー：AWSによって事前定義されたポリシー
  - カスタマー管理ポリシー：別途、割り当て先アカウントでIAMポリシーの作成が必要
  - インラインポリシー：許可セット割り当てと同時に割り当て先アカウントへポリシーが作成される