使用 IAM 进行访问权限控制

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

如需安装 Config Connector,您需要通过创建 IAM 服务账号,然后使用 Workload Identity Federation for GKE 将 IAM 服务账号与 Kubernetes 服务账号绑定来进行身份验证。IAM 可让 Config Connector 对特定资源执行操作。通过限制分配给服务账号的权限,您可以更好地控制 Config Connector 可以创建的资源类型。

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

单个服务账号

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

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

Config Connector 使用一个服务账号管理多个项目

多个服务账号

您可以通过在 ConfigConnector CustomResource 中设置命名空间模式来使用多个服务账号。命名空间模式可让您根据不同 IAM 服务账号的各自关注点划分权限,并在不同的 Kubernetes 命名空间之间隔离权限,因为您可以为每个命名空间关联不同的服务账号。

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

  • 希望在 Kubernetes 命名空间级别隔离 IAM 权限。
  • 预计在单个集群上管理来自多个 Google Cloud 项目的大量 Google Cloud 资源。

例如,您可以为每个项目创建一个 IAM 服务账号,将每个项目中的资源整理到同一个 Kubernetes 命名空间中,然后将相应的 IAM 服务账号绑定到该 Kubernetes 命名空间。这样,您就可以为每个项目单独设置 IAM 权限,使每个项目都有一组不相关的独特权限。

下图简要展示了命名空间模式的工作原理,其中每个项目都由不同的服务账号管理。项目 1 由 my-service-account 管理,项目 2 由 another-service-account 管理:

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

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

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

后续步骤