用于列出用户的 S3 存储桶内的特定文件夹的 IAM 策略

2024-03-12

我在桶下面有下面的钥匙客户演示

demo.for.customers/customer1/
demo.for.customers/customer2/

现在我有 2 个客户客户1 and 客户2。这就是我要的:

  1. 仅授予他们访问权限客户演示 bucket.
  2. customer1 应该只能访问demo.for.customers/customer1/并且 customer2 应该只能访问demo.for.customers/customer2/.

我可以通过以下策略来实现这一目标(我正在为每个客户创建策略。因此我只为下面的 customer1 粘贴策略。)我已在 IAM 中而不是在 S3 中定义了此策略。

{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
   {
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::demo.for.customers"],
      "Condition":{"StringEquals":{"s3:prefix":["","customer1/"],"s3:delimiter":["/"]}}
   },
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": ["arn:aws:s3:::demo.for.customers/customer1/*"]
    }
]
}

Problem:

  1. Customer1 能够看到我的所有存储桶,尽管他无法访问其中任何一个。我不想要这个。他应该只能看到客户演示
  2. 客户1可以看到demo.for.customers/customer2尽管他无法访问它。这是非常不可接受的,因为我什至不希望他看到我在此存储桶下有哪些其他客户文件夹。

问题:

  1. 经过大量谷歌搜索后,我发现没有办法列出特定的存储桶。这是真的吗?
  2. 但是,我必须找到一种方法仅列出特定文件夹位于给定用户的存储桶内。怎么做?

Thanks.


关于您的问题:

  1. 不幸的是,没有办法只列出某些存储桶。如果目的只是允许访问一个已知的存储桶,我将完全删除第一个语句,因为它不会添加任何值(存储桶已经已知,不需要列出)。
  2. 您可以显示用于列出存储桶内容的代码吗?根据您在此处显示的内容,我希望 customer1 只能在其前缀的根处列出存储桶内容,而不能在其他地方列出。

关于您的问题:

  1. 是的,没有办法列出某些存储桶。列表存储桶 API 是全有或全无操作。
  2. 这是通过前缀完成的。您使用什么语言?我们有一个 AWS 移动开发工具包示例,它使用令牌自动售货机来交付每个用户对 S3 存储桶的访问权限 http://aws.amazon.com/code/4598681430241367.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于列出用户的 S3 存储桶内的特定文件夹的 IAM 策略 的相关文章

  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • 扩展策略中的AWS ASG冷却期和预热期有什么区别?

    AWS ASG 冷却期 当我想要更新自动扩展组时可以编辑该冷却期 和扩展策略中的预热期之间有什么区别 冷却时间可以防止失控的缩放事件 如果您的系统在 CPU 上运行较高 并且您的自动扩展规则添加了一个实例 则该实例将需要 5 分钟左右的时间
  • 具有维度的 Amazon Web Service CloudWatch 自定义指标

    我正在尝试将数据推送到 AWS CloudWatch 上的自定义指标 但想了解有关维度的更多信息以及如何使用它们 我已经阅读了 AWS 文档 但它并没有真正解释它们的用途以及它如何影响 AWS 管理控制台中的图形 UI 维度是进一步细分指标
  • 如果 AWS API 请求失败,我如何调试我需要哪些权限?

    我正在使用 Terraform 在 AWS 上配置一些资源 运行 Terraform 的 计划 步骤失败 并出现以下模糊错误 例如 Error Error loading state AccessDenied Access Denied s
  • 同一 Kinesis 流的多个不同消费者

    我有一个 Kinesis 生产者 它将单一类型的消息写入流 我想在多个完全不同的消费者应用程序中处理这个流 因此 对于给定的主题 流 具有单个发布者的发布 订阅 我还想利用检查点来确保每个消费者处理写入流的每条消息 最初 我为所有消费者和生
  • 以非 root 用户身份使用 AWS CodeBuild

    有没有办法掉root用户开启AWS 代码构建 我们正在构建一个 Yocto 项目 如果我们是 root Bitbake 健全性检查 该项目将在 CodeBuild 上失败 我们绝望的做法也不起作用 build commands chmod
  • AWS Lambda python API 调用方法不返回 JSON - 不可序列化?

    我有一个 Lambda 函数 它是对 API 的基本 Python GET 调用 它在本地运行良好 但是当我上传到 Lambda 以及请求库 时 它不会从 API 调用返回 JSON 响应 我只是希望它将整个 JSON 对象返回给调用者 我
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id
  • AWS Lambda 调用错误未触发 SQS 死信队列

    我有一个 AWS Lambda 函数 它订阅 DynamoDB 流并配置了SQS 死信队列 DLQ https docs aws amazon com lambda latest dg dlq html 我可以看到管理控制台中配置了正确的队
  • 将多个平台部署到 Elastic Beanstalk (PHP/Python)

    是否可以将多个平台部署到AWS 我有一个 PHP 应用程序 我还想运行一个小的 python 脚本 我看到 PHP 平台默认安装 Python 但是使用eb deployAWS 没有接听requirements txt并安装依赖项 我已经尝
  • 在 Amazon EMR 上使用 java 中的 hbase 时遇到问题

    因此 我尝试使用作为 MapReduce 步骤启动的自定义 jar 来查询 Amazon ec2 上的 hbase 集群 我的 jar 在地图函数内 我这样调用 Hbase public void map Text key BytesWri
  • AWS LoadBalancer监听多个端口

    我有一些应用程序在 aws 中作为微服务运行 其中一些在端口 80 上运行 一些在端口 3000 上运行 我希望我的 ALB 侦听这两个端口上的流量 然后我有一个ListenRules将流量引导至微服务 我想实现如下所示的目标 Resour
  • AWS 卷备份为空

    我是 AWS 新手 我有一个在 AWS 中运行的实例 现在我想将该实例卷放入新实例中 该卷包含大约 8GB 的 内容 我按照以下帖子中的第一个答案进行操作 更改 ec2 实例的密钥对 https stackoverflow com ques
  • AWS Cognito - 如何确定用户是否使用电子邮件或电话号码注册

    我们已经按照描述实施了自定义身份验证触发器here https docs aws amazon com cognito latest developerguide user pool lambda challenge html 我们设置了用
  • 在我们的 Rails3/Heroku 应用程序中设置 Paperclip + AWS S3 用于图像存储时遇到问题

    我们已经构建了一个 Rails 应用程序 它有多个用户和每个用户的图像 在我们的本地主机上完成所有开发工作 我们为用户和照片提供了工作种子 但现在我们尝试使用 S3 进行图像存储 我们在 总是在 种子 期间遇到错误执行此操作时迁移的步骤 耙
  • AmazonServiceException:用户无权执行:dynamodb:DescribeTable 状态代码:400;错误代码:AccessDeniedException

    我原本以为这个问题是由于区域不匹配造成的 但是在更改区域后 在尝试此处找到的 Amazon AWS 示例时 我仍然遇到以下错误 DynamoDB映射器 https github com awslabs aws sdk android sam
  • DynamoDB 中的时间戳应使用什么数据类型?

    我是 DynamoDB 新手 我希望创建一个使用 DeviceID 作为哈希键 时间戳作为范围键和一些数据的表 DeviceID 123 Timestamp 2016 11 11T17 21 07 5272333Z X 12 Y 35 在
  • 使用 python boto3 管理 Route53 中具有多个 IP 的 A 记录

    我的route53中有一条A记录 后面有多个IP 例子 A record dummy xyz com 点IPs 1 1 1 1 2 2 2 2 和 3 3 3 3路由策略 Simple 我使用下面的代码来更新单个 IP 的记录 Change
  • 具有服务器端加密 s3 存储桶的 AWS Cloudfront

    这是对这个问题 https stackoverflow com questions 50166557 how can a cloudfront distribution an aws kms key to get an s3 image e
  • 将 Django 部署到 AWS;傻瓜静态文件

    我对这个项目的最后一步完全迷失了 到目前为止 我已经能够开发一个 Django 应用程序 它可以在本地主机上按照我想要的方式工作 我已经能够将网站部署到 AWS EC2 但我一定错过了有关提供静态文件的一些基本知识 我什至还没有尝试过媒体文

随机推荐