[AWS][CFn]CloudTrail 설정
13077 단어 CloudFormationCloudtrailAWS
소개
안녕하세요. 친숙합니다.
전회에 이어, 클래스 메소드 씨의 블로그 기사, AWS 어카운트를 만들면 먼저 할 일 ~영화 원년판~ 를 참고로 해, AWS에서의 초기 설정을 CloudFormation에서 실시해 갑니다.
이번에는 "CloudTrail 활성화"를 CloudFormation에서 실시하겠습니다. CloudTrail은 말할 필요도 없지만 감사 로그에 대한 설정입니다. 엔터프라이즈에서 AWS를 사용하는 경우 여기를 사용하거나 설정하지 않는 것이 좋습니다.
전제
샘플 코드로 실시하고 있는 것은 이하입니다.
본래라면 CloudwatchLogs에의 출력도 실시해, 특정의 API가 실행되었을 경우에 SNS 통지하도록(듯이) 설정하는 것이 좋을지도 모릅니다.
샘플 코드
---
AWSTemplateFormatVersion: 2010-09-09
Description: CloudTrail
#------------------------------
# Resources: Your resource list
#------------------------------
Resources:
# CloudTrailをS3に保存するためのバケットを作成する。ライフサイクルは13ヶ月(400日)。
## Logs bucket
CloudTrailBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
PublicAccessBlockConfiguration:
BlockPublicAcls: True
BlockPublicPolicy: True
IgnorePublicAcls: True
RestrictPublicBuckets: True
LifecycleConfiguration:
Rules:
- Id: 13months(400days)
Status: Enabled
ExpirationInDays: 400
NoncurrentVersionExpirationInDays: 400
DeletionPolicy: Retain
## Logs bucket policy
CloudTrailBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref CloudTrailBucket
PolicyDocument:
Version: 2012-10-17
Statement:
- Sid: AWSCloudTrailAclCheck
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: s3:GetBucketAcl
Resource: !Sub "arn:aws:s3:::${CloudTrailBucket}"
- Sid: AWSCloudTrailWrite
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: s3:PutObject
Resource: !Sub "arn:aws:s3:::${CloudTrailBucket}/AWSLogs/${AWS::AccountId}/*"
Condition:
StringEquals:
s3:x-amz-acl: bucket-owner-full-control
# S3に保存したログはKMSで暗号化し、特定のユーザでしか復号できないようにする
## KMS
myKey:
Type: AWS::KMS::Key
Properties:
Description: for CloudTrail log files
Enabled: True
KeyPolicy:
Version: 2012-10-17
Id: CloudTrailEncryptKey
Statement:
- Sid: Allow administration of the key
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:user/NaGym_t" #ここは任意のroleやuserに変更してください。
Action:
- kms:Create*
- kms:Describe*
- kms:Enable*
- kms:List*
- kms:Put*
- kms:Update*
- kms:Revoke*
- kms:Disable*
- kms:Get*
- kms:Delete*
- kms:TagResource
- kms:UntagResource
- kms:ScheduleKeyDeletion
- kms:CancelKeyDeletion
Resource: "*"
- Sid: Allow use of the key
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:user/NaGym_t" #ここは任意のroleやuserに変更してください。
Action:
- kms:Encrypt
- kms:Decrypt
- kms:ReEncrypt
- kms:GenerateDataKey*
- kms:DescribeKey
Resource: "*"
- Sid: Allow attachment of persistent resources
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:user/NaGym_t" #ここは任意のroleやuserに変更してください。
Action:
- kms:CreateGrant
- kms:ListGrants
- kms:RevokeGrant
Resource: "*"
Condition:
Bool:
kms:GrantIsForAWSResource: True
DeletionPolicy: Retain
# CloudTrailを有効化する
## CloudTrail
CloudTrail:
Type: AWS::CloudTrail::Trail
Properties:
S3BucketName: !Ref CloudTrailBucket
IncludeGlobalServiceEvents: true
IsLogging: true
KMSKeyId: !Ref myKey
IsMultiRegionTrail: true
EnableLogFileValidation: true
TrailName: cloudtraillog
실행 결과
여기는 [CloudTrail]→[트레일 정보]→[설정]에서 변경할 수 있습니다.
요약
이번에는 CloudFormation에서 CloudTrail을 활성화하겠습니다.
CloudTrail은, 얻는 것이 좋은 것의 활용되고 있다고 말해지면 나 자신도 할 수 없는 자신감이 있습니다…
CloudTrail Insight가 그것에 도움을 주면 좋다고 생각하면서 동작을 확인하지 않으므로 유효성을 확인할 수 없습니다.
하지만 감사 추적으로서는 취득해 두는 것이 절대적으로 좋기 때문에, 우선은 설정하도록 합시다.
뭔가 도움이되면 다행입니다.
Reference
이 문제에 관하여([AWS][CFn]CloudTrail 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NaGym_t/items/e88ec0fa5c14e540ffdc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)