Qua vài lần mất thời gian vì đọc doc của aws, mình viết bài memo lại mấy tut setting để sau này dùng lại cho nhanh.
Có vài lần đọc không kỹ khá tốn thời gian lọ mọ setting rồi test, rồi lại setting lại text, hi vọng bài viết cũng có ích với anh em.
Mở đầu
Việc lưu log của CloudTrail vào S3 là rất quan trọng, nó là bước tiền đề để cho các bước Audit sau này. Bật log của Cloudtrail và export nó sang S3 bucket trong một account thì đơn giản rồi. Hôm nay đẹp trời nên mình sẽ viết hướng dẫn setting để export log của CloudTrail sang một AWS account khác có dùng KMS.
Tại sao lại phải export log sang một tài khoản khác?
Có nhiều mục đích kể ra cũng nhiều nhưng ví dụ dễ hiểu nhất thì nó tránh việc ông nào đó làm việc gì sai trái, sợ hành vi của mình sẽ bị lưu lại nên vào S3 xóa luôn log của hành vi đó đi, và không ai truy ra được ông ta nữa.
Setting
Việc setting gồm có một số bước quan trọng (bài viết chủ yếu tập trung vào setting quyền).
Giả sử
- account
111111111111
có CloudTrail gửi log đi - account
có S3Bucket nhận log222222222222
- Bucket nhận log có name là: em-van-doi-logs-cua-anh
- Các thông tin tương tự bạn tự thay nhé:
trailName
, keyID...
- Setting Bucket policy
- Setting KMS policy
- Setting CloudTrail
1. Setting Bucket Policy
Bucket cần có 1 đoạn như thế này để
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20131101",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::em-van-doi-logs-cua-anh"
},
{
"Sid": "AWSCloudTrailWrite20131101",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::myBucketName/optionalLogFilePrefix/AWSLogs/111111111111/*",
"arn:aws:s3:::myBucketName/optionalLogFilePrefix/AWSLogs/222222222222/*"
],
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName",
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
2.Setting KMS policy
{
"Sid": "Enable CloudTrail Encrypt Permissions",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "kms:GenerateDataKey*",
"Resource": "arn:aws:kms:ap-northeast-1:222222222222:key/KeyID",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
},
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:*:111111111111:trail/*",
"arn:aws:cloudtrail:*:222222222222:trail/*"
]
}
}
},
{
"Sid": "Allow CloudTrail access",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "kms:DescribeKey",
"Resource": "arn:aws:kms:ap-northeast-1:222222222222:key/KeyID",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
}
}
}
3. Gắn KMS vào S3 Bucket
3. Setting CloudTrail
Đến đây bạn chỉ cần copy KMS arn và bucket name vào chỗ setting tương ứng của CloudTrail là được rồi.
Kiểm tra
Khi logs đã vào S3 Bucket rồi thì bạn nên vào xem thông tin của log trong S3 xem đã gắn với KMS mà bạn chỉ định chưa là done.
Tổng kết
Trên đây mình đã hướng dẫn cách setting CloudTrail xuất logs sang S3 bucket của một account khác có dùng KMS.
Đối với người biết thì có thể nó dễ dàng, nhưng đối với người chưa từng thao tác thì có thể mất thời gian. Hy vọng bài viết có ích cho anh em. Chào thân ái.
Leave a Reply