身份验证

GKE On-Prem 支持 OpenID Connect (OIDC),可使用命令行对用户集群进行身份验证。请参阅以下主题:

为了通过 Google Cloud 控制台进行登录,GKE On-Prem 支持使用 Kubernetes 服务帐号的不记名令牌。请参阅从 Google Cloud 控制台登录集群

本主题假设您熟悉 OAuth 2.0OpenID Connect。在 OpenID 身份验证环境中,您还应该熟悉范围声明

概览

借助 OIDC,您可以按照组织中创建、启用和停用员工帐号的标准程序来管理对 Kubernetes 集群的访问权限。您还可以使用组织的安全组来配置对 Kubernetes 集群或集群中特定服务的访问权限。

  • 用户通过提供用户名和密码来登录 OpenID 提供方。

  • OpenID 提供方为用户签发 ID 令牌。该令牌由提供方签名。

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

  • Kubernetes API 服务器使用提供方的证书来验证该令牌。

如果您的企业运行 Active Directory 联合身份验证服务 (ADFS) 服务器,则 ADFS 服务器可以充当您的 OpenID 提供方。另一个选择是使用第三方作为您的 OpenID 提供方。例如,Google、Microsoft、Facebook 和 Twitter 都是 OpenID 提供方。

使用 gcloud CLI 调用 Kubernetes API 服务器

您运行 gcloud anthos auth login 命令向您的集群进行身份验证后,您的请求会因此转到 Kubernetes API 服务器。

为此,您的 OIDC ID 令牌必须存储在 kubeconfig 文件中。GKE On-Prem 使用 Google Cloud CLI 的 gcloud CLI 来请求并获取 kubeconfig 文件中的 ID 令牌和其他 OIDC 值。

Kubernetes API 服务器和 ID 令牌

向集群进行身份验证后,您可以使用 gcloud CLI 的 kubectl CLI 进行交互。如果 kubectl 代表用户调用 Kubernetes API 服务器,则 API 服务器会使用 OpenID 提供方的公共证书来验证令牌。然后,API 服务器会解析令牌以了解用户的身份和用户的安全组。

API 服务器会将用户的安全组与集群的基于角色的访问控制 (RBAC) 政策进行比较,以确定用户是否有权进行此特定调用。