はじめに
今回は AWS CloudTrail を試します。
アカウントアクティビティのログを記録し、Amazon SNSを組み合わせて通知するよう設定します。
設定
今回は CloudFormation を利用し、設定しました。
使用したテンプレートはGithubに。
AWS SAM テンプレート作成
AWS SAM テンプレートで S3, SNS, CloudTrail の設定をします。
[参考資料]
AWS SAM テンプレートを作成する
S3の設定は以下の部分
SampleBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
PublicAccessBlockConfiguration:
BlockPublicAcls: True
BlockPublicPolicy: True
IgnorePublicAcls: True
RestrictPublicBuckets: True
LifecycleConfiguration:
Rules:
- Id: 30days
Status: Enabled
ExpirationInDays: 30
NoncurrentVersionExpirationInDays: 30
DeletionPolicy: Retain
SampleBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref SampleBucket
PolicyDocument:
Version: 2012-10-17
Statement:
- Sid: SampleBucketCloudTrailAclCheck
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: s3:GetBucketAcl
Resource: !Sub "arn:aws:s3:::${SampleBucket}"
- Sid: SampleBucketCloudTrailWrite
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: s3:PutObject
Resource: !Sub "arn:aws:s3:::${SampleBucket}/AWSLogs/${AWS::AccountId}/*"
Condition:
StringEquals:
s3:x-amz-acl: bucket-owner-full-control
SNSの設定は以下の部分
TrailSNSTopic:
Type: AWS::SNS::Topic
TrailSNSTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Version: 2012-10-17
Statement:
- Sid: SampleSNSCloudTrailWrite
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: sns:Publish
Resource: !Sub "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:*"
Topics:
- !Ref TrailSNSTopic
TrailSNSSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: !Ref TrailSNSMailAddress
Protocol: email
TopicArn: !Ref TrailSNSTopic
CloudTrailの設定は以下の部分
SampleTrail:
Type: AWS::CloudTrail::Trail
Properties:
S3BucketName: !Ref SampleBucket
SnsTopicName: !GetAtt TrailSNSTopic.TopicName
IsLogging: true
TrailName: !Ref TrailName
イベント履歴の確認
- CloudTrail コンソール から イベント履歴の確認
終わりに
CloudTrail を試しました。
異常なアクティビティを警告する、 CloudTrail Insights も今後試してきたいと思います。