Control Towerの自動アカウント登録機能を使って登録するAWSアカウントにもAWSControlTowerExecutionロールを作成しておく必要がある
皆さんは、Control Towerの自動アカウント登録機能を使って登録するAWSアカウントにAWSControlTowerExecutionロールを作っておく必要があるのか不安になったことはありますか?私はあります。
何を言っているのか
先日、Control Towerのアップデートでアカウントの自動登録が可能になりました。
公式ドキュメントによると、この機能の対象は現在Control Towerに登録されたアカウントのみならず、新規のアカウントも含まれるように読み取れます。
セットアップ中、またはそれ以降にこの機能を有効にすると、2 つの登録済み OU 間で移動されたアカウント、または初めて AWS Control Tower 環境に移動されたアカウントは、継承ドリフトの状態を表示しなくなります。アカウントは、新しい OU で有効になっているベースラインとコントロールを自動的に継承します。前の OU のコントロールとベースラインは削除されます。
このアップデートにより、従来必要であった「OU の再登録」という作業を実施する必要がなくなったようです。
OUの再登録で実際に行われていることは以下の通りであり、AWSControlTowerExecution ロールの追加も行います。
- OU を再登録すると、次のような処理が行われます。
- [State] (状態) フィールドは、アカウントが現在 AWS Control Tower に登録されているか ([Enrolled] (登録済み))、アカウントが一度も登録されたことがないか ([Not enrolled] (未登録))、以前に登録に失敗したか ([Enrollment failed] (登録に失敗しました)) を示します。
- OU を再登録すると、ステータスが [Not enrolled] (未登録) または [Enrollment failed] (登録に失敗しました) であるすべてのアカウントに AWSControlTowerExecution ロールが追加されます。
- AWS Control Tower は、それらの新規登録アカウントに Single Sign-On (IAM Identity Center) ログインを作成します。
- [Enrolled] (登録済み) のアカウントは、AWS Control Tower に再登録されます。
- SCP がデフォルトの定義に戻されるため、OU に適用されている予防コントロールのドリフトが修正されます。
- 最新のランディングゾーンの変更を反映するように、すべてのアカウントが更新されます。
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/ou-updates.html
「OUを再登録」という操作ができるようになる前までは、Control Towerに登録するアカウントに手動で AWSControlTowerExecution という、Control Tower管理用のIAMロールを作成する必要がありました。
AWS Control Tower にアカウントを登録する前に、そのアカウントを管理するアクセス許可を AWS Control Tower に付与する必要があります。これを行うには、次のステップに示すように、アカウントへのフルアクセス権を持つロールを追加します。これらのステップは、登録するアカウントごとに実行する必要があります。
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/enroll-manually.html
上記の通り、Control Towerの自動アカウント登録機能を使うことで、AWSControlTowerExecutionロールの手動作成や、OUの再登録という手間がなくなったように思えます。
しかしながら、実際にAWSアカウントをControl Towerに登録しようとすると、実行ロールを作成する必要があると表示されます。

この記事では、 Control Tower環境に自動登録するAWSアカウントにAWSControlTowerExecutionロールは必要なのか? に焦点を当てて検証をしていきます。
先に結論
- Control Tower環境に自動登録するアカウントにAWSControlTowerExecutionロールは 必要
- AWSControlTowerExecutionロールが存在せずにエラーになった場合は OUの再登録 によって登録できる
準備
まずは検証のために以下準備します。
- 自動アカウント登録機能を有効化したControl Towerのランディングゾーン
- Control Towerに登録されたOU
- AWSControlTowerExecutionロールを 作成していない 新規AWSアカウント
自動アカウント登録機能が有効化されていることを確認します。

移行先のOUがControl Tower管理になっていることを確認します。

念の為、AWSControlTowerExecutionロールがないことを確認します。

やってみる
対象のアカウントを選択し「登録」をクリックします。

SandboxOU を選択し「アカウントの登録」をクリックします。

注意書きの内容を確認し「アカウントの登録」をクリックします。

コンソールを確認すると、登録に失敗していました。

詳細を確認すると、AWSControlTowerExecution が必要な旨が記載されていました。
次の理由により、AWS Control Tower はアカウントを登録できませんでした: AWS Control Tower is unable to assume the AWSControlTowerExecution role in the account. Add the role to your account if it's not present, and try again.
AWSControlTowerExecutionは必要のようなので、OUの再登録によってAWSControlTowerExecutionの作成とアカウントの登録を行います。

OUの再登録が成功しました。

登録したアカウントにAWSControlTowerExecutionが作成されていることも確認できました。

最後に
この検証で以下のことがわかりました。
- Control Tower環境に自動登録するアカウントにAWSControlTowerExecutionロールは 必要
- AWSControlTowerExecutionロールが存在せずにエラーになった場合は OUの再登録 によって登録できる
アカウント登録の際の、注意書き通りの結論です。

細かい検証でしたがどなたかの役に立てば幸いです。







