【发布时间】:2022-02-28 12:04:44
【问题描述】:
我已使用如下所示的存储桶策略配置了我的 S3 存储桶
{
"Version": "2012-10-17",
"Id": "Policy100000000000",
"Statement": [
{
"Sid": "Stmt1463490591045",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*"
},
{
"Sid": "Stmt1463490591012",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::012345678900:user/user1",
"arn:aws:iam::012345678900:user/user2"
]
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucketname"
},
{
"Sid": "Stmt1463490660089",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::012345678900:user/user1",
"arn:aws:iam::012345678900:user/user2"
]
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*.xml"
}
]
}
目标是只允许选定用户访问存储桶根目录中的 xml 文件。该规则似乎不起作用,因为我的访问被拒绝
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>DE3DB1FF18B53997</RequestId><HostId>Iy+RnfkFKygJWkSTI0dXjssFsGFP2MydZZi/R5KBw5M8mZnfClt6HMOKJvAwy7sJgSx9BJQ3DbN=</HostId></Error>
我尝试使用 AWS Node.js 和 Python 开发工具包以及 aws-cli 获取 xml 文件。我不断收到相同的访问被拒绝消息。
有关存储桶策略的 AWS 文档非常分散,并没有为我提供问题的解决方案。几乎没有关于在政策中使用 notPrincipal 的文档。
ListBucket 权限可以正常工作,这意味着问题是特定于规则的,而不是目标用户。
【问题讨论】:
-
我猜user1被阻止是因为它不是user2,而user2被阻止是因为它不是user1。不知道如何解决
-
这似乎不是这样。我尝试从权限中删除其中一位用户,但无法获得另一位用户的访问权限。这个AWS security blog post 也有一个在
notPrincipal规则中列出多个用户的示例。 -
将此 ""Resource": "arn:aws:s3:::bucketname/*.xml"" 更改为 "Resource": "arn:aws:s3:::bucketname/*" 和那就试试
-
我是否看到来自不同 AWS 账户访问 S3 存储桶的用户权限?我们不需要像这篇 AWS Blog 文章中提到的那样为此使用跨账户 IAM 角色吗?
标签: amazon-web-services amazon-s3