Control Tower にて自動作成される OU「Security」配下に子 OU や子アカウントは登録できてしまうのか

Control Tower にて自動作成される OU「Security」配下に子 OU や子アカウントは登録「できない」のか「できてしまうけどエラーになる」のか気になりましたので、本記事で検証しました。
2023.07.12

コーヒーが好きな emi です。

Control Tower にて自動作成される OU「Security」配下に子 OU や子アカウントは登録「できない」のか「できてしまうけどエラーになる」のか気になりましたので、本記事で検証しました。

発端

Control Tower の有効化(ランディングゾーンの設定)を実施すると、

  • 監査のための「Audit」アカウント
  • ログ集約のための「Log Archive」アカウント
  • これらのアカウントを含む組織単位(OU)「Security」

が自動作成されます。デフォルトだと「Sandbox」というOU もできます。

Control Tower によって自動作成される二つのアカウント「Audit アカウント」、「Log Archive アカウント」は「共有アカウント」とも呼ばれ、通常のワークロードを実装するその他の AWS アカウントとは独立した統制管理用のアカウントです。
この二つのアカウントをまとめる「Security」という名前の OU 配下には、ユーザーによって他の子 OU や子アカウントは作成できません、とドキュメントに記載があります。

ネストされた OU を登録する際の考慮事項
コア OU (セキュリティ OU) の下に OU を登録することはできません。

さて、これは「できない」のか「できてしまうけどエラーになる」のか気になります。

結論

2023/6/27 時点の検証で、以下のような挙動となりました。

  • Control Tower のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作自体ができない
  • Organizations のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作ができてしまうが、Control Tower の統制配下に登録されずエラーになる
  • ドリフト検出で修復されない

検証

どのような挙動になるのかご紹介します。

まず、Control Tower のランディングゾーンをデフォルトで有効化した状態は以下のようになっています。

Control Tower のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作自体ができない

Control Tower のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作自体ができません。

Control Tower コンソールでの操作

今回 Control Tower の管理アカウントの名前は「CTManagement」としています。
Control Tower コンソールの「組織」から「組織単位を追加」をクリックし OU を追加しようとしますが、親 OU の選択時に「Security」が出てきません。
「Security」配下に子 OU の追加はできませんでした。

続いて Control Tower コンソールの「組織」から「アカウントの作成」をクリックし子アカウントを追加しようとしますが、親 OU の選択時に「Security」が出てきません。
「Security」配下に子アカウントの追加はできませんでした。

Organizations のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作ができてしまうが、Control Tower の統制配下に登録されずエラーになる

Organizations のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作ができてしまいますが、Control Tower の統制配下に登録されずエラーになります。

Organizations コンソールでの操作

次は Organizations のコンソール画面からやってみます。
OU「Security」を選択して子 OU を作成します。

OU「Security」の配下に「OUTestUnderSecurityOU」が作成できました。

OU「Security」の下にできた OU「OUTestUnderSecurityOU」の中に新規子アカウントを作ります。
まず AWS アカウント「AccountTestUnderOUTestUnderSecurityOU」を Root 直下に作成します。
Root 直下に作成したアカウント「AccountTestUnderOUTestUnderSecurityOU」を OU「OUTestUnderSecurityOU」配下に移動できました。

OU「Security」直下にも AWS アカウントを作ってみます。
まず AWS アカウント「AccountTestUnderSecurityOU」を Root 直下に作成します。
Root 直下に作成したアカウント「AccountTestUnderSecurityOU」を OU「Security」配下に移動できました。

今、このような状態になっています。

Control Tower コンソールで確認

Control Tower のコンソール画面で見ると「未登録」になり赤くなっています。

OU はアクションからは何もできません。

アカウントはアクションから「登録」が選択できますが、組織単位(OU)の選択で OU「Security」は選べず、登録済みの OU「Sandbox」を選択することしかできません。

つまり、Organizations のコンソール画面からは OU「Security」配下に子 OU・子アカウントを追加する操作ができてしまいますが、Control Tower の統制配下に登録されずエラー、という状態になります。

Control Tower のコンソール画面から見ると、今回 Organizations のコンソール画面から作成した各 OU、アカウントには以下のように注意書きが表示されます。

組織単位: OUTestUnderSecurityOU

この組織単位は、セキュリティ OU (旧称 コア OU) の下にネストされているため、AWS Control Tower に登録することはできません。 この OU にアカウントを登録するには、AWS Oganizations コンソールに移動して、登録済みの OU にアカウントを移動します。次に、AWS Control Tower に戻り、その OU を再登録します。

AWS アカウント: AccountTestUnderOUTestUnderSecurityOU

このアカウントは、AWS Control Tower に登録されていない組織単位 (OU) の一部です。 この OU に複数のアカウントを登録するには、OU の詳細ページで [OU を登録] を選択します。この単一のアカウントを登録するには、以下の詳細セクションで [アカウントの登録] を選択し、登録済みの OU を選択します

AWS アカウント: AccountTestUnderSecurityOU

このアカウントは AWS Control Tower に登録されている組織単位 (OU) に属していますが、アカウントはその OU に登録されていません。 この単一のアカウントを登録するには、以下の詳細セクションで [アカウントの登録] を選択します

ドリフト検出で修復されない

「ドリフト修復もできないのか?」と考えましたが、まずドリフトを検出していなさそうです。
ドリフト検出しないのはアカウントドリフトのタイプに「OUの更新」がないので仕様と思われます。

「OU 間でのアカウントの移動」というのはあるので試してみましょう。

まず Control Tower コンソールで OU「Sandbox」の配下に AWS アカウント「AccountTestUnderSandboxOU」を作ります。

次に、Organizations のコンソールから、OU「Sandbox」配下のアカウント「AccountTestUnderSandboxOU」を OU「Security」に移動してみます。

Control Tower のコンソール画面に戻ります。
OU「Sandbox」からアカウント「AccountTestUnderSandboxOU」がなくなり、OU「Security」配下に表示されていますが、「登録に失敗しました」となっています。

Control Tower コンソールでアカウント「AccountTestUnderSandboxOU」をクリックして見てみると、以下のようなエラーメッセージが表示されています。

アカウントの登録に失敗しました。 次の理由により、AWS Control Tower はアカウントを登録できませんでした: Your enrolled account was moved to another OU. The account is in an inconsistent state and you may incur unintended charges. If the parent OU is unregistered, register the new OU or return the account to its original OU. If the parent OU is registered, re-register the OU or update the account in AWS Service Catalog. If problems persist, you can terminate the account in AWS Service Catalog and create a new account with AWS Control Tower account factory, or contact AWS Support.

(日本語訳:ご登録のアカウントが別のOUに移動されました。親 OU が未登録の場合は、新しい OU を登録するか、アカウントを元の OU に戻します。親 OU が登録されている場合は、OU を再登録するか、AWS Service Catalog でアカウントを更新します。問題が解決しない場合は、AWS Service Catalogでアカウントを終了し、AWS Control Towerのアカウントファクトリで新しいアカウントを作成するか、AWSサポートに連絡してください。)

今回「未登録」「登録に失敗しました」となった際、ドリフト検出されず、自動修復もされませんでした。
確かに考えてみると「Control Tower に登録ができていない」状態なので、ドリフト検出の前段階で躓いたようなイメージなのかもしれません。

まとめ

6/27 時点の検証結果です。

以下の操作で各種登録操作ができなかったり失敗したりします。

  • OU「Security」配下に子OUを作成する
    • →未登録となり、「この組織単位は、セキュリティ OU (旧称 コア OU) の下にネストされているため、AWS Control Tower に登録することはできません。」となる
  • OU「Security」配下に子アカウントを作成する
    • →未登録となり、「このアカウントは、AWS Control Tower に登録されていない組織単位 (OU) の一部です。」となる
  • OU「Security」配下に既存アカウントを移動する
    • →登録に失敗する。ドリフト検出せず、「ご登録のアカウントが別の OU に移動されました。親 OU が未登録の場合は、新しい OU を登録するか、アカウントを元の OU に戻してください。親 OU が登録されている場合は、OU を再登録するか、AWS Service Catalog でアカウントを更新します。問題が解決しない場合は、AWS Service Catalogでアカウントを終了し、AWS Control Towerのアカウントファクトリで新しいアカウントを作成するか、AWSサポートに連絡してください。」となる

以下の操作でドリフト検出しません。

  • OU「Security」配下に子 OU を作成する
  • OU「Security」配下に子アカウントを作成する
  • OU「Security」配下に既存アカウントを移動してくる

OU「Security」の配下に子 OU や子アカウントは作成しないよう、Organizations の操作ができてしまう Control Tower 管理アカウントへのアクセスを制限する等の対策を実施いただくのがよいでしょう。