本教程将说明如何将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提供程序进行身份验证:
您还可以以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
相关主题 |