[アップデート] AWS Control Tower のランディングゾーンバージョン 3.0 がリリースされたので変更点を確認してみた

Control Tower の Landing Zone バージョン 3.0 がリリースされたので、変更点を確認してみました。
2022.07.28

こんにちは、大前です。

Control Tower のランディングゾーンバージョン 3.0 がリリースされたので、実際にアップデートして変更点などを確認してみました。

参考 : AWS Control Tower landing zone version 3.0

バージョン 3.0 の変更点

リリースノート を確認すると、3.0 には以下の変更点が含まれている様です。

  • 組織レベルの CloudTrail 証跡を選択するオプションの追加
  • Control Tower によって管理される CloudTrail 証跡をオプトアウト可能に
  • CloudTrail の設定状況をチェックする 2つのガードレールが追加
  • グローバルリソースに関する AWS Config をホームリージョンに集約
  • リージョン拒否ガードレールの SCP 内容がアップデート
  • 管理ポリシー AWSControlTowerServiceRolePolicy の内容が更新
  • CloudTrail ログを出力する CloudWatch Logs グループが管理アカウントに集約

本エントリでは、それぞれ具体的な変更内容を確認していきたいと思います。

Control Tower ランディングゾーンバージョンを 3.0 にあげる

まず、Control Tower のランディングゾーンバージョンを 3.0 にアップデートします。

Control Tower のコンソール画面にて、バージョン 3.0 が利用可能であることが確認できます。私の検証環境では、バージョン 2.9 → 3.0 のアップデートとなります。


バージョン 3.0 を選択した状態で右上の「更新」をクリックすると、リージョン設定の更新画面に遷移します。バージョン 3.0 ではリージョン拒否設定関連の変更が含まれている様なので、リージョン拒否設定は有効にしておきます。


続いて、その他の設定画面に遷移します。バージョン 3.0 で CloudTrail の設定が追加されていることが確認できます。詳細は後述したいと思いますが、有効 にすると Control Tower が管理する CloudTrail 証跡が組織レベルで有効化されます。


最後に確認画面が表示され、問題なければ「ランディングゾーンの更新」を実行します。


ランディングゾーンの更新が開始したら OK です。気長に待ちましょう。


無事にランディングゾーンの更新が完了し、バージョン表記も 3.0 になっていることが確認できました。変更点が多いバージョンだからか、いつもより時間がかかった気がします。

3.0 からの変更点を実際に確認してみる

組織レベルの CloudTrail 証跡を選択するオプションの追加

バージョン 2.9 までは各アカウント上に CloudTrail 証跡が設定される仕様でしたが、バージョン 3.0 からは 組織レベルの CloudTrail 証跡が設定 される様になりました。

上記に伴い、各アカウント単位の CloudTrail 証跡は Control Tower でサポートされなくなるため、アカウント単位で CloudTrail 証跡を設定したい場合は Control Tower の管理外で独自に設定を行う必要 があります。

After you update to version 3.0 or later, you do not have the option to continue with account-level CloudTrail trails managed by AWS Control Tower.

引用 : AWS Control Tower landing zone version 3.0


先ほどランディングゾーンのバージョンアップ手順の中にも設定項目がありましたが、CloudTrail の設定に関する表示が増えていることがわかります。


バージョン 3.0 の設定が適用されているアカウントの CloudTrail 設定を確認すると、下記のように「組織の証跡」が有効になった CloudTrail 証跡が追加されていることが確認できます。


ドキュメントによると、古い方の CloudTrail 証跡は 24時間ほどで自動的に削除される様です。

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


また、「組織の証跡」が利用されるようになったことで、CloudTrail ログの出力先パスにも変更が入っています。従来は aws-controltower-logs-{ログアーカイブアカウントID}-{ホームリージョン}/o-xxxx/AWSLogs/{各アカウントID}/ 配下にログが出力されていたものが、aws-controltower-logs-{ログアーカイブアカウントID}-{ホームリージョン}/o-xxxx/AWSLogs/o-xxxx/{各アカウントID}/ と、パスに組織 ID が追加される形になっています。


CloudTrail のログ出力先が変化するので、CloudTrail のログを連携するような運用をしている場合は 3.0 へのアップデートと合わせてログ出力先のパス変更に対する対応も必須 となりますので注意しましょう。


Control Tower によって管理される CloudTrail 証跡をオプトアウト可能に

上記の変更に係る部分になりますが、CloudTrail 証跡を Control Tower 管理から外すこともできる様になりました。

同じくランディングゾーン設定の変更から、CloudTrail の設定で「有効になっていません」を選択して設定を更新します。(一度 CloudTrail 設定を有効にした状態で 3.0 にアップデートしてから実施しています)


ランディンゾーンの更新が走り、無事完了すると、下記の様に CloudTrail の設定が無効になったことがわかります。


CloudTrail の設定を確認すると、Control Tower が作成する証跡のステータスが オフ に変更されていることが確認できます。証跡を削除するわけではなさそうですね。


CloudTrail の設定状況をチェックする 2つのガードレールが追加

バージョン 3.0 から、以下 2つの検出ガードレールが追加されています。

3.0 から CloudTrail の設定を Control Tower の管理から外せる(=設定を削除できる)様になったため、CloudTrail の設定状況をチェックするためのガードレールが追加されたと考えて良さそうです。

基本的に CloudTrail は利用必須のサービスだと思いますので、どちらのガードレールも活用していくのが良いと思います。


グローバルリソースに関する AWS Config をホームリージョンに集約

Config にて、IAM 等の グローバルリソースに関する記録がホームリージョンのみ で行われる様になりました。AWS のベストプラクティスでも、グローバルリソースの記録は単一リージョンで行うことを明記していたりしますので、ベストプラクティスに沿った更新となります。

実際に 3.0 適用後のアカウントを確認すると、ホームリージョンでのみグローバルリソースを記録するようになっていることが確認できます。


グローバルリソースを記録するリージョンを単一にすることでコスト削減につながるため、これは嬉しい変更ですね。


リージョン拒否ガードレールの SCP 内容がアップデート

リージョン拒否設定を利用した際に展開される SCP に修正が入りました。

具体的な変更点としては、以下のアクションがリージョン拒否の NotAction、つまりどのリージョンでも利用可能なアクションとして指定されます。ChatBot や S3 関連のアクションがリージョン制限の例外として追加されていることが確認できます。

“chatbot:*”,
"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“,


リージョン制限 SCP の修正は以前も行われていたため、定期的な見直しと修正が行われることは期待して良さそうです。仮にリージョン制限機能の利用によって意図せず利用できないサービスや機能を見つけた場合は、AWS に積極的にフィードバックして修正してもらいましょう。


管理ポリシー AWSControlTowerServiceRolePolicy の内容が更新

AWSControlTowerServiceRolePolicy は Control Tower が各アカウントを管理するために利用する権限が与えられているポリシーですが、このポリシーに更新が入っています。

IAM コンソールから確認すると、6月時点で更新されていた模様です。


具体的な更新箇所としては以下です。今回 CloudTrail 周りの変更が入っているので、それに合わせた権限調整と見て良さそうです。

{
    "Effect": "Allow",
    "Action": [
        "organizations:EnableAWSServiceAccess",
        "organizations:DisableAWSServiceAccess"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "organizations:ServicePrincipal": [
                "config.amazonaws.com",
                "cloudtrail.amazonaws.com"
            ]
        }
    }
},
{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "iam:AWSServiceName": "cloudtrail.amazonaws.com"
        }
    }
}


CloudTrail ログを出力する CloudWatch Logs グループが管理アカウントに集約

Control Tower は CloudTrail ログを CloudWatch Logs に出力していますが、出力先の CloudWatch Logs グループは各アカウントに作成されていましたが、3.0 からは 管理アカウント上に作成された CloudWatch Logs グループに出力 されることになりました。

おわりに

Control Tower のランディングゾーンバージョン 3.0 がリリースされました。

今回は変更点が色々ありますが、CloudTrail の設定変更(組織の証跡 ON)によってログの出力先パスが変わる部分が一番気を付ける部分になりそうです。 上記さえクリアできれば、Config のグローバルリソース記録リージョンが 1つになってコスト削減できたりと、嬉しい変更がありますので、是非 3.0 を活用していきたいところです。

以上、AWS 事業本部の大前でした。

参考