项目

本页面介绍 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

  • 在 GCP Console 中使用 Cloud Storage 时,系统会自动将您与一个项目关联起来。您可以使用 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 具有此角色的成员可以列出项目中的存储分区。
  • 整体而言,具有此角色的成员对项目中的每个存储分区具有 roles/storage.legacyBucketReader 角色。
  • 针对项目中的每个存储分区,具有此角色的成员是默认对象访问控制列表中的 READER
  • 针对在仅限存储分区政策启用情况下所创建项目中的任何存储分区,系统将以群组形式向具有此角色的成员授予 roles/storage.legacyObjectReader 角色。
roles/editor 具有此角色的成员可以列出、创建和删除项目中的存储分区。
  • 整体而言,具有此角色的成员对项目中的每个存储分区具有 roles/storage.legacyBucketOwner 角色。
  • 针对项目中的每个存储分区,具有此角色的成员是默认对象访问控制列表中的 OWNER
  • 针对在仅限存储分区政策启用情况下所创建项目中的任何存储分区,系统将以群组形式向具有此角色的成员授予 roles/storage.legacyObjectOwner 角色。
roles/owner 具有此角色的成员可以列出、创建和删除项目中的存储分区。概括来说,在 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
需要帮助?请访问我们的支持页面