AWSマルチアカウント構成でSSOログイン設定(IAM Identity Center)する際のハマりどころ
はじめに
AWS Organizations でマルチアカウント構成を作り、IAM Identity Center(旧 AWS SSO)で SSO ログインを設定しようとしたところ、コンソールの「AWS アカウント」画面に何も表示されず、SSO ユーザーの割り当てができないという状況にハマりました。
途中、AI アシスタントに「Identity Center インスタンスを削除して再作成するしかない」と提案されましたが、これは間違いでした。削除せずに CLI で切り分けて解決できたので、その手順を公開します。
環境・やりたかったこと
- 管理アカウント + メンバーアカウント(ポートフォリオ用)の 2 アカウント構成
- AWS Organizations でメンバーアカウントを招待済み(ステータス: アクティブ)
- IAM Identity Center を東京リージョン(ap-northeast-1)で有効化済み
- 許可セット
AdministratorAccessを作成済み - Identity Center ユーザーを作成済み(MFA 設定済み)
やりたいこと: ユーザー → メンバーアカウント → AdministratorAccess の割り当て
症状
- Identity Center の「AWS アカウント」画面を開いても、アカウントが 1 件も表示されない
- そのため「ユーザーまたはグループを割り当て」の対象アカウントが選べない
- 管理アカウントでログインしており、リージョンも正しい(ap-northeast-1)
やってはいけないこと:安易なインスタンス削除
AI アシスタントには「初期化が壊れているのでインスタンス削除 → 再作成が唯一の解決策」と提案されました。しかし Identity Center インスタンスを削除すると:
- 作成済みのユーザー・グループ
- 許可セット
- すべての割り当て
が全部消えます。削除は最終手段であり、まずは実態を確認すべきです。
切り分け:CloudShell で 3 層を確認する
コンソールの表示と API の実態は別物です。管理アカウントで CloudShell を開き、以下を順に確認しました。
① Identity Center インスタンスの状態
aws sso-admin list-instances --region ap-northeast-1
確認ポイント:
-
OwnerAccountIdが管理アカウントか(組織インスタンスであること) -
StatusがACTIVEか - インスタンスが 1 つだけか(アカウントインスタンスの紛れ込みがないか)
→ 結果: 正常
② Organizations 側の信頼されたアクセス
aws organizations list-aws-service-access-for-organization
確認ポイント: 出力に sso.amazonaws.com が含まれているか。
もし無ければ、これが原因です。以下で有効化できます:
aws organizations enable-aws-service-access --service-principal sso.amazonaws.com
→ 結果: 有効(正常)
③ 組織のアカウント一覧
aws organizations list-accounts
確認ポイント: 対象のメンバーアカウントが ACTIVE で表示されるか。
→ 結果: 表示される(正常)
結論:バックエンドは全部正常、コンソール表示だけの問題
3 層すべて正常でした。つまり「壊れている」ものは何もなく、コンソールの表示だけがおかしい状態です。であれば、コンソールに付き合わず CLI で直接割り当てを完了させれば良いという判断になります。
CLI で割り当てを実行する
必要な値を集める
ユーザー ID:
aws identitystore list-users --identity-store-id d-xxxxxxxxxx --region ap-northeast-1
許可セット ARN:
aws sso-admin list-permission-sets \
--instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx \
--region ap-northeast-1
割り当てを作成
aws sso-admin create-account-assignment \
--instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx \
--target-id 123456789012 \
--target-type AWS_ACCOUNT \
--permission-set-arn arn:aws:sso:::permissionSet/ssoins-xxxxxxxxxxxxxxxx/ps-xxxxxxxxxxxxxxxx \
--principal-type USER \
--principal-id <ユーザーID> \
--region ap-northeast-1
Status: IN_PROGRESS が返れば処理開始です。
割り当ての確認
aws sso-admin list-account-assignments \
--instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx \
--account-id 123456789012 \
--permission-set-arn arn:aws:sso:::permissionSet/ssoins-xxxxxxxxxxxxxxxx/ps-xxxxxxxxxxxxxxxx \
--region ap-northeast-1
AccountAssignments にユーザー ID が表示されれば完了です。
動作確認
アクセスポータル(https://d-xxxxxxxxxx.awsapps.com/start)を開き、作成したユーザーでログイン(パスワード + MFA)。アカウント一覧に対象アカウントが表示され、AdministratorAccess からコンソールに入れました。
このとき実際に起きているのは、メンバーアカウント内に自動作成された IAM ロール(AWSReservedSSO_AdministratorAccess_xxxx)を一時認証情報で引き受ける動作です。長期のアクセスキーは存在せず、セッションは期限付きです。
学んだこと
- コンソールの表示と API の実態は別物。 表示がおかしくても、まず CLI で各層(sso-admin / organizations / identitystore)の状態を確認する
- 「削除して再作成」は最終手段。 特に Identity Center インスタンス削除はユーザー・許可セット・割り当てを全部消す破壊的操作
- AI の診断も鵜呑みにしない。 「症状と完全に一致する」と断言されても、根拠(実際の API の状態)を自分で確認してから判断する
- コンソールが使えなくても、Identity Center の割り当ては
create-account-assignmentで完結できる
おわりに
結果的に「壊れていたものは何も無かった」というオチでしたが、コンソールの不調を CLI で迂回して先に進む貴重な経験となりました。同じ症状で困っている方の参考になれば幸いです。