AWSControlTowerExecution ロールへのスイッチ方法

AWSControlTowerExecution ロールへのスイッチ方法

Control Tower で IAM Identity Center をオプトアウトした環境において、管理アカウントの IAM ユーザーから AWSControlTowerExecution ロールへスイッチしてメンバーアカウントに一時的にアクセスする方法を解説します。
2025.11.17

コーヒーが好きな emi です。最近はカフェインを控えています。

2 年ほど前から、Control Tower 環境で IAM Identity Center(以降、IdC と省略)をオプトアウトできるようになっています。
https://dev.classmethod.jp/articles/control-tower-account-access-configuration-flexibility/

IdC のオプトアウトはユースケースにマッチしていれば便利である一方、Control Tower 有効化後のログイン手段を別途考えなければなりません。

今回は別のログイン手段を運用し始める前の一時的な代替手段として、メンバーアカウント側の AWSControlTowerExecution ロールにスイッチする方法を記載します。

AWSControlTowerExecution ロールとは?

https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/awscontroltowerexecution.html

  • 役割
    • Control Tower が登録されたアカウント(メンバーアカウント)を管理・操作するために使用するロール
      • Control Tower 有効化後、各メンバーアカウントに自動で作成されているもの
    • 管理アカウントからメンバーアカウントへのクロスアカウントアクセスを提供
  • 主な用途
    • ガードレール(統制ルール)の適用
    • アカウントのベースライン設定
    • コンプライアンスチェックの実行
    • AWS Config、CloudTrail などのサービス設定
  • 重要な注意点
    • このロールは削除や変更をしてはいけない
      • 削除するとControl Towerの機能が正常に動作しなくなる
    • アカウントの登録時に自動的に作成される
    • 管理者権限(AdministratorAccess)相当の強力な権限を持つ
  • セキュリティ
    • 信頼関係により、管理アカウントからのみアクセス可能
    • Control Tower サービスによってのみ使用されることが想定されている

ドキュメントを見ると、AWSControlTowerExecution は AWS Control Tower による自動管理のためのロールで、人間のユーザーによる日常的なアクセスを想定した設計ではないことが読み取れます。
今回は Control Tower で IAM Identity Center をオプトアウトした環境で一時的にメンバーアカウントの操作を行いたかったので、一時的に AWSControlTowerExecution を使いたい意図です。

0. 検証構成イメージ

まず、IAM Ientity Center がオプトアウトされた Control Tower 環境を用意します。

今回は Audit アカウントの AWSControlTowerExecution ロールに、Control Tower 管理アカウントの IAM ユーザーでスイッチしてみます。

下図の左が Control Tower 管理アカウントです。Control Tower 管理アカウントに IAM ユーザーを作成しておきます。
how-to-switch-to-the-awscontroltowerexecution-role_1

IAM ユーザー「SwitchRoleTestUser」に、AWSControlTowerExecutionSwitchPolicy という名前の、AWSControlTowerExecution ロールを引き受けるための IAM ポリシーを作成して付与します。詳細は後述します。

あらかじめ Control Tower 管理アカウントに「CTTestUser」という Admin 権限の IAM ユーザーを作成しておきました。このユーザーで、スイッチロール検証用の IAM ユーザー「SwitchRoleTestUser」を作成します。
how-to-switch-to-the-awscontroltowerexecution-role_2

1. スイッチロール検証用の IAM ユーザー作成

Control Tower 管理アカウントで、CTTestUser にログインしている状態から始めます。赤枠で囲んでいるのは Control Tower 管理アカウントを表しています。
スイッチロール検証用の IAM ユーザー「SwitchRoleTestUser」を権限未付与で作成します。マネジメントコンソールへのログインのみ許可しました。
how-to-switch-to-the-awscontroltowerexecution-role_3
how-to-switch-to-the-awscontroltowerexecution-role_4

作成した IAM ユーザー「SwitchRoleTestUser」を確認すると、「IAMUserChangePassword」がついてますね。これは「自分のパスワードを変更できる」「パスワード要件を確認できる」という権限のポリシーなのですが、これはユーザーが明示的につけなくても自動で付与されるようです。
how-to-switch-to-the-awscontroltowerexecution-role_5

試しに IAM ユーザー「SwitchRoleTestUser」で Control Tower 管理アカウントにログインしてみました。他の権限は付与していないので、マネジメントコンソール上ではリソースなどは確認できない状態です。
how-to-switch-to-the-awscontroltowerexecution-role_6

この状態で IAM ユーザー「SwitchRoleTestUser」で Audit アカウントにスイッチしようとすると、まだ権限不足で失敗します。
how-to-switch-to-the-awscontroltowerexecution-role_7

2. AWSControlTowerExecution ロールを引き受けるための IAM ポリシーを作成して付与

IAM ユーザー「SwitchRoleTestUser」に、AWSControlTowerExecution ロールを引き受けるための IAM ポリシーを作成して付与します。

今回は以下のように、AWSControlTowerExecutionSwitchPolicy という名前で AWS カスタマー管理ポリシーを作成しました。
how-to-switch-to-the-awscontroltowerexecution-role_8

AWSControlTowerExecutionSwitchPolicy
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "AWSControlTowerExecutionSwitch",
			"Effect": "Allow",
			"Action": "sts:AssumeRole",
			"Resource": [
				"arn:aws:iam::<Audit アカウントの ID>:role/AWSControlTowerExecution",
				"arn:aws:iam::<LogArchive アカウントの ID>:role/AWSControlTowerExecution"
			]
		}
	]
}

"Resource" に Audit アカウントと LogArchive アカウントの AWSControlTowerExecution ロールの ARN を含んでいます。こうすることで Audit アカウントと LogArchive アカウント両方にスイッチできます。

作成した AWSControlTowerExecutionSwitchPolicy を、IAM ユーザー「SwitchRoleTestUser」に付与します。
how-to-switch-to-the-awscontroltowerexecution-role_9

これで準備完了です。

3. Audit アカウントのAWSControlTowerExecution ロールにスイッチする

CTTestUser をサインアウトして、SwitchRoleTestUser でサインインし、画面右上のアカウント名をクリックして「ロールの切り替え」から Audit アカウントの AWSControlTowerExecution ロールにスイッチします。
how-to-switch-to-the-awscontroltowerexecution-role_10

Audit アカウントの AWSControlTowerExecution ロールにスイッチできました!
how-to-switch-to-the-awscontroltowerexecution-role_11

同様に、LogArchive アカウントの AWSControlTowerExecution ロールにもスイッチできるはずです。

余談:CTTestUser でも AWSControlTowerExecution ロールにスイッチできる

今回の検証では AWSControlTowerExecutionSwitchPolicy を作成して付与しましたが、最初から Admin 権限を持っている(= AWSControlTowerExecution ロールを引き受けるための IAM 権限を有している)CTTestUser でもスイッチできます。

おわりに

本記事への質問やご要望については画面下部のお問い合わせ「DevelopersIOへのご意見」からご連絡ください。記事に関してお問い合わせいただけます。

参考

https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/awscontroltowerexecution.html

https://dev.classmethod.jp/articles/workaround-to-execute-actions-denied-by-ct-scp/

https://dev.classmethod.jp/articles/iam-roles-offered-by-control-tower-v2-8/

https://repost.aws/ja/knowledge-center/aws-control-tower-role-troubleshoot

https://dev.classmethod.jp/articles/change-to-self-manage-aws-iam-identity-center-in-control-tower/

https://dev.classmethod.jp/articles/ct-sso-group-kesitemo-ok/

この記事をシェアする

FacebookHatena blogX

関連記事