使用HTPasswd身份提供程序管理OpenShift/OKD用户
现在,我们在OpenShift Container平台上讨论了许多文章。
本教程将说明如何将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 Identity Provider管理OpenShift/OKD用户
为了向OpenShift/OKD添加另一个身份提供程序,我们需要以集群管理员的身份访问OpenShift集群。
如果我们正在使用全新安装的OpenShift集群,则可以使用两种方法来验证API请求:使用kubeadmin虚拟用户和密码授予OAuth访问令牌;使用kubeconfig文件嵌入永不过期的X.509客户端证书。
在本教程中,我们将使用kubeconfig身份验证方法将HTPasswd提供程序添加到OpenShift。
此操作需要oc客户端。
根据kubeconfig文件的位置,我们可能需要导出它。
export KUBECONFIG=/root/auth/kubeconfig
通过检查集群中的可用节点来确认它正在运行。
$oc get nodes
或者,我们可以使用 --config
oc命令的选项:
$oc --config /path/to/kubeconfig get nodes
要使用kubeadm虚拟用户进行身份验证,我们将运行类似以下的命令。
$oc login -u kubeadmin -p KubeadmUserPassword
配置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
创建一个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:y$VNgzIy33djzSlOLkHqiR6.CG9oQaPM4CZz4q86Z4s4m23gtllV7I. user2:y$htpasswd -D ocp_users.htpasswd user3 Deleting password for user user3grDO248lSANnOWOlqY2BO/B6/CWm6yJGSYBfZgDnJFBsVrBIIaTW user3:y$pqp6mo9oGk7E2AIfawDKg.ntUIUjIMRidYvR017mRxdhs5.ctWED2
要从htpasswd删除用户,请运行以下命令:
$oc create secret generic htpass-secret \ --from-file=htpasswd=./ocp_users.htpasswd \ -n openshift-config
创建HTPasswd秘密
在使用HTPasswd身份提供者之前,我们需要定义一个包含HTPasswd用户文件的机密。
$vim htpasswd-oauth.yaml
配置OAuth自定义资源
要使用HTPasswd身份提供程序,必须编辑OAuth自定义资源,以将条目添加到.spec.identity Providers数组中。
让我们创建一个新文件。
apiVersion: config.openshift.io/v1 kind: OAuth metadata: name: cluster spec: identityProviders: - name: Local Password mappingMethod: claim type: HTPasswd htpasswd: fileData: name: htpass-secret
在下面添加和编辑内容。
oc apply -f htpasswd-oauth.yaml
其中:ocp-htpasswd-provider是提供者的名称。
该名称以提供者用户名作为前缀以形成身份名称。
htpass-secret是现有机密的名称,其中包含使用htpasswd生成的文件。
$oc login -u <username>
现在,我们可以在OpenShift登录屏幕上选择"本地密码",以使用添加的凭据向HTPasswd提供程序进行身份验证。
data-ezsrcset =" https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider-1024x297.png 1024w,https://theitroad.com/wp-content/上传/2017/04/openshift-configure-htpasswd-identity-provider-300x87.png 300w,https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider-768x223 .png 768w,https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider-1536x445.png 1536w,https://theitroad.com/wp-content/uploads /2017/04/openshift-configure-htpasswd-identity-provider-696x202.png 696w,https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider-1068x310.
png 1068w,https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider-1448x420.png 1448w,https://theitroad.com/wp-content/uploads/2017/04/openshift-configure-htpasswd-identity-provider.png 1883w">我们也可以使用添加的ide用户,使用oc命令从CLI登录到集群实体提供商。
oc create secret generic htpass-secret \ --from-file htpasswd=./ocp_users.htpasswd \ --dry-run -o yaml \ | oc replace -n openshift-config -f
出现提示时输入密码。
在OpenShift上更新HTPasswd机密
每当我们在htpasswd文件中添加,更改或者删除用户时,也必须在OpenShift群集上更新机密。
秘密中的所有数据都必须使用base64编码。
一种编码数据的方法是使用oc create secret,方法是将输出YAML发送到标准输出,然后将输出传递给oc replace命令以更新现有秘密。
oc get -o yaml oauth cluster > htpasswd-oauth.yaml
更新OAuth自定义资源
如果要编辑OAuth自定义资源,请使用oc get命令将现有OAuth群集资源导出到YAML格式的文件中。
$oc apply -f htpasswd-oauth.yaml
对嵌入式标识提供程序设置进行必要的更改,然后使用oc replace命令应用新的自定义资源。
oc adm policy add-cluster-role-to-user cluster-admin <username>
向用户分配管理权限
群集范围内的cluster-admin角色向用户和组授予群集管理特权。
我们可以使用以下命令将cluster-admin角色授予标准用户。
oc extract secret/htpass-secret -n openshift-config --to - > temp-secrets
提取秘密数据
我们可以提取秘密数据并将其保存到可以查看或者修改的文件中。
使用oc提取程序执行此操作。