项目

本页面介绍 Google Cloud Platform Console 项目与 Cloud Storage 资源之间的关系。若要从整体上详细了解 Google Cloud Platform Console 项目,请阅读 Google Cloud Platform 概览中的项目

什么是项目?

项目用于整理您的所有 Google Cloud Platform 资源。项目包含一组用户和一组 API,以及这些 API 的结算、身份验证和监控设置。因此,举例来说,您的所有 Cloud Storage 存储分区和对象以及它们的用户访问权限均包含在项目中。 您可以使用一个项目,也可以创建多个项目并使用它们来将您的 Google Cloud Platform 资源(包括 Cloud Storage 数据)以逻辑组的形式进行整理。

何时指定项目

大多数情况下,您在 Cloud Storage 中执行操作时无需指定项目;但在以下情况下,您应指定项目 ID 或项目编号:

Console

  • 将 Cloud Storage 与 GCP Console 搭配使用时,系统会自动将您与项目关联起来。您可以使用 GCP Console 窗口顶部的下拉菜单更改项目。

  • 首次访问启用了请求者付款功能的存储分区时,系统会提示您选择一个项目以便结算请求费用。之后,您可以更改结算项目,方法是点击更改项目按钮(位于存储分区中的对象列表上方)。

gsutil

  • 使用 gsutil mbgsutil lsgsutil kms 命令时,您必须指定项目,除非您已设置默认项目。如果您尚未设置默认项目或想要使用其他项目,请使用 -p 标志指定项目。使用其他 gsutil 命令时无需指定项目。

  • 使用 -u 标志和项目 ID 来指明用于结算存储分区访问费用的项目。如果访问的存储分区启用了请求者付款功能,您必须执行此操作,否则此为可选操作。

JSON API

  • 使用 list bucketsinsert bucket 方法时,您必须指定项目。项目将以参数形式在请求网址中发送,如以下示例所示:

    GET https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]
  • 要指明用于结算存储分区访问费用的项目,需使用“userProject”查询参数和项目 ID,如以下示例所示:

    GET https://www.googleapis.com/storage/v1/b?userProject=[PROJECT_ID]

    如果访问的存储分区启用了请求者付款功能,则必须使用此查询参数,否则此为可选参数。

XML API

  • 列出存储分区和插入存储分区时需指定项目。与这些 XML API 请求关联的项目在 x-goog-project-id HTTP 标头中指定,如以下示例所示:

    x-goog-project-id: [PROJECT_ID]

    如果使用其他 XML API 请求,或者您已针对互操作访问设置默认项目,则此为可选标头。

  • 要指明用于结算存储分区访问费用的项目,需使用“x-goog-user-project”标头和项目 ID,如以下示例中所示:

    x-goog-user-project: [PROJECT_ID]

    如果访问的存储分区启用了请求者付款功能,则必须使用此标头,否则此为可选标头。

项目成员和权限

您可以针对每个项目使用 Identity and Access Management (IAM) 来添加能管理和参与您项目的团队成员。通过 IAM,您可以为每个团队成员指定一个或多个角色:角色不同,所具有的权限就不同,因此成员可以在您的项目中执行的操作也各不相同。

许多 IAM 角色既可在项目级层设置(进而应用于项目中的所有存储分区),又可在存储分区级层设置(进而仅应用于个别存储分区),但有几个角色只能应用于项目。这些角色称为原初角色。Cloud Storage 原初角色具有以下属性:

角色 固有行为 可修改的行为
roles/viewer 具有此角色的成员可以列出项目中的存储分区,以及列出和获取项目中的 HMAC 密钥。
  • 针对项目中的每个存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyBucketReader 角色。
  • 针对项目中的每个存储分区,系统会向具有此角色的成员授予默认对象访问控制列表中的 READER
  • 针对项目中任何启用了仅限存储分区政策的存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyObjectReader 角色。
roles/editor 具有此角色的成员可以列出、创建和删除项目中的存储分区,以及完全控制项目中的 HMAC 密钥。
  • 针对项目中的每个存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyBucketOwner 角色。
  • 针对项目中的每个存储分区,系统会向具有此角色的成员授予默认对象访问控制列表中的 OWNER
  • 针对项目中任何启用了仅限存储分区政策的存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyObjectOwner 角色。
roles/owner 具有此角色的成员可以列出、创建和删除项目中的存储分区,以及完全控制项目中的 HMAC 密钥。在 Google Cloud Platform 中,具有 roles/owner 角色的成员通常可以执行管理任务,例如,更改成员在项目中的角色或更改结算功能。
  • 针对项目中的每个存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyBucketOwner 角色。
  • 针对项目中的每个存储分区,系统会向具有此角色的成员授予默认对象访问控制列表中的 OWNER
  • 针对项目中任何启用了仅限存储分区政策的存储分区,系统会以群组形式向具有此角色的成员授予 roles/storage.legacyObjectOwner 角色。

如需适用于 Cloud Storage 的角色列表,请参阅 Cloud Storage IAM 角色

如需了解如何在项目级层添加、查看和移除各角色成员,请参阅对项目使用 IAM

如上文的可修改行为列中所示,除了由原始 IAM 角色本身授予的访问权限外,项目团队成员可能会还具有额外的访问权限。可通过以下两个来源提供这些额外访问权限:

  • 应用于存储分区的 IAM 角色:当用户创建存储分区时,默认情况下,系统会对该存储分区应用 IAM 角色。您可以在存储分区创建后修改此访问权限。

  • 应用于对象的访问控制列表 (ACL):当用户创建对象时,系统会对该对象应用 ACL。您可以明确指定 ACL,也可以应用默认 ACL。无论您采用哪一种方式,ACL 都会专门针对所创建的对象授予访问权限。

请注意,在这两种情况下,您均可向个别用户和具有原初角色的所有拥有者授予访问权限。而且,授予的访问权限可能大于用户通常对项目具有的访问权限,而不是更受限制。

服务帐号

服务帐号可让应用验证和访问 GCP 资源及服务。例如,您可以创建服务帐号,供 Compute Engine 实例用来访问存储于 Cloud Storage 存储分区中的对象。

服务帐号在项目中创建,并具有可供识别的专属电子邮件地址。大多数服务帐号都是由用户创建和管理,但有些服务帐号是由 GCP 服务自动创建和管理的。Cloud Storage 会创建一个此类服务帐号,其电子邮件地址采用下列格式:

service-[PROJECT_NUMBER]@gs-project-accounts.iam.gserviceaccount.com

其中,[PROJECT_NUMBER] 是拥有该服务帐号的项目的编号

与 Cloud Storage 搭配使用

以下功能使用 Cloud Storage 服务帐号:

以下是非 Cloud Storage 服务帐号可使用 Cloud Storage 资源执行的操作示例:

后续步骤

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

发送以下问题的反馈:

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