fan*_*yna 4 amazon-s3 bucket amazon-web-services
我有一个非常基本的目标:将我的存储桶的所有内容分享给特定用户列表,只读.这曾经使用一个名为s3cmd的工具.我需要做的就是将用户(通过电子邮件识别)添加到具有读取权限的访问控制列表中,他们可以顺利地列出或下载数据.
但最近,这突然间不再起作用了.系统只是拒绝任何访问我的存储桶的尝试.
然后我开始考虑编辑存储桶策略.以下是策略生成器生成的策略草稿(敏感信息是匿名的):
{
"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"
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
当我点击"保存"时,我收到"策略有无效操作"错误.然后我尝试删除"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"
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
并得到另一条错误消息"操作不适用于语句中的任何资源".这两个错误对我来说没有意义.如果我错了,请纠正我.如果我没有朝着正确的方向前进,请帮助我.
顺便说一句:我试图按照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"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用AccountB的awscli执行"aws s3 ls s3:// examplebucket"时收到错误消息.错误消息是"调用ListObjects操作时发生错误(AccessDenied):访问被拒绝".这让我很困惑.如果我添加ListObjects,我收到"无效"错误.如果我删除"ListObjects",则另一个用户无法读取我的存储桶内容.
我该怎么办?
我怀疑是策略编辑器已经变得更加聪明,当涉及到经营业务上水桶,而不是水桶内.
此外,ListObjects
似乎令人心烦,所以不要理会.
此策略允许列出存储桶的内容并检索对象:
{
"Id": "Policy1",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/user-name"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
ListBucket
在Bucket上运作.
GetObject
对桶的内容进行操作.
它可以写成策略中的两个单独的语句(一个在存储桶上,一个在存储桶的内容上),但是通常更容易按上面的方式编写它.
归档时间: |
|
查看次数: |
5517 次 |
最近记录: |