AWSのルートOUと子OUへのアクセス制御をIAM Identity Centerで一元管理
05a93fb139dafe
IAM Identity Centerを活用したOUアクセスの効率化手法
OUごとに作成が必要なIAMユーザーを廃止(=比較的長時間ローカルに残るアクセスキーとアクセスシークレットを廃止)してとルートOUのIAM Identity Centerで作成した1つユーザーでアクセスできるOUをルートOU、子OU含め複数制御できる
前提
OUとAWSアカウントの階層構造を作るところは今までと同じ

このあとSwitchRole用のIAMロールを作って子OUのOrganizationAccountAccessRoleとしてSwichRoleするのが今までのやり方だったが今後は親OUにSwitchRole用のIAMロールも必要ない
1. IAM Identity Centerを有効化
現時点では1つのリージョンでしか有効化できないのでリージョン間違えないように注意

2. ユーザーグループ作成
基本的にOU x Permission sets(Admin権限なのか開発者権限なのかetc.)数のユーザーグループを作って、どのOUにどの権限でアクセスを許可するかをユーザーグループ単位で管理するのが良さそう
root-ou-admin-group
child1-ou-admin-group
child1-ou-developer-group
など
ルートOUで開発をすることはないのでroot-ou-developer-groupは作らない
3. IAM Identity Centerでユーザーを新規作成
メールアドレスを入れて作成
mfaは自動で強制になってたはず
該当のユーザーグループにアタッチ
4. Permission setsの作成
最初はカスタマイズそんなにいらない
adminとdeveloper用の雛形があるのでそれを選んでそれぞれ作る

5. AWSアカウント、ユーザーグループ、Permission setsの紐付け
AWSアカウント、ユーザーグループ、Permission setsの紐付けを行う
AWS Organizationと同じ階層がIAM Identity Centerで見られるので、1つのAWSアカウントにつき x Permisson sets分だけユーザーグループの紐付けを行う

6. メールに届いたアクセスポイントから各OUにユーザーグループごとのPermission setsでアクセスできることを確認
ユーザーグループにアタッチした数(=AWSアカウント x Permission sets)だけポータルに表示があり、かつPermission setsを選んでAWSコンソールにログインできることを確認

7. AWS CLIでSSOログイン
アクセスキー、アクセスシークレットを発行しなくてもcliでssoログインして一時的なクレデンシャルを取得できる
aws configure sso --profile {identity centerで設定したuser名にしておくとわかりやすい}
以下から取得する設定値を入力

sso start urlはouを跨いで共通

ブラウザで認証ができるとcli側で自分がassume roleできる一覧が出てくるので選択
s3とかlsしてみて確認
aws sts get-caller-identity --profile {identity centerで設定したuser名にしておくとわかりやすい}
{
"UserId": "XXXXXXXXXXXXXXXXXXX:{identity centerで設定したuser名}",
"Account": "{ここが現在assume roleしているアカウントのidになる}",
"Arn": "arn:aws:sts::{ここが現在assume roleしているアカウントのidになる}:assumed-role/AWSReservedSSO_AdministratorAccess_XXXXXXXXXXXXXXXXXXX/{identity centerで設定したuser名}"
}
内部的には各ouにAWSReservedSSO_{Permission setsの名前}_{システムが勝手に割り振る文字列}というiam roleが自動で作成されていてそのroleに対してassume roleしている
以上。
Appendix
IAM Identity CenterでのIdentity Sourceの併用について
IAM Identity CenterでのIdentity SourceをIdentity Center DirectoryとGoogle WorkspaceでのSSOとで2つ併用することは現状できないとのこと。
組織外の人にユーザー発行する必要がある場合、Identity Center Directoryを使った方が良さそう
Discussion