初投稿です。
Customizations for AWS Control Tower(CfCT)とは
CfCTは、CloudFormationまたはService Control Policy(SCP)を使用して、マルチアカウント環境のOUやアカウントに対して制限を適用することができます。
CfCTの適用
Control Towerが有効になっていることが前提となります。
CfCTの展開をして適用したい内容を記述したマニフェスト(manifest.yaml)と適用テンプレートを作成します。その後、CodeCommitにpushすることで展開できます。
新しく追加されたアカウントのログが集約されていない
新しく追加したアカウントに対して自動でログ集約のテンプレートが適用されているはずでしたが、ログ集約されていないことに気づきました。
調査を進めていくと、過去にCfCTで自動適用されたLambdaを削除しないSCP(DenyCfCTLambda.json)をマニフェストに追加してコミットした後、結果を確認しておらず放置していたパイプラインをチェックしたところビルドエラーが発生していました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyCfCTLambda",
"Effect": "Deny",
"Action": [
"lambda:DeleteFunction"
],
"Resource": [
"arn:aws:lambda:*:*:function:StackSet-*",
"arn:aws:lambda:*:*:function:aws-controltower-*"
]
}
]
}
CfCTにバージョンがあることに気づく
原因を調査した結果、CfCTのバージョンが古いことに気付きました。
- 適用していたバージョン:v2.2.0
- 最新のバージョン:v2.7.0
CfCTのバージョンアップをする
急にv2.7.0にすると戻れなくなる可能性があるため、リリースノートを確認しながら1つずつバージョンアップしました。
バージョンアップは「customizations-for-aws-control-tower.template」をCfCTのスタックに適用するだけです。
#何も考えず適用するのが怖い人は差分をとって適用しましょう
aws-solutions/aws-control-tower-customizations
v2.2.0からv2.3.1へのバージョンアップ時にビルドが成功し、ログ集約のマニフェストも適用され、ログ集約アカウントにログが追加されていることを確認しました。
おわりに
CfCTは一度作成すれば新しいアカウントにも同じマニフェストが適用されるため運用が楽ですが、定期的にバージョンアップしないと新しいマニフェストが適用されない可能性があるため、定期的なアップデートをお勧めします。