【发布时间】:2019-10-18 22:29:10
【问题描述】:
我正在两个 AWS 账户之间设置跨账户,我希望账户 B 能够将文件/日志推送到账户 A。我有一个 S3 存储桶,使用 KMS 加密 位于帐户 A 中。
账户 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 中,我创建了一个角色 (some-role-in-account-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 中有一个实例,我在其中附加了 some-role-in-account-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。有谁知道我可能会错过什么?
【问题讨论】:
-
我很好奇,既然bucket资源策略中已经提供了你需要的所有权限,你是否需要在账户B角色中实际分配权限?这与解决您的问题(KMS 密钥权限)无关,但我想知道角色 B 中的权限是否是多余的。
-
根据来自 AWS aws.amazon.com/premiumsupport/knowledge-center/… 的这篇博客,似乎需要它。如果没有 tho,我还没有测试过
标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam