使用 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 中设置集群模式。 使用集群模式时,即使您使用 Config Connector 管理多个项目,也可以使用单个 IAM 服务帐号创建和管理资源。

下图展示了此模式的工作原理,其中同一个服务帐号(名为 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,该 pod 会模拟与该命名空间关联的 IAM 服务帐号。

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

后续步骤