AWS Control Tower の Landing Zone v3.0 の更新内容を読み解く

はてなで SRE をやっている id:nabeop です。

はてなでは AWS アカウント群のガバナンス強化とセキュリティ向上を目的として AWS Control Tower などを組み合わせた環境を構築中です。

構築の舞台裏の一部は Hatena Engineer Seminar #20 「AWS Renovation 編」で話しているので興味のある方はぜひ見てください。

AWS Control Tower によって統制される内容は Landing Zone のバージョンとして管理されており、2022年7月26日に Landing Zone の version 3.0 がリリースされていました。ここでは更新された内容から version 3.0 でどのように変わるかをまとめてみました。

AWS Control Tower 管理の CloudTrail がアカウントレベルの証跡から組織レベルの証跡に変更される

version 3.0 以前はメンバーアカウントにアカウントレベルでの証跡として作成されていたが、version 3.0 から組織レベルの証跡として管理される。このため、以下の影響がある。

  • 既存のアカウントレベルの証跡はバージョンアップから24時間以内に削除される
  • S3 バケットにおける証跡の保存時のパスが変更される
    • アカウントレベルの証跡のパス : /<organization id>/...
    • 組織レベルの証跡のパス : /AWSLogs/<organization id>/...
  • IAM ロールの aws-controltower-CloudWatchLogsRole と CloudWatch Logs のロググループである aws-controltower/CloudTrailLogs がメンバーアカウトに造られなくなる

version 3.0 以降は AWS Control Tower 管理の CloudTrail でアカウントレベルの証跡を有効にする手段はなくなるので注意する必要がある。

S3 バケット内での証跡の保存パスが変更になるため、保存された証跡を使ったシステムを構築している場合は変更する必要がある。これは単純に参照するパスを変更する、というだけではなく、Landing Zone の更新前後を跨いだ期間で調査をするときなどにパスの一貫性が崩れたことによる検索効率の低下などが予想される。AWS Control Tower による証跡は検証用オブジェクトも一緒に作成されるように CloudTrail が構成されているので、証跡を保存している S3 バケット内で証跡の移動しただけでは不十分と理解している。それどころか、移動した証跡の検証に失敗する可能性もあるので AWS サポートなどを活用した十分な検討が必要がありそう。

S3 バケット内での証跡の保存パスが変更になるため、保存された証跡を使ったシステムを構築している場合は変更する必要がある。

また、version 3.0 以降では Control Tower 管理の CloudTrail を削除する (opt out) 選択肢が提供されている。この場合はメンバーアカウントでアカウントレベルの証跡を作成して、独自に管理する必要がある。このため、後述のガードレールが追加されている。

ガードレールが追加された

以下のガードレールが追加された

  • 必須のガードレール : セキュリティ OU に所属している AWS アカウントで CloudTrail や CloudTrail Lake が有効になっていることを検知する
  • 強く推奨するガードレール : メンバーアカウントで CloudTrail や CloudTrail Lake が有効になっていることを検知する

Control Tower で設定している CloudTrail をオプトアウトして、アカウント内の証跡で代替できるようになった影響で、意図しない CloudTrail の無効化を検知できるようにした、と予想している。

グローバルリソースに対する AWS Config はホームリージョンで有効になる

AWS Security Hub などの連携でグローバルリソースの検知内容が全てのリージョンで表示されなくなるはず。

リージョン拒否ガードレールが更新された

chatbot 全般と S3 を対象にした動作の一部がリージョン拒否ガードレールによって阻害されなくなった。

  • s3:GetAccountPublic
  • s3:DeleteMultiRegionAccessPoint
  • s3:DescribeMultiRegionAccessPointOperation
  • s3:GetMultiRegionAccessPoint
  • s3:GetMultiRegionAccessPointPolicy
  • s3:GetMultiRegionAccessPointPolicyStatus
  • s3:ListMultiRegionAccessPoints
  • s3:GetStorageLensConfiguration
  • s3:GetStorageLensDashboard
  • s3:ListStorageLensConfigurations
  • s3:GetAccountPublicAccessBlock
  • s3:PutAccountPublic
  • s3:PutAccountPublicAccessBlock

付随する変更

Control Tower がメンバーアカウントを操作する時に使用する IAM ロールの AWSControlTowerAdmin にアタッチされているサービスポリシーの AWSControlTowerServiceRolePolicy が変更される。更新ドキュメントからはどのような変更が実施されるかは不明だが、これまでの変更内容を見る限り CloudTrail の証跡の扱いが変わったことによる影響と予想される。

はてなにおける AWS Control Tower Landing Zone version 3.0 への向き合い方

はてなでは AWS Control Tower などによる整備がされている組織への AWS アカウント移動を本格的に開始しようとした時に version 3.0 がリリースされたので、適用については若干の迷いがある。

通常の更新だと、Landing Zone の更新は管理アカウントとセキュリティ OU に所属している AWS アカウントが更新され、そのほかのメンバーアカウントは順次更新するというフローになっている。今回の更新では CloudTrail がアカウントごとから組織全体に変更されるので、適用時期によって各 AWS アカウントの証跡の保存先が変わったりすると管理が難しくなるのでさらなる調査や検証が必要だと考えている。

CloudTrails の変更は今後の Control Tower のアップデートでも影響するので、適用の見送りという選択肢は考えておらず、検証と調査が完了してから適用することになると予想している。とくに組織移動か完全に完了したあとに version 3.0 に更新するのか、version 3.0 に更新された状態で組織移動をするのかで考慮することが大きく異なってくるので慎重に判断したい。

はてなでは一緒にクラウド環境のガバナンスの向上とセキュリティの強化を進めていく仲間を募集しています

はてなにおけるクラウド環境のガバナンスの向上とセキュリティの強化はまだまだ始まったばかりでやるべきことはたくさんあります。開発体験を損なわずに開発者が安心して安全にさわれるクラウド環境の構築や改善に興味のある人はぜひ応募してください。