gpt4 book ai didi

amazon-web-services - 防止用户甚至知道 AWS S3 上的其他用户(文件夹)

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

我有一个关于在 AWS S3 上编写 IAM 策略的问题,在 Jim Scharf 的这篇精彩帖子中得到了部分回答:

https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/

以 Jim 的帖子为起点,我试图实现的是防止用户在使用 S3 的控制台时甚至知道其他有权访问同一存储桶的用户的存在。 Jim 的解决方案以及我发现的其他解决方案限制给定用户访问另一用户文件夹中的内容。但是没有一个解决方案可以阻止用户“u”执行我称之为“部分列表”的操作,即,甚至不显示其内容不允许“u”访问的文件夹。

下面的帖子也和我的问题很相似:

How to set up S3 Policies for multiple IAM users such that each individual only has access to their personal bucket folder?

但与此类帖子中的设置不同,我需要类似于在存储桶名称和用户特定文件夹之间具有“中间”主文件夹的文件系统结构(就像 Jim 的帖子中一样):

我的桶/家/用户1

我的桶/家/用户2

到目前为止我所做的如下:

  • 创建了一个存储桶以及其中的多个“文件夹”
  • 创建了许多用户,我将这些用户归为一个组。每个用户在桶内都有对应的同名文件夹
  • 按如下方式设置我附加到组的 IAM 策略:

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "AllowUsersToSeeBucketListInTheConsole",
    "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
    "Effect": "Allow",
    "Resource": ["arn:aws:s3:::*"]
    },
    {
    "Sid": "AllowRootAndHomeListingOfMyBucket",
    "Action": ["s3:ListBucket"],
    "Effect": "Allow",
    "Resource": ["arn:aws:s3:::mybucket"],
    "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}
    },
    {
    "Sid": "AllowListingOfUserFolder",
    "Action": ["s3:ListBucket"],
    "Effect": "Allow",
    "Resource": ["arn:aws:s3:::mybucket"],
    "Condition":{"StringLike":{"s3:prefix":["home/${aws:username/*"]}}
    }
    ]
    }

我了解到当前缀为“home/”时,上面的 Sid“AllowRootAndHomeListingOfMyBucket”向“ListBucket”授予权限。这实际上允许组中的任何用户“u”列出“home”文件夹内的整组文件夹“f”,而不管“u”是否可以访问“f”的给定元素。我不知道是否有任何巧妙设计的“拒绝”规则会限制甚至列出那些不允许查看内容“u”的文件夹。

根据 Bob Kinney 的说法,这在 2013 年是不可能的:

IAM Policy to list specific folders inside a S3 bucket for an user

但是我不确定事情是否在此期间发生了变化。非常感谢任何建议。

谢谢。

最佳答案

不,这是不可能的,因为政策允许的不是您可以看到,而是您可以要求看到。要求 S3 查看对象列表是通过前缀和定界符完成的。

在存储桶中导航时,控制台会在后台询问这些内容:

  • 点击 bucket: 列出 bucket 的根(前缀 empty string with delimiter /)——返回所有常见的前缀(“文件夹”)和根目录中的所有对象,最多一个 / 深。 (未显示,但当您使用控制台创建文件夹时,文件夹名称实际上以 / 结尾——这是控制台将它们显示为文件夹的唯一原因——隐藏的 / 的末尾实际上是一个普通的空对象)。

  • 点击 home: 列出前缀为 home/ 的所有内容,带分隔符 / -- 返回home/ 下的所有公共(public)前缀和对象最多一个 / -- 因此,这将返回 home/david/home/艾米丽home/genevieve/home/james/

  • 点击 david: 列出前缀为 home/david/ 的所有内容,分隔符为 / 。 .. 你也许明白了。

请注意这三个单击是如何与博文中允许的操作相对应的——列出根目录、列出主目录、列出主目录下用户的特定目录。

没有权限列出其他用户的主目录,你可以看到它们存在,但你不能向下钻取它们。

重申...政策控制您可以请求的内容,而不是您可以看到的内容。为了导航到您自己的主目录,您必须能够列出主目录,否则您无法导航到您的主目录。这就是无法通过控制台完成此操作的根本原因——您无法编写任何策略来阻止用户在 / 分隔层次结构的单个级别中查看其他条目,他们 < em>被允许查看,因为权限应用于请求,而不是响应。

关于amazon-web-services - 防止用户甚至知道 AWS S3 上的其他用户(文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371532/

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