GKE On-Prem 支持 OpenID Connect (OIDC),可使用命令行对用户集群进行身份验证。请参阅以下主题:
为了通过 Google Cloud 控制台进行登录,GKE On-Prem 支持使用 Kubernetes 服务帐号的不记名令牌。请参阅从 Google Cloud 控制台登录集群。
本主题假设您熟悉 OAuth 2.0 和 OpenID 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) 政策进行比较,以确定用户是否有权进行此特定调用。