Amazon Cloud Trailを有効化するCloud Formation Template
AWSアカウントを作成する際、プロダクション環境であればCloudTrailを必ず有効にすると思います。
その際、ミスが無いように確認しながらManagement ConsoleやCLIで作業するのは面倒だなーとので、 CloudFormatonのテンプレートを作成しました。 (刺身タンポポ撲滅したい)
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "CloudTrail", "Resources": { "S3Bucket": { "DeletionPolicy" : "Retain", "Type": "AWS::S3::Bucket", "Properties": { "BucketName" : { "Fn::Join" : ["", [ "cloudtrail-", {"Ref":"AWS::AccountId"}, "-", {"Ref":"AWS::Region"} ] ] } } }, "BucketPolicy" : { "Type" : "AWS::S3::BucketPolicy", "Properties" : { "Bucket" : {"Ref" : "S3Bucket"}, "PolicyDocument" : { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::903692715234:root", "arn:aws:iam::859597730677:root", "arn:aws:iam::814480443879:root", "arn:aws:iam::216624486486:root", "arn:aws:iam::086441151436:root", "arn:aws:iam::388731089494:root", "arn:aws:iam::284668455005:root", "arn:aws:iam::113285607260:root", "arn:aws:iam::035351147821:root" ] }, "Action": "s3:GetBucketAcl", "Resource": { "Fn::Join" : ["", ["arn:aws:s3:::", {"Ref":"S3Bucket"}]]} }, { "Sid": "AWSCloudTrailWrite", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::903692715234:root", "arn:aws:iam::859597730677:root", "arn:aws:iam::814480443879:root", "arn:aws:iam::216624486486:root", "arn:aws:iam::086441151436:root", "arn:aws:iam::388731089494:root", "arn:aws:iam::284668455005:root", "arn:aws:iam::113285607260:root", "arn:aws:iam::035351147821:root" ] }, "Action": "s3:PutObject", "Resource": { "Fn::Join" : ["", ["arn:aws:s3:::", {"Ref":"S3Bucket"}, "/AWSLogs/", {"Ref":"AWS::AccountId"}, "/*"]]}, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } } }, "myTrail" : { "DependsOn" : ["BucketPolicy"], "Type" : "AWS::CloudTrail::Trail", "Properties" : { "IncludeGlobalServiceEvents" : true , "S3BucketName" : {"Ref":"S3Bucket"}, "IsLogging" : true } } } }
S3のバケット名は、「cloudtrail-(AWS ID 12桁)-(リージョン名)」という感じで、AWSアカウントのIDとCloudFormationを実行しているリージョンの名前が自動的に設定されます。
AWSアカウントのIDとリージョンの名前の設定には議事パラメータを、バケット名の連結には組み込み関数を利用しています。
Intrinsic Function Reference - AWS CloudFormation
Pseudo Parameters Reference - AWS CloudFormation
そのため、他のリージョンおよび今後作成するAWSアカウントでも再利用できます。 (バケット名は基本的に一意になると思いますが、保証できるわけではありません。)
Cloud Trailの有効化自体は簡単にできますが、命名規則に則っているか、といった細かい確認が不要になるので心理的には楽かなーと思います。(個人の見解)