😽

AWS IAM Identity CenterでIAMアカウントを統一する

2022/11/06に公開

概要

AWS IAM Identity Center
昔はAWS SSOと呼ばれていたました

これを使うことで、複数AWSアカウントのIAMを統一的に管理することができます

複数アカウントのIAM管理手法はいくつかあります
スイッチロールによる管理との比較、メリットについては
株式会社PLAN-Bさんがまとめてくれています
下記記事がとても分かりやすいと思います
https://service.plan-b.co.jp/blog/tech/26775/

IAM Identity Centerは既存のIAMユーザーと競合しないので、段階的に一部のユーザーだけ試してみるといった運用も可能です
同じユーザー名でも問題ありません

今回は以下のようにaccountA、accountBに存在するyamasitaアカウントをIAM Identity Centerのyamasitaに移行するまでの設定をやってみます
以下のようにログインのURLが変わりますが、ログイン後の使用感は変わりません

loginflow

実際は IAM Identity Centerも accountA内に作るので、上の図だと別のアカウントのサービスみたいに見えますが、ログインは別ということを示すイメージです

設定方法

まず、AWS Organizationsで accountA, accountBを紐づけしておきます
accountAが管理アカウント, accountBがメンバーアカウントです

org

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

enable

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

idpsource

機能の有効化はこれだけです
次にユーザーとグループを作ります

左メニューのユーザーからyamasitaを追加(メールアドレスにパスワードが送られます、あとの項目は適当に入力)

create-user

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

create-group

create-groupb

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

permission1

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

permission2

同様にreadonlyの権限も作成

viewonly

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

permission-finish

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

select-a

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

set-permit

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

set-permit-b

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

page2

この辺の作業は作成メンバーが多かったりする場合はcliで自動化すると良いと思います
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/identitystore/index.html

設定はこれで終わりです

ログイン

ブラウザ

アクセスポータルのURLからログインします

login-url

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

login-url2

cli

aws cliは以下のようにして設定ファイルを設定できます

aws configure sso --profile default 

設定済みのプロファイルでは以下のコマンドで資格情報を取得できます

aws sso login --profile default

コマンドを打っている端末でブラウザを開いてほしくない場合は --no-browserオプションが使えます

その他細かい設定についてはマニュアルを参照ください
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-sso.html

terraform等でAWS_ACCESS_KEY_IDが欲しい場合、ログイン画面Command line or programmatic accessを選択すると取得できます
(~/.aws/cli/cache からアクセスキー引っ張ってきてもいいですが)

オプション

設定しておくと便利な項目を補足

MFAデバイスの設定

デフォルトでONになっていますが
自分でMFAデバイスを設定できるように しておきます
設定 => 多要素認証 => 設定

mfa-settings

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

my-mfa

ログインURLの変更

ログインURLを変えることができます
設定しておくと覚えやすくなるので良いかもしれません

https:// + 好きな文字列 + .awsapps.com/start

みたいなURLにできます

custom-url

リダイレクトURL

ログイン後にリダイレクトするURLを指定できます

許可セット => 許可セットを選択 => 編集

以下のように設定しておくとログイン後にECSのクラスター画面に飛びます

redirect

全削除

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

delete

まとめ

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

Discussion