我正在尝试实施IAM策略,其中用户只能访问他有权访问的文件夹.我从亚马逊文档中获取了此代码
允许用户仅列出公司存储桶中其主目录中的对象
此示例基于前一个示例,该示例为Bob提供了主目录.为了让Bob能够列出其主目录中的对象,他需要访问ListBucket.但是,我们希望结果只包含其主目录中的对象,而不是桶中的所有内容.为了限制他的访问方式,我们使用名为s3:prefix的策略条件键,其值设置为home/bob/.这意味着只有具有前缀home/bob /的对象才会在ListBucket响应中返回.
{
"Statement":[{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::my_corporate_bucket",
"Condition":{
"StringLike":{
"s3:prefix":"home/bob/*"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
这不适合我.当我运行我的代码时,我能够看到所有文件夹和子文件夹.我修改过的代码看起来像这样:
{
"Statement":[{
"Effect":"Allow",
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::Test-test",
"Condition":{
"StringLike":{
"s3:prefix":"Test/*"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
当我使用附加到上述策略的用户的凭据在c#中运行我的代码时,我得到所有文件夹,而不仅仅是"测试"下的那个...真的很感激一些帮助!
我终于搞定了.虽然我认为AWS管理控制台中存在一个错误,但至少它就像是一个错误.问题是我的策略一直都是正确的,但是当我通过AWS管理控制台访问它时,它的行为会有所不同,然后像CloudBErry这样的软件.我必须修改的一件事是对象和存储桶的ACL设置.如果AWS控制台正常工作,那么之前也会这样做.无论如何这是我的政策:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*",
"Condition": {}
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions"
],
"Resource": "arn:aws:s3:::pa-test",
"Condition": {
"StringLike": {
"s3:prefix": "test/*"
}
}
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::pa-test/test/*",
"Condition": {}
}
]
}
Run Code Online (Sandbox Code Playgroud)
1)问题是当我通过AWS控制台访问此IAM用户的管理控制台时,当我点击我的存储桶时,我被拒绝访问但是当我通过Cloudberry登录时,我可以看到我的文件夹.2)我必须修改我的存储桶的ACL设置和我的存储桶的对象(文件夹):所有者:完全控制经过身份验证的用户:只读
对于我的文件夹:所有者:完全控制
现在的问题是您无法在AWS控制台中为文件夹(对象)设置ACl设置.您可以为文件(对象)设置它们.例如,如果右键单击存储桶中的文件夹(对象),然后单击属性,则不会显示权限选项卡.但是,如果您右键单击存储桶或文件(Say test.html)并单击属性,它将显示权限选项卡.我不确定是否其他人注意到了这个问题.无论如何,这是我的脚本,它现在正在工作.
| 归档时间: |
|
| 查看次数: |
5633 次 |
| 最近记录: |