Control Tower環境上でCloudTrailとConfigのログ保持期間をメンバーアカウントごとに分けることができるのか考えてみた
こんにちは!AWS事業本部の吉田です。
Control Towerやっていますか?
Control Towerは、複数のAWSアカウントを一元管理するためのサービスです。
各メンバーアカウントのログをログアーカイブアカウントに集約する機能は、セキュリティ管理の要の1つとなっています。
そのログアーカイブアカウントについて、
「CloudTrailとConfigのログの保持期間をメンバーアカウントごとに分けて設定することは可能か?」
という質問を受けたことがあります。
CloudTrailに関しては設定次第ですが、Control Towerを利用すると基本的に各メンバーアカウントのCloudTrailとConfigのログを1つのS3バケットに集約することになります。
そのため、すべてのメンバーアカウントのCloudTrailとConfigのログの保持期間は統一されることになります。
(スコープがバケット全体のライフサイクルルールが適用されています。
このライフサイクルルールはControl Towerが管理しているので、触らないことをお勧めします。)
しかし、環境(開発・本番など)やプロジェクトによって各メンバーアカウントのログの保持期間ポリシーが異なることは、往々にしてあるかと思います。
今回は、Control Tower環境上でCloudTrailとConfigのログ保持期間をメンバーアカウントごとに分けることができるのか考えてみました。
結論
技術的には対応可能ですが、基本的にすべてのメンバーアカウントのログの保持期間を統一することを推奨します。
理由として、以下の2点が挙げられます。
- 作業工数がかかる
現状のControl Towerでは、各メンバーアカウントのログの保持期間を設定することはできません。
そのため、Control Tower以外の部分で設定のカスタマイズが必要となり、作業工数がかかります。
また、簡単にログを集約するというControl Towerのメリットを享受することができません。
- CloudTrailとConfigは監査・セキュリティ分析に用いられるログのため
開発環境もセキュリティ侵害を受ける可能性があるため、コストが許す限りCloudTrailとConfigのログを長く保持すべきです。
(むしろ開発環境の方がセキュリティが緩くなりがちで、セキュリティ侵害を受ける可能性が高いと思います。)
そのため、作業工数も考慮すると、無理に環境ごとでCloudTrailとConfigのログの保持期間を分けることはないと考えています。
各設定手順
ログの保持期間に関して各メンバーアカウントで細かいポリシーがある場合は、Control Towerの利用は避けた方が無難です。
その前提の上で、各メンバーアカウントのCloudTrailとConfigのログの保持期間を分ける方法について考えてみました。
CloudTrail設定手順
CloudTrailに関しては、Control Tower上でオプトアウト(無効)することができます。
オプトアウトした上で、各メンバーアカウント上で設定作業を行う形となります。
【設定手順】
- ControlTowerの「CloudTrail 組織レベルの証跡を有効化」を無効化する
- ログアーカイブアカウントに、メンバーアカウントもしくは環境(開発環境・本番環境など)用のS3バケットを作成する
- それぞれのS3バケットごとに保持期間を設定します
例:開発環境用ログバケットは1年、本番環境用ログバケットは5年など - メンバーアカウントのCloudTrailが証跡を配置できるようにバケットポリシーを設定
- それぞれのS3バケットごとに保持期間を設定します
- 各メンバーアカウントごとにCloudTrailの証跡を作成する
- CloudTrailの証跡配置場所に上記で作成したログアーカイブアカウントのS3を指定する
【デメリット】
- 各リソースの設定・構築工数がかかる
- アカウントが増えるたびに設定作業が必要となる
【補足】
上記の方法は、メンバーアカウントごとのCloudTrailとConfigのログの保持期間を分けるため、メンバーアカウントごとに設定しています。
作業工数が多くなるため、おすすめはしません。
ただし、CloudWatch Logsのコスト削減のため、Control Tower管理のCloudTrailをオプトアウトすることはあります。
詳しい内容は、下記のブログを参照してください。
(こちらの記事では、Control Tower管理のCloudTrailをオプトアウトした後、管理アカウント上で組織レベルの証跡を作成する流れとなります。)
Control Tower 管理 CloudTrail をオプトアウトして CloudWatch Logs コストを削減
Config設定手順
Configに関しては、Control Tower上でオプトアウトすることができないため、Configの設定を更新することは非推奨です。
代替案として、S3のレプリケーション機能を利用した方法をまとめます。
【設定手順】
- Control Towerの「ログ用の Amazon S3 バケットの保持期間」を短い方の保持期間で設定する
- 例えば、開発環境は1年保管、本番環境は5年保管だとすると、開発環境の保持期間に合わせる
- ログアーカイブアカウントに、メンバーアカウントもしくは環境用のS3バケットを作成する
- それぞれのS3バケットごとに保持期間を設定します
- Control Tower有効化時に自動的に作成されるS3バケットにレプリケーション機能を設定する
- レプリケーションしたいアカウントのConfigのログが配置されているフォルダを指定する
- レプリケーションの設定方法に関しては、公式ドキュメントを参照
【デメリット】
- コストの増加
- 運用の複雑化
- 二重管理のリスク
まとめ
今回、紹介している作業は推奨するものではありません。
ただし、お客様の質問を受けて「どのようにしたら対応できるのだろうか」と考えられたことはいい経験だったと思います。
Control Towerはまだまだアップデートが重ねられると思いますので、今後のアップデートに期待です!
以上、AWS事業本部の吉田でした!