跨账户设置的放置对象访问被拒绝



我正在两个 AWS 账户之间设置一个跨账户,我希望账户 B 能够将文件/日志推送到账户A。我在账户 A 中有一个使用KMS 加密加密的 S3 存储桶。

账户 A中的存储桶包含附加的策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::00000000:role/some-role-in-account-B"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3::some-bucket-in-account-A",
"arn:aws:s3:::some-bucket-in-account-A/*"
]
}
]
}

账户B 中,我创建了一个角色(账户 B 中的某个角色(,并附加了以下策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::some-bucket-in-account-A",
"arn:aws:s3:::some-bucket-in-account-A/*"
]
}
]
}

我在账户 B 中有一个实例,其中附加了账户 B 中的某个角色角色

从实例运行这些:aws s3 ls s3://some-bucket-in-account-A工作正常。但是,aws s3 cp some-random-file s3://some-bucket-in-account-A失败并显示错误:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied。有谁知道我可能错过了什么?

您需要向账户 B 中的角色授予对 KMS 密钥的访问权限。 有关更多信息,请参阅此处:https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-denied-error-s3/

请注意,我认为您不需要向角色授予本文中引用的所有权限,您只需授予以下内容:

  • kms:加密
  • kms:GenerateDataKey
  • 公里:重新加密*

相关内容

  • 没有找到相关文章

最新更新