第 4 章 配置身份提供程序


4.1. 配置 HTPasswd 身份提供程序

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

默认情况下,集群中只有 kubeadmin 用户。要指定身份提供程序,您必须创建一个自定义资源 (CR) 来描述该身份提供程序并把它添加到集群中。

注意

OpenShift Container Platform 用户名不能包括 /:%

要定义 HTPasswd 身份提供程序,您必须执行以下步骤:

4.1.2. 使用 Linux 创建 HTPasswd 文件

要使用 HTPasswd 身份提供程序,您必须使用 htpasswd 生成一个包含集群用户名和密码的文件。

先决条件

  • 能够访问 htpasswd 实用程序。在 Red Hat Enterprise Linux 上,安装 httpd-tools 软件包即可使用该实用程序。

流程

  1. 创建或更新含有用户名和散列密码的平面文件:

    $ htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>

    该命令将生成散列版本的密码。

    例如:

    $ htpasswd -c -B -b users.htpasswd user1 MyPassword!
    
    Adding password for user user1
  2. 继续向文件中添加或更新凭证:

    $ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>

4.1.3. 使用 Windows 创建 HTPasswd 文件

要使用 HTPasswd 身份提供程序,您必须使用 htpasswd 生成一个包含集群用户名和密码的文件。

先决条件

  • 能够访问 htpasswd.exe。许多 Apache httpd 发行版本的 \bin 目录中均包含此文件。

流程

  1. 创建或更新含有用户名和散列密码的平面文件:

    > htpasswd.exe -c -B -b <\path\to\users.htpasswd> <user_name> <password>

    该命令将生成散列版本的密码。

    例如:

    > htpasswd.exe -c -B -b users.htpasswd user1 MyPassword!
    
    Adding password for user user1
  2. 继续向文件中添加或更新凭证:

    > htpasswd.exe -b <\path\to\users.htpasswd> <user_name> <password>

4.1.4. 创建 HTPasswd secret

要使用 HTPasswd 身份提供程序,您必须定义一个含有 HTPasswd 用户文件的 secret。

先决条件

  • 创建 HTPasswd 文件。

流程

  • 创建一个含有 HTPasswd 用户文件的 OpenShift Container Platform secret。

    $ oc create secret generic htpass-secret --from-file=htpasswd=</path/to/users.htpasswd> -n openshift-config
    注意

    包含 --from-file 参数的用户文件的 secret 键必须命名为 htpasswd,如上述命令所示。

4.1.5. HTPasswd CR 示例

以下自定义资源 (CR) 显示了 HTPasswd 身份提供程序的参数和可接受值。

HTPasswd CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: my_htpasswd_provider 1
    mappingMethod: claim 2
    type: HTPasswd
    htpasswd:
      fileData:
        name: htpass-secret 3

1
此提供程序名称作为前缀放在提供程序用户名前,以此组成身份名称。
2
控制如何在此提供程序的身份和用户对象之间建立映射。
3
包含使用 htpasswd 生成的文件的现有 secret。

4.1.6. 将身份提供程序添加到集群中

安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。

先决条件

  • 创建 OpenShift Container Platform 集群。
  • 为身份提供程序创建自定义资源 (CR)。
  • 必须已经以管理员身份登录。

流程

  1. 应用定义的 CR:

    $ oc apply -f </path/to/CR>
    注意

    如果一个 CR 不存在,oc apply 会创建一个新的 CR,并可能会触发以下警告 Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以忽略这个警告。

  2. 以来自身份提供程序的用户身份登录集群,并在提示时输入密码。

    $ oc login -u <username>
  3. 确认用户登录成功,并显示用户名。

    $ oc whoami

4.1.7. 为 HTPasswd 身份提供程序更新用户

您可以从现有的 HTPasswd 身份提供程序中添加或删除用户。

先决条件

  • 您创建了一个 包含 HTPasswd 用户文件的 secret。这里假定它名为 htpass-secret
  • 您已配置了一个 HTPasswd 身份提供程序。这里假定它名为 my_htpasswd_provider
  • 您可以使用 htpasswd 工具程序。在 Red Hat Enterprise Linux 上,安装 httpd-tools 软件包即可使用该实用程序。
  • 您需要有集群管理员特权。

流程

  1. htpass-secret secret 中检索 HTPasswd 文件,并将该文件保存到您的文件系统中:

    $ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 -d > users.htpasswd
  2. users.htpasswd 文件中添加或删除用户。

    • 添加一个新用户:

      $ htpasswd -bB users.htpasswd <username> <password>
      Adding password for user <username>
    • 删除一个现有用户:

      $ htpasswd -D users.htpasswd <username>
      Deleting password for user <username>
  3. 使用 users.htpasswd 文件中更新的用户替换 htpass-secret secret:

    $ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run -o yaml -n openshift-config | oc replace -f -
  4. 如果删除了一个或多个用户,您还需要为每个用户删除其现有资源。

    1. 删除用户:

      $ oc delete user <username>
      user.user.openshift.io "<username>" deleted

      请确认已删除了用户,否则如果用户的令牌还没有过期,则用户还可以继续使用其令牌。

    2. 删除用户的身份:

      $ oc delete identity my_htpasswd_provider:<username>
      identity.user.openshift.io "my_htpasswd_provider:<username>" deleted

4.1.8. 使用 web 控制台配置身份提供程序

通过 web 控制台而非 CLI 配置身份提供程序 (IDP)。

先决条件

  • 您必须以集群管理员身份登录到 web 控制台。

流程

  1. 导航至 Administration Cluster Settings
  2. Global Configuration 选项卡下,点 OAuth
  3. Identity Providers 部分中,从 Add 下拉菜单中选择您的身份提供程序。
注意

您可以通过 web 控制台来指定多个 IDP,而不会覆盖现有的 IDP。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.