【AWS Control Tower】ランディングゾーン v3.x へ更新する際のCloudTrailコスト周りの注意点

Control Tower リソースが 「Control Tower 管理外のAWSアカウント」へ影響を及ぼすことは無い … と思っていると、想定外のコストが発生する可能性があります。ランディングゾーン更新の際は、公式ドキュメントの変更内容をじっくりと確認して、 影響範囲を精査しましょう。
2023.04.03

はじめに

AWS Control Tower について

AWS Control Tower (以降 CT )はAWSの統制に役立つサービスです。

AWSのベストプラクティスを適用した、「複数のAWSアカウントを統制するような基盤(= ランディングゾーン 1 )」を簡単にセットアップしてくれます。 顧客は CTが作成した統制基盤をベースに、負担少なくマルチアカウント戦略をスタートできます。

img

– 画像: AWS Control Towerを基本から理解する。具体的な活用法を交えて解説 | クラスメソッド

CTが作成・管理するランディングゾーンにはバージョンがあります。 例えば、2023/04/03 時点の最新バージョンは v3.1 です ( v3.1 の参考ブログ )。 ランディングゾーンの更新には、拡張機能や新機能が含まれます。 なので、ランディングゾーンは基本的に最新にしておくのが良いでしょう。

「更新で何が変わるのか」は、以下の公式リリースノートや他アップデートブログなどから確認できます。

AWS組織管理者はランディングゾーン変更内容を把握して、影響が無いか精査する必要があります。

これから話す v3.x 更新 について

特に 2022/07 のランディングゾーン v3.0 は更新点が多いです。 (詳細は以下公式ドキュメントやブログを参照ください。

本ブログでは v2.x から v3.0 (および それ以降のバージョン) へ更新した際の、 CloudTrail証跡のコスト周りの考慮点 を説明していきます。

はじめにまとめ

ランディングゾーン v2.x で整備されているCloudTrail証跡は以下のようになっています。 CT管理下のAWSアカウントには「アカウントレベルの証跡」が配置されます。

img

それが v3.x では以下のように変わります。 CloudTrail証跡は「 組織レベルの証跡 」になります。

img

つまり、CT管理外のAWSアカウント上に既存証跡があった場合は、 「CloudTrail証跡が複数存在する」ことになります。 管理イベントのS3コピーは 2つ目以降は有料 になるため、コストになります。

img

以降で詳しく説明します。

前提: 「CT管理下」と「CT管理外」について

前提として、CT設計の1つに「どの組織単位(OU)を CT管理下 にするか」があります。 「 CT管理下のOU にあるAWSアカウント」はCTランディングゾーンの枠組みに入ります。2 (今後、これを単に「CT管理下のAWSアカウント」と呼びます)。

img

CT管理下のアカウントには以下のようなベースラインが適用されます。

  • Config / CloudTrail 設定
  • IAMロール設定
  • 予防コントロール(SCP) 設定
  • 検出コントロール(Config Rules)設定
  • など

v2.x の CT管理 CloudTrail 証跡について

ランディングゾーン v2.x のCloudTrail証跡の適用範囲は、 CT管理下のAWSアカウント です。自然ですね。

実装としては「アカウントレベルの証跡 aws-controltower-BaselineCloudTrail 」を個別にCTが展開しています。

img

そして「CT管理外のAWSアカウント」には、CTは干渉しません。 顧客側でよしなにCloudTrail証跡を設定します。

[補足] 上図の「ログアーカイブアカウント」はCT有効化時に作成されるAWSアカウントです。CloudTrailおよびConfigのログを集中管理します。

v3.x の CT管理 CloudTrail 証跡について

ランディングゾーン v3.x のCloudTrail証跡の適用範囲は、 組織内の全AWSアカウント です。「CT管理下のAWSアカウント」ではないことに注意してください。 実装としては「 組織レベルの証跡 aws-controltower-BaselineCloudTrail 」 をCTが作成しています。

img

なお v3.0 以降では、「CloudTrail証跡のオプトアウト」オプションが追加されています。 「適用範囲が変わることの影響(後述)」を考慮して用意されたオプションでしょう。

img

v2.x → v3.x 更新のコスト考慮点

もし組織内の全アカウントがCT管理下である場合は、そこまで影響はありません。 それぞれのアカウントにある「アカウントレベルの証跡」が「組織レベルの証跡」に変わるだけです。

考慮しないといけないのは 「CT管理下」と「CT管理外」で明確に分けた運用 3 をしているケースです。

ランディングゾーンを v2.x から v3.x に更新した際に、 「アカウントレベルの証跡」が「組織レベルの証跡」に変わります。 なので、 「CT管理外のAWSアカウント」に CT管理の証跡が作られます 。 そして以下引用にあるとおり、 「CT管理外のAWSアカウント」にある既存証跡には手を加えません

AWS Control Tower does not delete account-level trails for unenrolled accounts.

– 引用: AWS Control Tower landing zone version 3.0 - AWS Control Tower

つまり、 "そのままの状態" で v3.x に更新すると 「CT管理外のAWSアカウントに証跡が複数存在すること になります。

img

CloudTrail 証跡は 2つ目以降のS3コピーが有料です。

証跡

Amazon S3 に配信された管理イベント: 配信される管理イベント 100,000 あたり 2.00 USD (初回無料コピー後、詳細は AWS 無料利用枠を参照)

– 引用: AWS CloudTrail の料金 | AWS

結果として、 "そのままの状態" では CloudTrailの「Amazon S3 に配信された管理イベント」コストが発生します。

img

「CT管理外のAWSアカウント」がある状態での v3.x への移行方法について

上記のようなインパクトがあるので、可能であればCloudTrailコストが余分に掛からないようにしたいです。

(注) ただし、AWS環境の運用状況によっては、このコスト増を許容するケースも考えられます。 許容する場合は「 CloudTrailの料金 」と、「これまでの 管理イベント無料コピー(APN1-FreeEventsRecorded など) の使用量」を参考にコスト増を見積もりすることを推奨します。

以降でコスト増を抑えるための 考えられる移行案 を記載します。

[移行案1] CT管理CloudTrail証跡を活用する場合

CT管理CloudTrail証跡(=組織レベルの証跡)を活用する場合です。

「CT管理外AWSアカウント」にある既存証跡の管理イベント記録は、 最終的には停止する必要があります。

ただし「特定期間のCloudTrail証跡が無い」事態は避けないといけません。 それを考慮すると以下のような手順での移行が良いでしょう。

  1. ランディングゾーンを v3.x に更新してから 最大1日間待つ(= コスト発生を許容)
  2. 「CT管理外のAWSアカウント」の既存証跡の管理イベント記録をOFFにする

img

[移行案2] CT管理CloudTrail証跡をオプトアウトする場合

v3.x に更新する際に CT管理CloudTrail証跡をオプトアウトする場合です。

この場合は v3.x 更新 に準備 が必要です。 「CT管理下のAWSアカウント」に展開されているCloudTrail証跡が無くなるからです。

同じように「特定期間のCloudTrail証跡が無い」事態を避けるために、 以下のような手順での移行が良いでしょう。

  1. 「CT管理下のAWSアカウント」へカスタム証跡を展開する
  2. CloudTrail証跡をオプトアウトした設定で v3.x に更新する
  3. 【対応不要】 24時間後に「CT管理下のAWSアカウント」のCT管理CloudTrail証跡が削除される

img

[補足] 3. 【対応不要】... の部分は、以下 CTドキュメントから確認できます。

When you update to version 3.0, AWS Control Tower deletes the existing account-level trails for enrolled accounts after a 24-hour waiting period.

– 引用: AWS Control Tower landing zone version 3.0 - AWS Control Tower

おわりに

以上、Control Tower のランディングゾーンを v2.x から v3.x へ更新する際のCloudTrailコスト考慮点でした。

Control Tower リソースが 「Control Tower 管理外のAWSアカウント」へ影響を及ぼすことは無い … と思っていると、想定外のコストが発生する可能性があります。

ランディングゾーン更新の際は、公式ドキュメントの変更内容をじっくりと確認して、 影響範囲を精査しましょう。

以上、参考になれば幸いです。

参考


  1. (AWSにおける) ランディングゾーンという言葉自体は「良いマルチアカウント統制環境(の設計)」という意味です。ランディングゾーン実装の1つがControl Towerです。 
  2. 厳密にはCTコンソールにて アカウントの登録 作業が必要です。 
  3. 例えば CT導入前から「成熟したAWSアカウント」がある場合は、このような運用となり得ます。CT管理下にする影響を考慮して意図的に「CT管理外」とします。