S3 复制:访问被拒绝:Amazon S3 无法检测目标存储桶上是否启用了版本控制



我正在配置两个 s3 存储桶之间的复制。 但是我收到错误

访问被拒绝:Amazon S3 无法检测是否启用了版本控制 目标存储桶。

目标存储桶位于另一个账户的不同区域中。 以下是目标存储桶中的存储桶策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::destination",
"arn:aws:s3:::destination/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAS3AHCETXXDF5Z5GVG:*",
"AROAS3AHCETXX2DMH4JPY:*",
"AROAS3AHCEXXX4SNCNTNV:*",
"AROAVJZZXXXXXZBBR7PN6L:*"
]
}
}
},
{
"Sid": "S3ReplicationPolicyStmt1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXX:root"
},
"Action": [
"s3:GetBucketVersioning",
"s3:GetObjectVersionForReplication",
"s3:PutBucketVersioning",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:PutObjectAcl",
"s3:ObjectOwnerOverrideToBucketOwner"
],
"Resource": [
"arn:aws:s3:::destination",
"arn:aws:s3:::destination/*"
]
}
]
}

我的存储桶是高度机密的,因此我首先拒绝除某些角色之外的所有访问: 因此,在这种情况下,我也排除了复制角色 ID。

为什么仍然不允许复制角色?此存储桶策略有什么问题? 在上述策略中,我实际上授权了两次复制角色。在这两个声明中。

以下是复制 IAM 角色策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::source",
"arn:aws:s3:::source/*"
]
},
{
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags",
"s3:GetBucketVersioning",
"s3:GetObjectVersionTagging",
"s3:ObjectOwnerOverrideToBucketOwner"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::destination/*"
}
]
}

我尝试删除显式拒绝语句并测试复制,源存储桶获取版本控制,我没有拒绝访问,但对象没有复制。

根据我的经验,AWS S3 策略遵循白名单方法,这意味着您首先需要为要允许的操作添加语句,然后添加最后一个语句以拒绝其他所有操作。

因此,在您的情况下,请尝试仅切换语句。

解决方案是将源存储桶中的复制角色也列入白名单。这两个存储桶具有类似的策略,因此必须允许复制角色访问源。

相关内容

最新更新