访问权限控制


当您创建某一 Google Cloud 项目后,您便成为该项目的唯一用户。默认情况下,其他任何用户都无权访问您的项目或其资源,包括 Google Kubernetes Engine (GKE) 资源。GKE 支持使用基于角色的访问权限控制 (RBAC) 来管理对项目及其集群中的资源的访问权限的多个选项。

虽然这些机制在功能上存在一些重叠,但它们针对的是不同类型的资源。下文中简要介绍了各项机制:

  • Kubernetes RBAC 内置于 Kubernetes 中,可授予针对 Kubernetes 集群内部对象的细化权限。权限以 ClusterRole 或 Role 对象形式存在于集群中。RoleBinding 对象可向 Kubernetes 用户、Google Cloud 用户、IAM 服务账号或 Google 群组授予角色。

    如果您主要使用 GKE,并且需要集群内各对象和操作的细化权限,那么 Kubernetes RBAC 是最佳选择。

  • IAM 可管理 Google Cloud 资源,包括集群及其各种对象。系统可为 IAM 主账号分配权限

    IAM 中不存在相应机制可用于授予特定 Kubernetes 对象的权限。例如,您可以向用户授予创建 CustomResourceDefinition (CRD) 的权限,但不能向该用户授予仅创建一个特定 CustomResourceDefinition 的权限,也不能仅限创建特定命名空间或项目中的特定集群。IAM 角色可授予项目中所有集群的权限,如果在文件夹级层应用角色,则可以授予所有子项目中全部集群的权限。

    如果您使用多个 Google Cloud 组件,并且不需要管理特定于 Kubernetes 的细化权限,则 IAM 是一个不错的选择。

Kubernetes RBAC

Kubernetes 内置了对 RBAC 的支持,可让您创建属于 Kubernetes 集群的细化 Role。Role 可以限定为特定的 Kubernetes 对象或 Kubernetes 对象类型,并可定义其针对该对象授予的操作(称为动词)。RoleBinding 也是 Kubernetes 对象,并可向用户授予 Role。GKE 用户可以是以下任一项:

  • Google Cloud 用户
  • IAM 服务账号
  • Kubernetes ServiceAccount
  • Google Workspace 用户
  • Google Workspace Google 群组
  • 使用 X509 客户端证书进行身份验证的用户

如需了解详情,请参阅基于角色的访问权限控制

IAM

IAM 可让您定义角色并将其分配给主账号。角色可提供一组权限,当分配给主账号时,它可控制对一个或多个 Google Cloud 资源的访问权限。角色分为三大类:

主账号可以是以下任何一种:

  • 用户账号
  • 服务账号
  • Google Workspace Google 群组
  • Google Workspace 网域
  • Cloud Identity 网域

IAM 政策可为一个或多个 Google Cloud 主账号分配一组权限。

您还可以使用 IAM 创建和配置服务账号,这些账号是与您的项目关联的 Google Cloud 账号,可以代表您执行任务。为服务账号分配角色和权限的方式与真人用户相同。

服务账号还可提供其他功能。如需了解详情,请参阅创建 IAM 政策

IAM 建议

请考虑使用以下 IAM 预定义角色来应对常见场景:

如需查看可用的预定义 IAM 角色的列表,请参阅预定义 GKE 角色

此外,请考虑创建自定义 IAM 服务账号供节点使用,而不是创建 Compute Engine 默认服务账号。 向自定义服务账号授予 GKE 正常工作所需的最低权限。如需查看相关说明,请参阅使用最小权限 IAM 服务账号

IAM 与 Kubernetes RBAC 的交互

IAM 和 Kubernetes RBAC 协同工作,帮助管理对集群的访问。RBAC 控制集群级层和命名空间级层的访问权限,而 IAM 控制项目级层的访问权限。实体在任一级层都必须具有足够权限,才能使用集群中的资源。

后续步骤