访问权限控制

当您创建某一 Google Cloud 项目后,您便成为该项目的唯一用户。默认情况下,其他任何用户都无权访问您的项目或其资源,包括 Google Kubernetes Engine 资源。在 Google Kubernetes Engine 中,您可以通过多种方式来借助基于角色的访问权限控制 (RBAC) 管理对您的项目及其集群内资源的访问权限。

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

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

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

  • IAM 可管理 Google Cloud 资源,包括集群及其各种对象。系统可为 Google Cloud、G Suite 或 Cloud Identity 中的 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 用户
  • Google Cloud 服务帐号
  • Kubernetes 服务帐号
  • G Suite 用户
  • G Suite Google 群组(测试版)

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

IAM

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

成员可以是以下任一项:

  • Google 帐号
  • 服务帐号
  • Google 群组
  • G Suite 网域
  • Cloud Identity 网域

IAM 政策可为一个或多个 Google Cloud 成员分配一组权限。

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

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

IAM 与 Kubernetes RBAC 的交互

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

后续步骤