gpt4 book ai didi

amazon-web-services - 限制用户仅列出存储桶中特定文件夹的 AWS S3 策略

转载 作者:行者123 更新时间:2023-12-05 05:03:11 26 4
gpt4 key购买 nike

我在创建 AWS S3 策略以允许客户仅列出和访问特定文件夹和子文件夹中具有扩展名的某些对象时遇到困难,而不能列出或访问其他文件夹、子文件夹或对象。

假设我们有这样的结构:

S3
.
├── BucketManagement
| └── Accounting
|
├── BucketHR
| ├── Insurance
| └── Resume
|
└── BucketCustomers
├── custAcmeAnvils
├── custBoboBakery
| ├── projCakewalk
| | ├── batter.txt
| | ├── cupcake.txt
| | ├── PROFIT.XLS
| | └── cooktime.txt
| ├── projPieFace
| └── projFlourPower
| ├── dough.txt
| └── LAWSUITS.DOC
└── custCocoCabana

我为我的客户“Bobo's Bakery”创建了一个 IAM 用户。我想允许我的客户 Bobo 先生仅查看和访问某些文件夹、子文件夹和对象(文件)。我不希望 Bobo 先生查看或访问任何其他存储桶、文件夹、子文件夹或对象。

在此示例中,我只希望 Bobo 先生能够列出和下载某些子文件夹中具有“.txt”扩展名的对象,而不能查看、列出或访问任何其他文件夹、子文件夹或具有其他扩展名的对象扩展名。

理想情况下,当 Bobo 先生登录到 S3 控制台时,他只会看到这个存储桶(我知道这可能是不可能的,因为所有存储桶都必须可见):

BucketCustomers

然后当 Bobo 先生点击那个桶时,他只看到这个文件夹“custBoboBakery”:

BucketCustomers
└── custBoboBakery

然后,当 Bobo 先生单击该文件夹时,他只会看到这两个子文件夹“projCakeWalk”和“projFlourPower”:

custoBoboBakery
├── projCakeWalk
└── projFlourPower

注意:我不想让 Bobo 先生看到子文件夹 projPieFace。然后,当 Bobo 先生单击子文件夹 projCakewalk 或 projFlourPower 时,他只会看到扩展名为“.txt”的对象。

projCakewalk
├── batter.txt
├── cupcake.txt
└── cooktime.txt

projFlourPower
└── dough.txt

先生。 Bobo 应该看不到扩展名为“.XLS”或“.DOC”的对象。然后他可以下载这些 .txt 文件。波波先生不应该有删除或上传权限。

你能建议如何写这个政策吗?

最佳答案

S3 是一个平面文件系统对象存储。这意味着您访问的所有文件和文件夹最终都是平面名称。

例如,您的文件夹路径 projCakewalk->batter.txt 的文件名为 projCakewalk/batter.txt。这意味着如果你想访问这个特定的文件,你需要使用完整的名称(路径)。

为了限制对特定文件夹和路径的访问,S3 提供了创建存储桶策略和 IAM 策略的能力——它们在结构上是相似的。为了达到你的目的,你可以引用这个link

页面中的示例策略如下所示

{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
},
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-company"],
"Condition":{"StringEquals":{"s3:prefix":["","home/", "home/David"],"s3:delimiter":["/"]}}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-company"],
"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
},
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::my-company/home/David/*"]
}
]
}

在上述政策中,对于第一部分,您允许访问列出所有存储桶(您不需要这个)对于第二部分,它允许访问列出 my-company 存储桶的特定子文件夹对于第三部分,它只允许访问特定的文件名模式(您可以使用类似的条件来限制对特定文件的访问 - 只需删除星号)

关于amazon-web-services - 限制用户仅列出存储桶中特定文件夹的 AWS S3 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61847111/

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