云网牛站
所在位置:首页 > Linux云服务器 > 使用HTPasswd身份提供程序管理OpenShift/OKD用户

使用HTPasswd身份提供程序管理OpenShift/OKD用户

2020-04-08 14:50:03作者:游俊梧稿源:云网牛站

本教程将说明如何将HTPasswd配置为OCP/OKD群集的身份提供者,您可以将OpenShift OAuth服务器配置为使用许多身份提供程序,即:

HTPasswd:根据存储使用htpasswd生成的凭据的机密验证用户名和密码。

LDAP:使用简单绑定身份验证配置LDAP身份提供程序以针对LDAPv3服务器验证用户名和密码。

Keystone:启用与OpenStack Keystone v3服务器的共享身份验证。

OpenID Connect:使用授权码流与OpenID Connect身份提供者集成。

GitHub:配置GitHub身份提供商,以针对GitHub或GitHub Enterprises OAuth身份验证服务器验证用户名和密码。

 

HTPasswd OAuth提供程序

该提供程序根据包含来自Apache HTTP Server项目的htpasswd命令生成的用户名和密码的机密验证用户。作为集群管理员,您可以更改密钥内部的数据。这意味着更新用于身份验证的用户名和密码。

使用HTPasswd Identity Provider管理群集用户仅适用于用户数量很少的开发环境。在大多数拥有数百至数千用户的生产环境中,必须具有更强大的身份提供者,并将其与组织的身份管理系统集成在一起。

 

使用HTPasswd身份提供者管理OpenShift/OKD用户

为了向OpenShift/OKD添加另一个身份提供程序,您需要以集群管理员的身份访问OpenShift集群。如果您使用的是全新安装的OpenShift集群(参考:使用Minishift运行本地Openshift集群的方法),则可以使用两种方法来验证API请求:

1]、使用kubeadmin虚拟用户和密码来授予OAuth访问令牌。

2]、使用嵌入永不过期的X.509客户端证书的kubeconfig文件。

在本教程中,我们将使用kubeconfig身份验证方法将HTPasswd提供程序添加到OpenShift。此操作需要oc客户端,根据kubeconfig文件的位置,您可能需要导出它:

export KUBECONFIG=/root/auth/kubeconfig

通过检查集群中的可用节点来确认它是否正常工作:

$ oc get nodes

或者,可以使用oc命令的--config选项:

$ oc --config /path/to/kubeconfig get nodes

要使用kubeadm虚拟用户进行身份验证,您将运行类似以下的命令:

$ oc login -u kubeadmin -p KubeadmUserPassword

1、配置HTPasswd身份提供程序

我们将从生成所需的htpasswd文件开始,该文件将保存用户凭据,需要安装一个提供htpasswd命令的软件包。

针对CentOS/RHEL/Fedora系统:

$ sudo yum -y install httpd-tools

针对Ubuntu/Debian系统:

$ sudo apt install apache2-utils

针对Arch Linux/Manjaro系统:

$  sudo pacman -S apache

2、创建一个HTPasswd文件

创建一个新的或更新现有的htpasswd文件:

$ htpasswd -c -B -b ocp_users.htpasswd user1 password1

要添加或更新凭据,请使用:

$ htpasswd -Bb ocp_users.htpasswd user2 password2

$ htpasswd -Bb ocp_users.htpasswd user3 password3

确认文件已创建:

$ cat ocp_users.htpasswd 

user1:$2y$05$VNgzIy33djzSlOLkHqiR6.CG9oQaPM4CZz4q86Z4s4m23gtllV7I.

user2:$2y$05$0grDO248lSANnOWOlqY2BO/B6/CWm6yJGSYBfZgDnJFBsVrBIIaTW

user3:$2y$05$pqp6mo9oGk7E2AIfawDKg.ntUIUjIMRidYvR017mRxdhs5.ctWED2

要从htpasswd删除用户,请运行以下命令:

$ htpasswd -D ocp_users.htpasswd user3

Deleting password for user user3

3、创建HTPasswd机密

在使用HTPasswd身份提供者之前,我们需要定义一个包含HTPasswd用户文件的机密:

$ oc create secret generic htpass-secret \

 --from-file=htpasswd=./ocp_users.htpasswd \

 -n openshift-config

4、配置OAuth自定义资源

要使用HTPasswd身份提供者,必须编辑OAuth自定义资源以将条目添加到.spec.identity Providers数组中,让我们创建一个新文件:

$ vim htpasswd-oauth.yaml

在下面添加和编辑内容:

apiVersion: config.openshift.io/v1

kind: OAuth

metadata:

  name: cluster

spec:

  identityProviders:

  - name: Local Password

    mappingMethod: claim

    type: HTPasswd

    htpasswd:

      fileData:

        name: htpass-secret

注:

ocp-htpasswd-provider是提供程序的名称,该名称以提供者用户名称为前缀,以形成身份名称。

htpass-secret是现有机密的名称,其中包含使用htpasswd生成的文件。

应用定义的CR:

oc apply -f htpasswd-oauth.yaml

现在,您可以在OpenShift登录屏幕上选择本地密码(Local Password),以使用添加的凭据向HTPasswd提供程序进行身份验证:

使用HTPasswd身份提供程序管理OpenShift/OKD用户

您还可以以oc命令的身份从添加的身份提供者使用oc命令从CLI登录到群集:

$ oc login -u <username>

出现提示时输入密码。

 

在OpenShift上更新HTPasswd机密

每当您在htpasswd文件中添加,更改或删除用户时,也必须在OpenShift群集上更新机密,机密内的所有数据都必须使用base64进行编码。

编码数据的一种方法是使用oc create secret,方法是将输出YAML发送到标准输出,然后将输出传递给oc replace命令以更新现有密钥:

oc create secret generic htpass-secret \

 --from-file htpasswd=./ocp_users.htpasswd \

 --dry-run -o yaml \

 | oc replace -n openshift-config -f -

 

更新OAuth自定义资源

如果要编辑OAuth自定义资源,请使用oc get命令将现有OAuth群集资源导出到YAML格式的文件中:

oc get -o yaml oauth cluster > htpasswd-oauth.yaml

对嵌入式标识提供程序设置进行必要的更改,然后使用oc replace命令应用新的自定义资源:

$ oc apply -f htpasswd-oauth.yaml

 

向用户分配管理权限

群集范围内的cluster-admin角色向用户和组授予群集管理特权,您可以使用以下命令将cluster-admin角色授予标准用户:

oc adm policy add-cluster-role-to-user cluster-admin <username>

 

提取秘密数据

您可以提取机密数据并将其保存到可以查看或修改的文件中,使用oc提取程序执行此操作:

oc extract secret/htpass-secret -n openshift-config --to - > temp-secrets

 

相关主题

使用oc命令显示OpenShift节点的日志(Logs)

精选文章
热门文章