在 Anthos clusters on Bare Metal 中使用 OIDC 进行身份管理

您可以使用 OpenID Connect (OIDC) 向 Anthos clusters on Bare Metal 集群进行身份验证。OIDC 是基于 OAuth 2.0 构建的身份验证层,它指定 RESTful HTTP API,并使用 JSON 作为数据格式。

OIDC 允许您使用现有的身份提供方来管理 Anthos clusters on Bare Metal 集群中的用户和群组身份验证。借助 OIDC,您可以按照组织中创建、启用和停用帐号的标准程序来管理对 Anthos clusters on Bare Metal 集群的访问权限。您还可以使用组织的安全组来配置对集群或集群中特定服务的访问权限。代管式访问权限适用于任何类型的 Anthos clusters on Bare Metal 集群:管理员集群、用户集群、混合集群或独立集群。

Anthos clusters on Bare Metal 支持本地和可公开访问的身份提供方。例如,在本地,您可以使用 Active Directory Federation Services 组件。您还可以使用来自 Google 或 Okta 的可公开访问的身份提供方服务。此外,身份提供方证书可能由知名公共证书授权机构 (CA) 或私有 CA 颁发。

用户可使用两种 OIDC 身份验证方法:

  • 通过命令行界面 (CLI) 进行 OIDC 身份验证。用户运行 gcloud 命令并通过基于浏览器的登录/同意页面进行身份验证。

  • 通过 Google Cloud 控制台界面进行 OIDC 身份验证。使用此方法时,用户直接从 Kubernetes 集群页面登录集群。此方法要求将集群注册到 Google Cloud。在 Anthos clusters on Bare Metal 集群安装期间,集群会自动注册。

请注意,OIDC 不支持无头工作流:OIDC 需要基于浏览器的身份验证,以便将用户重定向到身份提供方网页,并提示用户同意并提供帐号登录/密码。

OIDC 和 Kubernetes 访问权限控制

OIDC 身份验证通常与 Kubernetes 基于角色的访问权限控制 (RBAC) 相结合。通过 RBAC,您可以创建精细的授权政策,以定义哪些用户或群组可以对一组给定的集群资源执行特定操作。

OIDC 身份验证概览

典型的 OIDC 身份验证包括以下步骤:

  1. 用户通过提供用户名和密码来登录 OpenID 提供方。
  2. OpenID 提供方为用户签发 ID 令牌。

  3. 令牌由提供方签名,并通过预先配置的回调网址返回。

  4. 应用代表用户执行操作,向 Kubernetes API 服务器发送 HTTPS 请求。应用在请求标头中包含用户的 ID 令牌。

  5. Kubernetes API 服务器使用提供方的证书来验证 ID 令牌,并解析令牌以了解用户的身份和用户的群组(如果存在)。

通常,OIDC 设置和身份验证涉及三个角色:

  • 组织管理员,选择 OpenID 提供方,并向提供方注册客户端应用。

  • 平台管理员,创建一个或多个集群,并为使用这些集群的用户创建身份验证配置文件。

  • 应用运营者或开发者,在一个或多个集群上运行工作负载,并使用 OIDC 进行身份验证。

您可以使用任何经过认证的 OpenID 提供方(提供方获得 OpenID Foundation 认证)。具体的注册流程因提供方而异,但通常包括以下步骤:

  1. 了解提供方的颁发者 URI。这是 gcloud CLI 或 Google Cloud 控制台发送身份验证请求的位置。

  2. 为提供方提供 gcloud CLI 和 Google Cloud 控制台的重定向网址。

  3. 建立客户端 ID 和客户端密钥。gcloud CLI 和 Google Cloud 控制台均使用此客户端 ID/密钥向 OpenID 提供方进行身份验证。

  4. 为安全组建立自定义范围和声明。一般而言,您应基于群组而不是用户来定义集群 RBAC 政策,以使政策更稳定和可审核。如果请求了适当的范围,大多数 OIDC 提供方会在 ID 令牌中包含群组声明。具体的群组声明和范围因 OIDC 提供方而异,因此,在建立特定于提供方的范围和声明时,需要进行自定义。

在安装新的 Anthos clusters on Bare Metal 集群之前,平台管理员通常会从组织管理员获取 OIDC 配置,并在集群配置中配置相关的 OIDC 字段。

集群安装完成后,平台管理员获取身份验证配置文件并与 CLI 用户共享。通常,平台管理员共享身份验证配置的方法是在安全主机上托管文件,或使用内部工具将配置文件推送到每个用户的机器上。CLI 用户随后使用共享的配置文件对新集群进行身份验证。

平台管理员还可以在单个身份验证配置文件中存储多个集群的身份验证配置详细信息。

请注意,Google Cloud 控制台用户不需要这些配置文件。当用户访问 Google Cloud 控制台时,他们可以选择为集群配置的 Authenticate with the Identity Provider,然后点击 Login.