Google 云存储桶中对象的条件绑定

问题描述 投票:0回答:1

我正在使用 Google Cloud Storage (GCS) 存储桶,我需要为这些存储桶中的对象设置条件访问控制。具体来说,我希望允许查看者访问特定文件夹结构中的对象,同时限制对同一存储桶内另一个文件夹中的对象的访问。这是我正在处理的文件夹结构的示例:

  • gs://bucket/23/10/01/folder_1

  • gs://bucket/23/10/02/folder_1

一般来说,结构遵循以下模式:

  • gs://bucket/{year}/{month}/{day}/folder_1

我想向查看者授予对

folder_1
对象的访问权限,但拒绝访问同一结构内的任何其他对象。例如,用户应该能够访问
folder_1
下的对象,如
gs://bucket/23/10/01/folder_1/some_file.txt
,但他们不应该访问
another_folder
下的对象,如
gs://bucket/23/10/01/another_folder/another_file.txt

我了解 IAM 策略可用于管理访问控制,但我不确定如何设置允许基于文件夹结构进行访问的条件绑定。有人可以提供有关如何在 GCS 中实现这种条件访问控制的指导吗?我需要制定任何具体的政策或规则来实现这一目标吗?

我探索了以下方法:

  • IAM 策略:我首先为我的 GCS 存储桶创建 IAM 策略。我尝试对存储桶中的各个对象设置权限,但找不到一种简单的方法来根据文件夹结构有条件地授予访问权限。

  • IAM 条件中的通配符:我尝试在 IAM 策略的条件中使用通配符,希望能够匹配文件夹结构。例如,我尝试了像

    resource.name.startsWith("gs://bucket/*/folder_1/")
    这样的条件,但它似乎没有按预期工作。

  • Google Cloud Storage 存储桶策略:我考虑创建存储桶策略来强制执行某些访问规则,但我找不到基于文件夹结构指定条件访问的方法。

尽管进行了这些尝试,我仍然无法实现所需的基于文件夹结构的条件访问控制。我现在正在向 Stack Overflow 社区寻求有关如何有效完成此任务的指导和见解。

预先感谢您的协助!

google-cloud-storage access-control google-cloud-iam conditional-binding
1个回答
0
投票

基于云存储对象命名空间的本文档:

对象名称驻留在存储桶内的平面命名空间中。这意味着:

  • 不同的桶可以有同名的对象。

  • 对象不驻留在存储桶的子目录中。

这意味着子目录或子文件夹并不真正存在,它只是文件夹/子文件夹的可视化表示,供我们在 Google Cloud Console 中查看。这也意味着我们无法为 Cloud Storage 存储桶内的每个对象应用不同或单独的 IAM 策略。

以下是我可以建议我们提供或限制对每个对象的访问的一些建议:

您还可以查看类似的Stackoverflow链接以供参考。

© www.soinside.com 2019 - 2024. All rights reserved.