共享和协作

本文档提供了常见的数据共享和协作情景。文中介绍了如何为实现这些情景配置项目和存储分区的 Identity and Access Management (IAM) 政策以及对象的访问控制列表 (ACL)

存储和维护不公开的数据

在此情景中,一家公司的营销分析师希望使用 Cloud Storage 来备份机密的收入预测和销售预测数据。该数据只能由营销分析师访问。该公司的 IT 部门负责监督和管理公司的 Cloud Storage 帐号。他们的主要管理职责包括创建和共享存储分区,以便公司的各个部门都可以访问 Cloud Storage。

为了满足营销分析师在机密性和隐私性方面的需求,存储分区和对象权限必须既能允许 IT 人员维护存储电子表格的存储分区,还能确保 IT 人员无法查看/下载存储在存储分区中的数据。为实现此目的,您需要创建一个名为 finance-marketing 的存储分区,并将所列资源的以下角色授予指定的成员

角色 资源 成员 说明
roles/storage.legacyBucketOwner 存储分区 finance-marketing IT 人员 为 IT 人员提供存储分区的 roles/storage.legacyBucketOwner 角色后,他们可以执行常见的存储分区管理任务,例如删除对象以及更改存储分区上的 IAM 政策。该角色还允许 IT 人员列出 finance-marketing 存储分区的内容,但他们不能查看或下载任何内容。
roles/storage.objectCreator 存储分区 finance-marketing 营销分析师 为营销分析师提供存储分区的 roles/storage.objectCreator 角色后,她可以将对象上传到存储分区中。当她执行此操作时,她将成为上传对象的所有者,然后,她可以查看、更新和删除该对象。

借助这些角色,除营销分析师外,没有人可以查看/下载她添加到存储分区中的对象。但是,她可以通过更改对象的 ACL 来向其他用户授予访问权限。IT 人员仍然可以列出 finance-marketing 存储分区的内容,他们可以在需要时删除和覆盖存储在存储分区中的文件。

实现此情景

您的操作

您应该采取以下操作来实现此情景:

  1. 创建一个名为 finance-marketing 的存储分区。要查看分步说明,请参阅创建存储分区

  2. 为每个 IT 人员提供存储分区的 roles/storage.legacyBucketOwner 角色。要查看分步说明,请参阅将成员添加到存储分区级层政策中

IT 人员的操作

IT 人员应采取以下操作来实现该情景:

  1. 为营销分析师提供存储分区的 roles/storage.objectCreator 角色。要查看分步说明,请参阅将成员添加到存储分区级层政策中

供应商保管箱

在此情景中,一家建筑公司与几家建筑设计公司(为各种项目提供建筑方案)开展合作。该建筑公司希望为供应商公司建立一个保管箱,以便他们可以在到达各个项目里程碑时上传建筑方案。该保管箱必须保障建筑公司客户的隐私,这意味着,该保管箱不能允许供应商看到彼此的工作。为实现此目的,您需要为每家建筑公司创建一个单独的存储分区,并将所列资源的以下角色授予指定的成员

角色 资源 成员 说明
roles/owner 整体项目 建筑公司经理 在项目级层为建筑公司经理提供 roles/owner 角色后,她能够为每个供应商创建存储分区。
roles/storage.objectViewer 整体项目 建筑公司经理 roles/storage.objectViewer 角色允许建筑公司经理下载供应商上传的对象。
roles/storage.legacyBucketOwner 每个供应商存储分区 建筑公司经理 roles/storage.legacyBucketOwner 角色允许建筑公司经理列出每个存储分区的内容,以及在每个项目里程碑结束时删除对象。
roles/storage.objectAdmin 每个供应商存储分区 与存储分区关联的供应商 为每个供应商提供他们自己的存储分区的 roles/storage.objectAdmin 角色后,他们可以完全控制存储分区中的对象,包括上传对象、列出存储分区中的对象以及控制有权访问每个对象的人员。该角色不允许他们更改或查看元数据(比如整个存储分区上的角色),也不允许他们列出或查看项目中的其他存储分区,因此可以保护供应商之间的隐私。

实现此情景

您的操作

您应该采取以下操作来实现此情景:

  1. 为建筑公司经理提供项目的 roles/owner 角色以及项目的 roles/storage.objectViewer 角色。要查看分步说明,请参阅将成员添加到存储分区级层政策中

建筑公司经理的操作

建筑公司经理应采取以下操作来实现此情景:

  1. 为每个供应商创建单独的存储分区。要查看分步说明,请参阅创建存储分区

    由于建筑经理具有 roles/owner 角色,因此,对于她创建的每个存储分区,她都会自动获得 roles/storage.legacyBucketOwner 角色。

  2. 为每个供应商提供各自存储分区的 roles/storage.objectAdmin 角色。要查看分步说明,请参阅将成员添加到存储分区级层政策中

  3. 如果有供应商打算使用 Google Cloud Platform Console,请为该供应商提供其存储分区的链接,链接格式如下:

    console.cloud.google.com/storage/browser/[BUCKET_NAME]

    其中,[BUCKET_NAME] 是供应商的存储分区的名称。

供应商的操作

每个供应商应采取以下操作来实现此情景:

  1. 将对象上传到指定的存储分区中。要实现此目标,最简单的方法是使用 Google Cloud Platform Console。其他方法(比如 gsutil 命令行工具)要求您在使用之前进行额外设置。要查看分步说明,请参阅上传对象

经过身份验证的浏览器下载

在此情景中,客户希望特定的人员只需执行简单的浏览器下载操作即可获取特定的文件。您可以使用 Cloud Storage 基于 Cookie 的身份验证来实现此目的。为了使用此功能,您向用户授予对象的访问权限,然后为该用户提供该对象的特殊网址。当用户点击该网址时,Cloud Storage 会提示他们登录他们的 Google 帐号(如果他们尚未登录),然后该对象会被下载到他们的计算机上。以下用户将能下载该对象:

所有其他用户都会收到 403 Forbidden (access denied) 错误。

实现此情景

您可以通过以下四个常规步骤实现基于 Cookie 的身份验证:

  1. 创建存储分区。 要查看分步说明,请参阅创建存储分区

    假设您在自己拥有的项目中创建了一个存储分区,您将自动获得以下两种权限:您可以将对象上传到该存储分区中;您可以更改有权访问该存储分区的人员。

  2. 上传您要共享的对象。 要查看分步说明,请参阅上传对象

    上传对象后,您将成为对象的所有者,这意味着,您可以修改对象的 ACL。

  3. 为用户提供该对象的访问权限。 您可以使用以下两种方式之一来执行此操作:

    1. 修改存储分区的 IAM 政策,以便为每个目标用户提供 roles/storage.objectViewer 角色(该角色适用于存储分区中的所有对象)。要查看分步说明,请参阅将成员添加到存储分区级层政策中

    2. 修改对象的 ACL,以便为每个目标用户提供单个对象的 READ 权限。要查看分步说明,请参阅设置 ACL

  4. 为用户提供对象的特殊网址。

    基于身份验证的浏览器下载通过特定的网址端点访问 Cloud Storage。请使用以下网址(将 [VALUES_IN_BRACKETS] 替换为适当的值):

    https://storage.cloud.google.com/[BUCKET_NAME]/[OBJECT_NAME]

    由于只有具有适当 ACL 或 IAM 权限的用户才能查看该网址,因此,您以何种方式提供该网址并不重要。您可以将网址直接发送给用户,也可以将网址发布到网页上。

使用群组来控制访问权限

在此情景中,您希望将对象提供给特定用户使用,例如受邀试用新软件的用户。此外,您希望邀请众多用户,但您不希望单独为每个用户设置权限。同时,您不希望对象变成可被公开读取的状态,也不希望向受邀客户发送用于访问对象的链接,因为链接可能会被发送给未被邀请的用户。

要应对此情景,其中一种方法是使用 Google 群组。您可以创建一个群组,并仅将受邀用户添加到群组中。然后,您可以授权整个群组访问这些对象:

角色 资源 成员 说明
roles/storage.objectViewer 您“列入白名单的”存储分区 Google 群组 为 Google 群组分配存储分区的 roles/storage.objectViewer 角色后,任何属于此 Google 群组的客户均可查看存储分区中的对象。群组外的任何人都无法访问这些对象。

实现此情景

  1. 创建 Google 群组并向群组中添加客户。要查看分步说明,请参阅创建群组

  2. 创建存储分区。要查看分步说明,请参阅创建存储分区

  3. 将对象上传到您的存储分区中。要查看分步说明,请参阅上传对象

  4. 授权 Google 群组访问这些对象。

    • 您可以使用 IAM 角色 storage.objectViewer 来授予存储分区中所有对象的查看权限。要查看分步说明,请参阅将成员添加到存储分区级层政策中

    • 如果您只想授予存储分区中某些对象的访问权限,请在这些对象上设置读取者 ACL。要查看分步说明,请参阅设置 ACL

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面