AWS IAM Identity CenterでIAMアカウントを統一する
概要
AWS IAM Identity Center
昔はAWS SSOと呼ばれていたました
これを使うことで、複数AWSアカウントのIAMを統一的に管理することができます
複数アカウントのIAM管理手法はいくつかあります
スイッチロールによる管理との比較、メリットについては
株式会社PLAN-Bさんがまとめてくれています
下記記事がとても分かりやすいと思います
IAM Identity Centerは既存のIAMユーザーと競合しないので、段階的に一部のユーザーだけ試してみるといった運用も可能です
同じユーザー名でも問題ありません
今回は以下のようにaccountA、accountBに存在するyamasitaアカウントをIAM Identity Centerのyamasitaに移行するまでの設定をやってみます
以下のようにログインのURLが変わりますが、ログイン後の使用感は変わりません

実際は IAM Identity Centerも accountA内に作るので、上の図だと別のアカウントのサービスみたいに見えますが、ログインは別ということを示すイメージです
設定方法
まず、AWS Organizationsで accountA, accountBを紐づけしておきます
accountAが管理アカウント, accountBがメンバーアカウントです

accountAの管理権限を持つアカウントで、IAM Identity Center にアクセス、有効にします
IAM Identity Centerはリージョンがあるので、東京リージョンに作成しています

左メニューの設定からアイデンティティソースからIdentity Center ディレクトリを選択
今回は外部IdPを使用しません

機能の有効化はこれだけです
次にユーザーとグループを作ります
左メニューのユーザーからyamasitaを追加(メールアドレスにパスワードが送られます、あとの項目は適当に入力)

次にグループを作成します
accountA-admin, accountB-readonly というグループを作ってみます
メンバーにyamasitaを追加しておきます


権限を作成します
今回はadminとreadonlyの権限を作成
左メニューから許可セットを選択 => 許可セットを作成
事前に用意されたAdministratorAccessを使用します

許可セットを作成する際に名前とセッション期間を指定できます。
セッション時間が短すぎると頻繁にログアウトしてしまうので、適宜変更します

同様にreadonlyの権限も作成

2つの許可セットが作成できました

あとは権限をアカウントに紐づけるだけです
左メニューのAWSアカウントからaccountAを選択

ユーザーまたはグループの割り当てをクリックして、accountA-adminグループを選択、許可セットをAdministratorAccessにします

同様にaccountBを選択して、accountB-readonlyグループに許可セットViewOnlyAccessを設定

最終的にこんな感じの設定になっているはずです

この辺の作業は作成メンバーが多かったりする場合はcliで自動化すると良いと思います
設定はこれで終わりです
ログイン
ブラウザ
アクセスポータルのURLからログインします

accountA, accountBが適切な権限で設定できているのが確認できます

cli
aws cliは以下のようにして設定ファイルを設定できます
aws configure sso --profile default
設定済みのプロファイルでは以下のコマンドで資格情報を取得できます
aws sso login --profile default
コマンドを打っている端末でブラウザを開いてほしくない場合は --no-browserオプションが使えます
その他細かい設定についてはマニュアルを参照ください
terraform等でAWS_ACCESS_KEY_IDが欲しい場合、ログイン画面 のCommand line or programmatic accessを選択すると取得できます
(~/.aws/cli/cache からアクセスキー引っ張ってきてもいいですが)
オプション
設定しておくと便利な項目を補足
MFAデバイスの設定
デフォルトでONになっていますが
自分でMFAデバイスを設定できるように しておきます
設定 => 多要素認証 => 設定

ログイン画面の右端から自分のMFAデバイスを設定できます

ログインURLの変更
ログインURLを変えることができます
設定しておくと覚えやすくなるので良いかもしれません
https:// + 好きな文字列 + .awsapps.com/start
みたいなURLにできます

リダイレクトURL
許可セット => 許可セットを選択 => 編集
以下のように設定しておくとログイン後にECSのクラスター画面に飛びます

全削除
削除したくなった場合は、設定 => 管理タブ => IAM Identity Center の設定を削除で行います
ユーザー/グループ含めすべて消えます

まとめ
こんな感じでIAM Identity Centerは簡単に設定出来ます。
既存IAMユーザーに影響しないので気軽に試せると思います
Discussion