GKE On-Prem 支持 OpenID Connect (OIDC),可通过命令行对用户集群进行身份验证。请参阅以下主题:
要通过 Google Cloud Console 登录,GKE On-Prem 支持使用 Kubernetes 服务帐号的不记名令牌。请参阅登录。
本主题假设您熟悉 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 提供商。
使用适用于 OIDC 的 Kubectl 插件调用 Kubernetes API 服务器
通常,用户会输入 kubectl 命令,因此 kubectl
会调用 Kubernetes API 服务器。
为此,用户的 ID 令牌必须位于 kubeconfig 文件中。GKE On-Prem 提供适用于 OIDC 的 Kubectl 插件,以便在 kubeconfig 中包含令牌和其他 OIDC 值。
Kubernetes API 服务器和 ID 令牌
当 kubectl
代表用户调用 Kubernetes API 服务器时,API 服务器会使用 OpenID 提供商的公共证书验证令牌。然后,API 服务器会解析令牌以了解用户的身份和用户的安全组。
API 服务器会将用户的安全组与集群的基于角色的访问控制 (RBAC) 政策进行比较,以确定用户是否有权进行此特定调用。