授予读取 Amazon S3 存储桶内子目录的权限

2024-01-23

我以前从未使用过 AWS S3。我们用它来自动备份客户的通话录音。我们的一位客户出于审计目的需要访问他们的录音。

我使用客户端 Cyber​​Duck 作为访问文件的方式。

我只想让他们访问他们的文件。

我们的文件结构如下:

recordings/12345/COMPANYNAMEHERE/

我刚刚了解到您是根据脚本和策略构建和执行操作的。所以我做了一些研究并尝试构建一个,但我在列表中被拒绝访问。

只是好奇我是否正确地处理了这个问题。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::recordings/12345/COMPANYNAMEHERE",
                "arn:aws:s3:::recordings/12345/COMPANYNAMEHERE/*"
            ]
        }
    ]
}

您只允许他们ListAllMyBuckets,这意味着他们只能列出您的存储桶的名称,而不能执行任何其他操作。

如果您已经为他们创建了 IAM 用户,那么向他们提供此策略将允许他们列出和检索其文件,但只能从给定目录(或者更准确地说,使用给定前缀):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "recordings/123/*"
                    ]
                }
            }
        },
        {
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket/recordings/123/*"
            ]
        }
    ]
}

如果您经常与客户这样做,那么您可以使用IAM 策略变量 http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html创建替换用户名的规则:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "recordings/${aws:username}/*"
                    ]
                }
            }
        },
        {
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket/recordings/${aws:username}/*"
            ]
        }
    ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

授予读取 Amazon S3 存储桶内子目录的权限 的相关文章

随机推荐

  • 停止使用 Android 原生相机保存照片

    我正在使用本机 Android 相机并将文件保存到我的应用程序数据文件夹 mnt sdcard Android data com company app files Pictures 同时 照片的另一个副本将保存到 DCIM 文件夹中 这是
  • 如何在 Mac 上制作一个允许用户创建目录的 JFileChooser?

    我有一个安装程序 可以让用户选择安装目录 MacOS 上的 JFileChooser 实现使用本机对话框 或者至少看起来是本机的 那太棒了 唯一的问题是无法从此对话框中创建目录 您只能选择一个预先存在的目录 这很笨拙 有没有办法获得这个功能
  • 在 Asp.Net 中获取 jQuery Ajax 返回数据

    我是 jQuery 的新手 不明白 jQuery Ajax 如何返回数据 我有一些简单的函数来获取如下数据 WebMethod EnableSession false protected int SignIn return 0 在我的 as
  • 如何在delphi中将图标转换为具有alpha透明度的png?

    下面的代码将从文件中提取图标并将其转换为 png 但没有 alpha 透明度 var IconIndex word icon TIcon png TPngImage bmp TBitmap begin IconIndex 0 icon TI
  • C++ 二维 std::vector 最佳实践

    我正在构建一个应用程序 需要支持二维数组来保存数据网格 我有课Map包含二维数据网格 我想使用向量而不是数组 我想知道使用二维向量的最佳实践是什么 我应该有一个 MapCells 向量的向量吗 或者它应该是指向 MapCells 的指针向量
  • Docker echo 环境变量

    我正在尝试编写一个小 docker 文件来设置用户并仅回显当前用户作为一个小示例 以向自己证明它正在工作 我尝试了多种变体 但在文档中找不到太多帮助 FROM ubuntu USER daemon ENTRYPOINT echo USER
  • 在 Ubuntu 10.10 上安装 git-flow 无提示地失败

    我正在尝试使用 github 上的说明安装 gitflowreadme http github com nvie gitflow啦啦 wget q O https github com nvie gitflow raw develop co
  • 定义类模板的友元函数模板

    我想定义一个类模板的函数模板 代码如下所示 template
  • 如何在没有belongsTo的情况下处理Grails中的多对多?

    我需要在 Grails 中创建多对多关系 我有一个 问题 域和一个 标签 域 一个问题可以有 0 个或多个标签 一个标签可以有 0 个或多个问题 如果我在每一边都放一个 hasMany 它会给我一个错误 说我需要一个 belongTo 某处
  • 确定 github 页面上的页面已过时

    Github 页面 http pages github com 设置非常激进的缓存标头 Cache Control max age 86400 1 day Expires提前 1 个月 所有提供的内容 如果您更新页面并推送到 github
  • TryAcquireSRWLock* 和 _WIN32_WINNT

    根据文档 尝试获取SRWLockShared https technet microsoft com en us library dd405524 aspx and 尝试获取SRWLockExclusive https msdn micro
  • Windows 7 TextureBrush..ctor() 错误

    我有一个 NET 2 0 应用程序 在 XP 和 Vista 上运行得很好 但在 Windows 7 RC x64 上它崩溃并出现以下错误 异常信息 异常类型 System OutOfMemoryException 消息 内存不足 数据 S
  • Ruby 中的哈希“has_key”复杂性

    我有一个哈希vars a gt Name b gt Address c gt Phone 我想检查这条线的性能 vars has key b 是 O 1 还是 O 哈希大小 简单的基准 require benchmark iteration
  • 为什么我们在 .class 文件的开头需要一个幻数?

    我在这里读了一些关于神奇数字的帖子0xCAFEBABE在每个java的开头 class文件并想知道why它是需要的 这个标记的目的是什么 现在还需要吗 或者现在只是为了向后兼容 找不到回答这个问题的帖子 我也没有在 java 中看到答案sp
  • WebSocket 服务器的最佳实践是什么?

    假设您有一个网站 用户可以在其中打开聊天室 房间打开后 用户可以邀请其他人并聊天 我们还假设您想使用 WebSockets 与客户端进行通信 在大多数服务器端 WebSocket 实现中 都有一个简单的函数 例如connection bro
  • 如何防止Laravel路由被直接访问(即非ajax请求)

    在我的项目中 我纯粹使用 Laravel 作为后端 api 所有前端均由 Angular javascript 处理 目前 Laravel 路由可以直接访问 它会输出浏览器中显示的所有 Json 数据 我想对其进行限制 以便 Laravel
  • 将数据帧转换为 treeNetwork 兼容列表

    考虑以下数据框 Country Provinces City Zone 1 Canada Newfondland St Johns A 2 Canada PEI Charlottetown B 3 Canada Nova Scotia Ha
  • “转换”asp.net 形式为 html 形式

    我有一个 asp net 网络表单 用户在文本框中输入数据 我也这样做OnClick SubmitData 有一个按钮 现在我想使用 jquery 并使我的表单看起来更好 但我不知道是否可以保留 asp net 控件或是否必须转换为 htm
  • 如何将具有动态 ID 的文档保存到 Cloud Firestore 中?总是在变化

    我使用 Cloud Firestore 作为我的数据库 这是我网页上的表单代码 它在我的 Cloud Firestore 集合中创建一个名为 esequiz 的新文档 那么我该如何编码才能使其始终为数据库中的文档数加 1 呢 并设置数据库内
  • 授予读取 Amazon S3 存储桶内子目录的权限

    我以前从未使用过 AWS S3 我们用它来自动备份客户的通话录音 我们的一位客户出于审计目的需要访问他们的录音 我使用客户端 Cyber Duck 作为访问文件的方式 我只想让他们访问他们的文件 我们的文件结构如下 recordings 1