×

OpenShift Container Platform 主节点包含内置的 OAuth 服务器。开发人员和管理员获取 OAuth 访问令牌以向 API 进行身份验证。

作为管理员,您可以在安装集群后配置 OAuth 以指定身份提供程序。

关于 OpenShift Container Platform 中的身份提供程序

默认情况下,集群中仅存在 kubeadmin 用户。要指定身份提供程序,必须创建一个描述该身份提供程序的自定义资源 (CR) 并将其添加到集群。

OpenShift Container Platform 用户名包含 /:% 不受支持。

受支持的身份提供程序

您可以配置以下类型身份提供程序

身份提供程序 描述

配置 htpasswd 身份提供程序以根据使用 htpasswd 生成的平面文件验证用户名和密码。

配置 keystone 身份提供程序以将您的 OpenShift Container Platform 集群与 Keystone 集成,以启用与配置为将用户存储在内部数据库中的 OpenStack Keystone v3 服务器的共享身份验证。

配置 ldap 身份提供程序以使用简单绑定身份验证根据 LDAPv3 服务器验证用户名和密码。

为用户配置 basic-authentication 身份提供程序,以便他们可以使用针对远程身份提供程序验证的凭据登录到 OpenShift Container Platform。基本身份验证是一种通用的后端集成机制。

配置 request-header 身份提供程序以从请求头值(例如 X-Remote-User)识别用户。它通常与设置请求头值的认证代理结合使用。

配置 github 身份提供程序以根据 GitHub 或 GitHub Enterprise 的 OAuth 身份验证服务器验证用户名和密码。

配置 gitlab 身份提供程序以使用 GitLab.com 或任何其他 GitLab 实例作为身份提供程序。

使用 Google 的 OpenID Connect 集成 配置 google 身份提供程序。

配置 oidc 身份提供程序以使用 授权码流程 与 OpenID Connect 身份提供程序集成。

定义身份提供程序后,您可以 使用 RBAC 定义和应用权限

删除 kubeadmin 用户

定义身份提供程序并创建新的 cluster-admin 用户后,您可以删除 kubeadmin 以提高集群安全性。

如果在另一个用户成为 cluster-admin 之前执行此过程,则必须重新安装 OpenShift Container Platform。无法撤消此命令。

先决条件
  • 您必须已配置至少一个身份提供程序。

  • 您必须已将 cluster-admin 角色添加到用户。

  • 您必须以管理员身份登录。

步骤
  • 删除 kubeadmin 密钥

    $ oc delete secrets kubeadmin -n kube-system

身份提供程序参数

以下参数对所有身份提供程序都适用

参数 描述

名称

提供程序名称作为前缀添加到提供程序用户名,以形成身份名称。

mappingMethod

定义登录时如何将新身份映射到用户。输入以下值之一:

声明

默认值。使用身份的首选用户名配置用户。如果已经有用户使用该用户名映射到另一个身份,则会失败。

查找

查找现有身份、用户身份映射和用户,但不自动配置用户或身份。这允许集群管理员手动设置身份和用户,或使用外部流程。使用此方法需要您手动配置用户。

添加

为用户提供身份的首选用户名。如果已存在具有该用户名的用户,则身份将映射到现有用户,并添加到用户的任何现有身份映射中。当配置了多个标识同一组用户并映射到相同用户名的身份提供程序时,这是必需的。

添加或更改身份提供程序时,您可以通过将mappingMethod参数设置为add来将新提供程序中的身份映射到现有用户。

身份提供程序 CR 示例

以下自定义资源 (CR) 显示了用于配置身份提供程序的参数和默认值。此示例使用 htpasswd 身份提供程序。

身份提供程序 CR 示例
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: my_identity_provider (1)
    mappingMethod: claim (2)
    type: HTPasswd
    htpasswd:
      fileData:
        name: htpass-secret (3)
1 此提供程序名称作为前缀添加到提供程序用户名,以形成身份名称。
2 控制如何在此提供程序的身份与User对象之间建立映射。
3 包含使用htpasswd生成的现有密钥文件。

使用查找映射方法手动预配用户

通常,身份会在登录期间自动映射到用户。lookup映射方法会禁用此自动映射,这需要您手动预配用户。如果您使用的是lookup映射方法,请在配置身份提供程序后,对每个用户执行以下步骤。

先决条件
  • 您已安装 OpenShift CLI (oc)。

步骤
  1. 创建 OpenShift Container Platform 用户

    $ oc create user <username>
  2. 创建 OpenShift Container Platform 身份

    $ oc create identity <identity_provider>:<identity_provider_user_id>

    其中<identity_provider_user_id>是在身份提供程序中唯一表示用户的名称。

  3. 为已创建的用户和身份创建用户身份映射

    $ oc create useridentitymapping <identity_provider>:<identity_provider_user_id> <username>