了解多个项目之间的 GCP IAM

Understanding GCP IAM between multiple projects

在我的组织中,我们与 GCP 合作并在那里有多个项目。我现在正在尝试组织所有项目之间的 IAM 角色,但我不确定某些 IAM 设置。项目是否充当具有完全不同 IAM roles/permissions 的完全独立的实体,或者它们之间是否存在任何重叠,从而导致一个项目中的更改可能会影响另一个项目?

在一个项目中更改角色不会直接更改在另一个项目中设置的角色。但有些事情您需要考虑。

虽然项目可以有自己的访问控制规则,但可以 manage access 超过项目级别。以下是您可以管理访问权限的四个资源点:

Organization level. The organization resource represents your company. IAM roles granted at this level are inherited by all resources under the organization.

Folder level. Folders can contain projects, other folders, or a combination of both. Roles granted at the highest folder level will be inherited by projects or other folders that are contained in that parent folder.

Project level. Projects represent a trust boundary within your company. Services within the same project have a default level of trust. For example, App Engine instances can access Cloud Storage buckets within the same project. IAM roles granted at the project level are inherited by resources within that project.

Resource level. In addition to the existing Cloud Storage and BigQuery ACL systems, additional resources such as Genomics Datasets, Pub/Sub topics, and Compute Engine instances support lower-level roles so that you can grant certain users permission to a single resource within a project.

可以通过服务帐户或通过 organization-wide 和 Google 组成员身份在个人级别进行访问。这意味着当您在组织或 Google 组中添加或删除某人时,您可能会不经意地在不同项目的各种角色中添加或删除他们。

此外,如果为某个成员(个人或组)分配了一个可以更改 IAM 角色的角色,那么该成员组中的任何人都可以修改权限。他们可能会以您不希望的方式更改规则。

如有疑问,请使用 testPermissions 验证角色是否按预期工作。

您在项目中设置的 IAM 角色不会影响其他项目。

Google 云资源是分层组织的,其中组织节点是层次结构中的根节点,项目是组织的子节点,其他资源是项目的后代。您可以在资源层次结构的不同级别设置身份和访问管理 (IAM) 策略。资源继承父资源的策略。资源的有效策略是在该资源上设置的策略与从其父级继承的策略的联合。

请查看以下内容documentation,您可以在其中找到对访问控制的资源层次结构的很好解释

我认为这张图可以帮助您更好地理解 IAM 的工作原理: