使用 IAM 进行访问权限控制


本主题介绍如何使用 Identity and Access Management 来控制 Config Connector 如何 创建和管理 Google Cloud 资源。

如需安装 Config Connector,您可以通过创建 IAM 来进行身份验证 服务账号,然后使用适用于 GKE for GKE 的工作负载身份联合 绑定 IAM 和 Kubernetes 服务账号借助 IAM Config Connector 对特定资源执行操作。限制权限 则您可以更好地控制 Config Connector 可以创建的资源

您可以选择使用单个或多个服务账号管理资源 服务账号。

单个服务账号

使用 GKE 插件或手动安装 Config Connector 时,您可以在 ConfigConnector CustomResource 中设置集群模式。在集群模式下,您可以使用单个 IAM 服务账号 创建和管理资源,即使您使用 Config Connector 来管理 多个项目

下图展示了此模式的工作原理,其中同一服务 账号管理两个项目:

展示 Config Connector 使用同一服务账号管理多个项目的图

多个服务账号

您可以使用多个服务账号,只需在 ConfigConnector CustomResource. 借助命名空间型模式,您可以根据不同 IAM 服务账号的各自注意事项来划分权限,并在不同的 Kubernetes 命名空间之间隔离权限,因为您可以为每个命名空间关联不同的服务账号。

在以下情况下选择命名空间型模式:

  • 希望将 IAM 权限隔离在 Kubernetes 命名空间中 。
  • 预期通过 Google Cloud 控制台管理大量 Google Cloud 资源, 管理单个集群上的多个 Google Cloud 项目。

例如,您可以为每个集群 将各项目中的资源整理到同一 Kubernetes 命名空间中, 然后将相应的 IAM 服务账号绑定到 Kubernetes 命名空间这样,您就可以将多个资源的 IAM 权限 确保每个项目都拥有一组不同的、不相关的权限。

下图简要展示了命名空间模式的工作原理,其中 每个项目由不同的服务账号管理:

展示 Config Connector 使用两个不同的服务账号管理多个项目的图

在命名空间模式下,每个 IAM 服务账号都会绑定到 命名空间当您在该命名空间内创建资源时 Config Connector 使用此服务账号创建 Google Cloud 资源。有一个专用的 Config Connector cnrm-controller-manager Pod 对于模拟 IAM 服务账号的每个命名空间 与命名空间关联的方法

如需了解如何配置命名空间模式,请参阅使用命名空间模式安装 Config Connector

安装后调整权限

在安装 Config Connector 的过程中,您可能为 基本角色,并将该角色分配给 您为其配置的服务账号 Config Connector。如果您在 namespaced 中配置了 Config Connector 模式,可能会有更多 多个 IAM 服务账号

完成安装后,您可能需要删除或更新 以满足安全注意事项和最佳实践要求。

Config Connector 的一项核心优势是统一的工具。这意味着您可以 使用 Config Connector 本身来微调 IAM 角色, 权限。您可以使用 IAMPolicyMemberIAMPartialPolicy Config Connector 中的资源来配置 IAM 权限。这需要一个拥有您项目、文件夹或组织的管理员权限的 IAM 服务账号。此服务账号必须是 配置为绑定到 Config Connector 通过集群模式或命名空间模式进行安装。

以下部分列出了使用 Config Connector 的不同政策示例 来管理 IAM 权限。

组织所有者权限

扩展 Config Connector 的权限,使其可以管理所有项目和 文件夹中,请完成以下步骤:

  1. 创建以下 YAML 清单:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Organization
       external: ORGANIZATION_ID
    

    替换以下内容:

    • NAMESPACE 替换为您的命名空间的名称
    • SERVICE_ACCOUNT_NAME 替换为您的服务账号名称
    • HOST_PROJECT_ID 替换为服务账号的宿主项目 ID
    • roles/owner 替换为适当的角色
    • ORGANIZATION_ID 替换为您的组织 ID
  2. 使用 kubectl 或您选择的任何配置管理工具将 YAML 清单应用于您的集群。

文件夹所有者权限

扩展 Config Connector 的权限,使其可以管理所有项目和 文件夹位于 给定文件夹中,请完成以下步骤:

  1. 创建以下 YAML 清单:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Folder
       external: folders/FOLDER_ID
    

    替换以下内容:

    • NAMESPACE 替换为您的命名空间的名称
    • SERVICE_ACCOUNT_NAME 替换为您的服务账号名称
    • HOST_PROJECT_ID 替换为服务账号的宿主项目 ID
    • roles/owner 替换为适当的角色
    • FOLDER_ID 替换为您的文件夹 ID
  2. 使用 kubectl 或您选择的任何配置管理工具将 YAML 清单应用于您的集群。

项目所有者权限

如需允许 Config Connector 管理特定项目的资源, 请完成以下步骤:

  1. 创建以下 YAML 清单:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Project
       external: projects/PROJECT_ID
    

    替换以下内容:

    • NAMESPACE 替换为您的命名空间的名称
    • SERVICE_ACCOUNT_NAME 替换为您的服务账号名称
    • HOST_PROJECT_ID 替换为服务账号的宿主项目 ID
    • roles/owner 替换为适当的角色
    • PROJECT_ID 替换为您的目标项目 ID
  2. 使用 kubectl 或您选择的任何配置管理工具将 YAML 清单应用于您的集群。

预定义角色

如果您希望向 Config Connector 授予更多受限权限,可以 为 Config Connector 分配一个或多个 IAM 角色 来创建一些 IAMPolicyMember 资源还是 IAMPartialPolicy 资源。以下角色通常分配给 Config Connector 服务账号:

  • Editor:授予 editor 角色 允许使用除项目级或组织级以外的大多数 Config Connector 功能 配置(例如 IAM 修改)。

  • IAM Service Account Admin 角色:授予 roles/iam.serviceAccountAdmin 权限允许 Config Connector 配置 IAM 服务账号。

  • Resource Manager:授予 Resource Manager 角色 例如 roles/resourcemanager.folderCreator,Config Connector 可以 管理文件夹和 组织。

自定义角色

如果预定义角色不能满足您的需求,您可以创建 具有您定义的权限的自定义角色

如需了解如何创建和分配自定义角色,请参阅创建和管理自定义角色

后续步骤