gpt4 book ai didi

security - 亚马逊网络服务 : Setting S3 policy to allow putObject and getObject but deny listBucket

转载 作者:行者123 更新时间:2023-12-02 19:20:17 25 4
gpt4 key购买 nike

我在 Amazon S3 上使用 getObject 和 putObject 请求,并在创建存储桶访问策略时发现,如果我不允许 listBucket,则会收到“访问被拒绝”错误。

这样做的问题是 listBucket 意味着用户可以列出存储桶中的键,这呈现安全威胁。

是否可以允许getObject和putObject而不允许listBucket?或者有解决方法吗?

政策如下:

 {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt##",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::myBucket"
]
},
{
"Sid": "Stmt##",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::myBucket/*"
]
}
]
}

最佳答案

来自Get Object documentation :

You need the s3:GetObject permission for this operation. For more information, go to Specifying Permissions in a Policy in the Amazon Simple Storage Service Developer Guide. If the object you request does not exist, the error Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

我已通过编辑与您的政策基本相同的政策来确认此行为。

无论我是否拥有 s3:ListBucket 权限,我都可以轻松获取现有对象,只要我拥有 s3: GetObject权限。

仅当我不具备 s3:ListBucket 权限并且请求不存在的对象时,行为才会发生变化。在这种情况下,S3 不会向我承认该对象是否存在——我被拒绝访问有关该对象存在的知识,因为我无权查看该列表。

对不存在对象的有效请求的响应,没有 s3:ListBucket:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxx</RequestId>
<HostId>xxxx</HostId>
</Error>

对同一不存在对象的有效请求的响应,带有 s3:ListBucket:

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>fakefile.txt</Key>
<RequestId>xxxx</RequestId>
<HostId>xxxx</HostId>
</Error>

因此,对于实际不存在的对象,“访问被拒绝”是没有 s3:ListBucket 的预期响应。否则,它将按预期工作。

关于security - 亚马逊网络服务 : Setting S3 policy to allow putObject and getObject but deny listBucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com