This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第 7 章 配置身份提供程序
7.1. 配置 HTPasswd 身份提供程序 复制链接链接已复制到粘贴板!
7.1.1. 关于 OpenShift Container Platform 中的身份提供程序 复制链接链接已复制到粘贴板!
默认情况下,集群中只有 kubeadmin
用户。要指定身份提供程序,您必须创建一个自定义资源 (CR) 来描述该身份提供程序并把它添加到集群中。
OpenShift Container Platform 用户名不能包括 /
、:
和 %
。
要定义 HTPasswd 身份提供程序,您必须执行以下步骤:
-
创建一个
htpasswd
文件来存储用户和密码信息。提供了 Linux 和 Windows 的说明。 -
创建一个 OpenShift Container Platform secret 来代表
htpasswd
文件。 - 定义 HTPasswd 身份提供程序资源。
- 将资源应用到默认的 OAuth 配置。
7.1.2. 使用 Linux 创建 HTPasswd 文件 复制链接链接已复制到粘贴板!
要使用 HTPasswd 身份提供程序,您必须使用 htpasswd
生成一个包含集群用户名和密码的文件。
先决条件
-
能够访问
htpasswd
实用程序。在 Red Hat Enterprise Linux 上,安装httpd-tools
软件包即可使用该实用程序。
流程
创建或更新含有用户名和散列密码的平面文件:
htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>
$ htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令将生成散列版本的密码。
例如:
htpasswd -c -B -b users.htpasswd user1 MyPassword!
$ htpasswd -c -B -b users.htpasswd user1 MyPassword!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Adding password for user user1
Adding password for user user1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 继续向文件中添加或更新凭证:
htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
$ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3. 使用 Windows 创建 HTPasswd 文件 复制链接链接已复制到粘贴板!
要使用 HTPasswd 身份提供程序,您必须使用 htpasswd
生成一个包含集群用户名和密码的文件。
先决条件
-
能够访问
htpasswd.exe
。许多 Apache httpd 发行版本的\bin
目录中均包含此文件。
流程
创建或更新含有用户名和散列密码的平面文件:
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <user_name> <password>
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <user_name> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令将生成散列版本的密码。
例如:
> htpasswd.exe -c -B -b users.htpasswd user1 MyPassword!
> htpasswd.exe -c -B -b users.htpasswd user1 MyPassword!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Adding password for user user1
Adding password for user user1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 继续向文件中添加或更新凭证:
> htpasswd.exe -b <\path\to\users.htpasswd> <user_name> <password>
> htpasswd.exe -b <\path\to\users.htpasswd> <user_name> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.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
$ oc create secret generic htpass-secret --from-file=htpasswd=</path/to/users.htpasswd> -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意包含
--from-file
参数的用户文件的 secret 键必须命名为htpasswd
,如上述命令所示。
7.1.5. HTPasswd CR 示例 复制链接链接已复制到粘贴板!
以下自定义资源 (CR) 显示了 HTPasswd 身份提供程序的参数和可接受值。
HTPasswd CR
7.1.6. 将身份提供程序添加到集群中 复制链接链接已复制到粘贴板!
安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。
先决条件
- 创建 OpenShift Container Platform 集群。
- 为身份提供程序创建自定义资源(CR)。
- 必须已经以管理员身份登录。
流程
应用定义的 CR:
oc apply -f </path/to/CR>
$ oc apply -f </path/to/CR>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果一个 CR 不存在,
oc apply
会创建一个新的 CR,并可能会触发以下警告Warning: oc apply should be used on resources created by either oc create --save-config or oc apply
。在这种情况下,您可以忽略这个警告。以来自身份提供程序的用户身份登录集群,并在提示时输入密码。
oc login -u <username>
$ oc login -u <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认用户登录成功,并显示用户名。
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.7. 为 HTPasswd 身份提供程序更新用户 复制链接链接已复制到粘贴板!
您可以从现有的 HTPasswd 身份提供程序中添加或删除用户。
先决条件
-
您已创建了包含 HTPasswd 用户文件的
Secret
对象。这里假定它名为htpass-secret
。 -
您已配置了一个 HTPasswd 身份提供程序。这里假定它名为
my_htpasswd_provider
。 -
您可以使用
htpasswd
工具程序。在 Red Hat Enterprise Linux 上,安装httpd-tools
软件包即可使用该实用程序。 - 您需要有集群管理员特权。
流程
从
htpass-secret
Secret
对象中检索 HTPasswd 文件,并将该文件保存到您的文件系统中:oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd
$ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
users.htpasswd
文件中添加或删除用户。添加一个新用户:
htpasswd -bB users.htpasswd <username> <password>
$ htpasswd -bB users.htpasswd <username> <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Adding password for user <username>
Adding password for user <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除一个现有用户:
htpasswd -D users.htpasswd <username>
$ htpasswd -D users.htpasswd <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Deleting password for user <username>
Deleting password for user <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
htpass-secret
Secret
对象替换为users.htpasswd
文件中更新的用户:oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -
$ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果删除了一个或多个用户,您还需要为每个用户删除其现有资源。
删除
User
对象:oc delete user <username>
$ oc delete user <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
user.user.openshift.io "<username>" deleted
user.user.openshift.io "<username>" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请确认已删除了用户,否则如果用户的令牌还没有过期,则用户还可以继续使用其令牌。
删除用户的
Identity
对象:oc delete identity my_htpasswd_provider:<username>
$ oc delete identity my_htpasswd_provider:<username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
identity.user.openshift.io "my_htpasswd_provider:<username>" deleted
identity.user.openshift.io "my_htpasswd_provider:<username>" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.8. 使用 web 控制台配置身份提供程序 复制链接链接已复制到粘贴板!
通过 web 控制台而非 CLI 配置身份提供程序 (IDP)。
先决条件
- 您必须以集群管理员身份登录到 web 控制台。
流程
-
导航至 Administration
Cluster Settings。 - 在 Global Configuration 选项卡下,点 OAuth。
- 在 Identity Providers 部分中,从 Add 下拉菜单中选择您的身份提供程序。
您可以通过 web 控制台来指定多个 IDP,而不会覆盖现有的 IDP。