转载转载转载: https://zhuanlan.zhihu.com/p/662912651
OpenShift Container Platform 包含内置的 OAuth 服务器。开发人员和管理员通过 OAuth 访问令牌以完成自身的 API 身份验证。
默认情况下,集群部署完成后只有 kubeadmin 用户。要想指定身份提供程序,您必须创建一个自定义资源(CR) 来描述该身份提供程序并把它添加到集群中。本次以配置 htpasswd 身份提供程序为例,使用户使用 htpasswd 文件中的凭证登录 容器云管理平台。
htpasswd 身份提供程序,主要分为以下几步:
- 创建一个 htpasswd 文件来存储 用户和密码信息。
- 创建一个 secret 来代表 htpasswd 文件。
- 定义一个htpasswd 身份提供程序资源用于引用该 secret。
- 将资源应用到 默认的 OAuth 配置,以添加身份提供程序。
使用 Linux 创建 htpasswd 文件
先决条件 :
- 安装 httpd-tools 软件包。
流程
- 创建htpasswd文件:
$ htpasswd -c -B -b </path/to/users.htpasswd> <username> <password>
例如:
$ htpasswd -c -B -b ./users.htpasswd test-1 admin
该命令将在当前路径下创建一个users.htpasswd的文件来提供用户名为 test 密码为 admin 的一个用户。
输出示例
Adding password for user test-1
创建 htpasswd secret
要使用 htpasswd 身份提供程序,您必须定义一个包含 htpasswd 用户文件的 secret。
先决条件
- 创建 htpasswd 文件。
流程
创建包含 htpasswd 用户文件的Secret
对象:
$ oc create secret generic htpass-secret --from-file=htpasswd=<path_to_users.htpasswd> -n openshift-config
包含--from-file
参数的用户文件的 secret 键必须命名为htpasswd
,如上述命令所示。
例如:
$ oc create secret generic htpass-secret --from-file=htpasswd=./users.htpasswd -n openshift-config
输出示例
secret/htpass-secret created
将htpasswd 身份提供程序资源应用到Oauth配置
1.通过 YAML 文件
- 创建如下的YAML文件
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: my_htpasswd_provider ①
mappingMethod: claim ②
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret ③
① 名称作为前缀放在提供程序用户名前,以此组成身份名称
② 控制如何在此提供程序的身份和 User 对象之间建立映射
③ 包含使用 htpasswd 生成的文件的现有 secret。
- 应用上述文件
$ oc apply -f <yaml-name.yaml>
以来自身份提供程序的用户身份登录集群,并在提示时输入密码。
$ oc login -u <username>
确认用户登录成功,并显示用户名。
$ oc whoami
输出示例
test-1
2.通过Web控制台
以有雀容器云管理平台为例,
流程
1. 使用具有cluster-admin权限的用户登录集群web控制台
2. 在 管理员视角下--->管理--->集群设置--->配置
有雀集群设置页面
3. 在搜索框键入 OAuth,通过点击OAuth进入详情页面
4. 在添加用户身份提供商选择HTPasswd
有雀OAuth详情页面
5. 上传生成的user.htpasswd文件 或者 将文件内容键入输入框
添加htpasswd提供程序
6.点击添加
综上:
再次登录有雀容器云管理平台集群Web页面时,会显示添加的使用htpasswd方式登录集群
登录后如下所示为,test-1用户仅为普通用户,与kubeadmin角色登录后的权限不同。
若想让 test-1 用户具有 clust-admin 权限,可以给test-1用户添加集群admin权限角色绑定。
通过CLI:
$ oc adm policy add-cluster-role-to-user cluster-admin test-1
通过Web控制台:
1. 使用具有cluster-admin集群角色登录集群web控制台
2. 在 管理员视角下--->用户管理--->用户--->test-1 进入详情页面
3. 选择角色绑定--->创建角色绑定 跳转到角色绑定页面
4. 按需设置角色绑定范围 可为集群范围的角色绑定或者特定命名空间范围的角色绑定
5.角色名称 选择为具有集群cluster-admin权限的 cluster-admin角色
6.点击创建
再次使用 test-1 用户 登录控制台可发现 test-1用户已经和 kubeadmin 具有相同的权限