【发布时间】:2018-05-22 07:26:34
【问题描述】:
我有一个非常基本的目标:将我存储桶中的所有内容共享给特定用户的列表,只读。这曾经与一个名为 s3cmd 的工具一起工作。我只需要在Access Control List with Read Permission添加一个用户(通过电子邮件识别),他们就可以顺利列出或下载数据了。
但最近,这突然不再起作用了。系统只是拒绝任何访问我的存储桶的尝试。
然后我开始考虑编辑存储桶策略。这是我的政策草案,由政策生成器生成(敏感信息是匿名的):
{
"Id": "Policy123456789",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1512705836469",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:ListObjects"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::mybucketname",
"Principal": {
"AWS": [
"arn:aws:iam::anotheruserid:user/admin"
]
}
}
]
}
当我点击 save 时,我收到“Policy has invalid action”错误。然后我尝试删除“ListObjects”,这样策略就变成了
{
"Id": "Policy123456789",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1512705836469",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::mybucketname",
"Principal": {
"AWS": [
"arn:aws:iam::anotheruserid:user/admin"
]
}
}
]
}
并收到另一条错误消息“操作不适用于语句中的任何资源”。
这两个错误对我来说没有意义。如果我错了,请纠正我。如果我的方向不正确,请帮助我。
顺便说一句:我尝试按照教程 http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html 但没有成功。通过使用以下存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB-ID:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::examplebucket"
]
}
]
}
使用 AccountB 的 awscli 执行“aws s3 ls s3://examplebucket”时收到错误消息。
错误消息是“调用 ListObjects 操作时发生错误 (AccessDenied):访问被拒绝”。
这让我很困惑。如果我添加 ListObjects,我会得到一个 "invalid" error。
如果我删除“ListObjects”,其他用户将无法读取我的存储桶内容。
我该怎么办?
【问题讨论】:
-
这就像打地鼠
标签: amazon-web-services amazon-s3 bucket