サクっとできるので、アカウント作ったらとりあえずやっておくといいかもしれません
以下は、全リージョンのCloudTrailを有効にするCloudFormationテンプレートのペライチと、使い方になります。
テンプレートは、公式ドキュメントをベースに以下の修正を加えています。
- 全てのリージョンで CloudTrail 証跡を有効にするように変更
- グローバルサービス (IAM など) からのイベントをログファイルに発行するように変更
- OutputにSNS TopicのARNと、S3バケット名を出力するように変更
- SNSのサブスクリプションは指定しない → サブスクリプションは後から自由に設定したいので、SNS Topicだけ作っておく
CloudFormation テンプレート
---
AWSTemplateFormatVersion: "2010-09-09"
Resources:
S3Bucket:
DeletionPolicy: Retain
Type: "AWS::S3::Bucket"
Properties: {}
BucketPolicy:
Type: "AWS::S3::BucketPolicy"
Properties:
Bucket:
Ref: S3Bucket
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Sid: "AWSCloudTrailAclCheck"
Effect: "Allow"
Principal:
Service: "cloudtrail.amazonaws.com"
Action: "s3:GetBucketAcl"
Resource:
!Sub |-
arn:aws:s3:::${S3Bucket}
-
Sid: "AWSCloudTrailWrite"
Effect: "Allow"
Principal:
Service: "cloudtrail.amazonaws.com"
Action: "s3:PutObject"
Resource:
!Sub |-
arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*
Condition:
StringEquals:
s3:x-amz-acl: "bucket-owner-full-control"
Topic:
Type: "AWS::SNS::Topic"
TopicPolicy:
Type: "AWS::SNS::TopicPolicy"
Properties:
Topics:
- Ref: "Topic"
PolicyDocument:
Version: "2008-10-17"
Statement:
-
Sid: "AWSCloudTrailSNSPolicy"
Effect: "Allow"
Principal:
Service: "cloudtrail.amazonaws.com"
Resource: "*"
Action: "SNS:Publish"
myTrail:
DependsOn:
- BucketPolicy
- TopicPolicy
Type: "AWS::CloudTrail::Trail"
Properties:
S3BucketName:
Ref: S3Bucket
SnsTopicName:
!GetAtt Topic.TopicName
IsLogging: true
IsMultiRegionTrail: true
IncludeGlobalServiceEvents: true
Outputs:
SNSTopicArn:
Value: !Ref Topic
S3BucketName:
Value: !Ref S3Bucket
使い方
どんなリソースが作られるのか視覚的にわかりやすいので、CloudFormation Designerを使ってテンプレートを読み込んでみます。(慣れている方は、aws cliとかを使ってもいいと思います)
まずは、CloudFormationのコンソールを開いて、「テンプレートのデザイン」を押します。
CloudFormation Designerの画面が開いたら、
- テンプレートの言語の選択をYAMLに変えます
- テンプレートタブに上記テンプレをコピペします
- テンプレをvalidateします
- 画面右上の矢印から画面のリフレッシュを行います
すると、リソースがどのようにつくられるか可視化されます
あとは、画面上部左上にあるのアイコンからスタックを作成する画面に行って、適当に名前をつけて作成します。
簡単。うまくいくと状況がCREATE_COMPLETEになります。
まとめ
正直CloudTrailのコンソールからでもポチポチやれば簡単に設定できるのですが、なるべくリソース作成や変更はコード化しておくと、後からいろいろ見直しやすいのでおすすめです
参考