AWS IAM Identity Centerの設定

# IAM Identity Centerの有効化 (管理者)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/2b2dd823-7875-79b9-7f1a-fe7b9489a387.png)


:::note warn
InstanceのQuotaが1のため、有効化するRegionを間違えると複数はEnableできないのでRegionを間違えないようにする
:::

![Screenshot 2024-08-18 at 12.42.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/fe0ff588-541c-c64f-2d98-0a8ffeffba05.png)

最初は個人のアカウントで検証用に作成したが、[Permission setの作り方](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html)が見つからなかったのでAWS Orgで作成。

Orgを初めて作ると、以下のようなメールが来るのでVerifyしておく。

![Screenshot 2024-08-18 at 12.46.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/939f4f74-9e6c-0d7f-e180-a841365d76e7.png)

<!--

# Standard Authentication (Optional)

OTPをsend emailにしておく。

![Screenshot 2024-08-18 at 10.40.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/bce60046-6ae4-c6f4-9ca7-427db595a6a6.png)

# Setup application

![Screenshot 2024-08-18 at 10.41.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/2193e873-7881-bb50-676c-b440775a0294.png)

-->

# User作成 (管理者)

![Screenshot 2024-08-18 at 10.49.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/079d8d83-97df-bc81-a2ed-08d4a95b29fd.png)

# アクセス権限の付与 (管理者)

## PermissionSetを作成

:::note info
PermissionSetはAccountとは関係なくどんなことができるかを定義するIAM Roleのようなもの。
次のセクションで実際にどのUserやGroupに、どのAWS Accountに対して、どのPermissionSetを付与するかを設定する
:::


https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html に基づきPermissionSetを作成する
![Screenshot 2024-08-18 at 12.49.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/d6cc2880-d038-6bbc-941d-2aa7f91d376b.png)

練習としてPredefinedの`PowerUserAccess`でSessionの長さを12hとして作成。
![Screenshot 2024-08-18 at 12.52.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/ad1ee6d2-a52b-397e-5064-3bd53b72636b.png)

## PermissionSetのAssign

:::note info
AWS Account、User/Group、PermissionSetの組み合わせで、どのAWS Accountのどの権限（PermissionSet）を誰（User/Group）に付与するかを決める
:::


https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html に基づいて設定する

![Screenshot 2024-08-18 at 12.55.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/7ef4ea82-db10-35d0-7ef5-78f8b464895e.png)

AWS accountsを開いてUserまたはGroupに上のステップで作成した権限を付与する

![Screenshot 2024-08-18 at 12.56.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/eda892cc-1ba1-2b6a-a8d8-354dfe6fed03.png)

今回は、簡単のため nakaにPowerUserAccessを付与した

# 各Userの設定 (利用ユーザ)

## 受け取った案内に従ってPasswordを設定

:::note info
上のUser作成でユーザを作成するときに、Emailを入れてメールで初期設定の案内が届くようになっている
:::


以下のようなメールが届くので、`Your AWS access portal URL` を控えておく。

:::note info
この`Your AWS access portal URL`はあとでcliの設定時にも使う
:::


![Screenshot 2024-08-18 at 10.50.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/a2b4c952-ec0f-b2a3-a871-6c8b81b5db1e.png)


パスワードを設定

![Screenshot 2024-08-18 at 10.51.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/da563c09-b9f6-5305-644f-00d6ecf9eea5.png)


MFAの設定などをして設定完了。

![Screenshot 2024-08-18 at 10.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/9c7bf95f-cd99-d5ba-7705-2878d8ea4467.png)


## awscli設定

configを設定する

:::note info
1. SSO start URLには、メールで受信した`Your AWS access portal URL`を使う
:::


```
aws configure sso
SSO session name (Recommended): naka
SSO start URL [None]: https://xxxx.awsapps.com/start
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]:
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.ap-northeast-1.amazonaws.com/

Then enter the code:

KBHG-XQCT
The only AWS account available to you is: xxxxxxxxxxx
Using the account ID xxxxxxxxxxx
The only role available to you is: PowerUserAccess
Using the role name "PowerUserAccess"
CLI default client Region [ap-northeast-1]:
CLI default output format [json]:
CLI profile name [PowerUserAccess-xxxxxxxxxxx]: naka

To use this profile, specify the profile name using --profile, as shown:

aws s3 ls --profile naka
```

上のコマンドの中で以下のように聞かれるので、Allow accessする

![Screenshot 2024-08-18 at 10.58.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/b7202034-698a-b294-29cc-b6001290bdc9.png)

無事成功 :tada: 

![Screenshot 2024-08-18 at 10.59.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/8cfe336b-54de-18bc-34b3-c87c6ef09232.png)

:::note info
1. `~/.aws/sso/cache/`いかにssoのJSONファイルが生成される
1. `~/.aws/config`が以下のようにできる

```
[default]
region = ap-northeast-1
output = json

[profile naka]
sso_session = naka
sso_account_id = xxxxxxxx
sso_role_name = PowerUserAccess
region = ap-northeast-1
output = json
[sso-session naka]
sso_start_url = https://xxxxxx.awsapps.com/start
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access
```

:::

aws command を試してみると使えるようになっている :tada: 

```
aws s3 ls --profile naka
```

この段階で必要な権限がない場合には、管理者側で PermissionSetとAssign の設定で必要な権限が付与されているか確認してもらう必要がある。

自分のawscliが正しいcredentialsを使おうとしているかを以下のコマンドでも確認できる

```
aws sts get-caller-identity --profile naka
```

# Ref

1. https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
1. https://dev.classmethod.jp/articles/iic-setting-terraform/
1. https://dev.classmethod.jp/articles/aws-cli-for-iam-identity-center-sso/
    1. https://zenn.dev/aldagram_tech/articles/fefd52c93dd5a9