转载转载转载: https://zhuanlan.zhihu.com/p/662912651

Wan

OpenShift Container Platform 包含内置的 OAuth 服务器。开发人员和管理员通过 OAuth 访问令牌以完成自身的 API 身份验证。

默认情况下,集群部署完成后只有 kubeadmin 用户。要想指定身份提供程序,您必须创建一个自定义资源(CR) 来描述该身份提供程序并把它添加到集群中。本次以配置 htpasswd 身份提供程序为例,使用户使用 htpasswd 文件中的凭证登录 容器云管理平台。

htpasswd 身份提供程序,主要分为以下几步:

  1. 创建一个 htpasswd 文件来存储 用户和密码信息。
  2. 创建一个 secret 来代表 htpasswd 文件。
  3. 定义一个htpasswd 身份提供程序资源用于引用该 secret。
  4. 将资源应用到 默认的 OAuth 配置,以添加身份提供程序。

使用 Linux 创建 htpasswd 文件

先决条件 :

  • 安装 httpd-tools 软件包。

流程

  1. 创建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. 在 管理员视角下--->管理--->集群设置--->配置

【分享】使用htpasswd配置身份提供程序_云管理平台

有雀集群设置页面

3. 在搜索框键入 OAuth,通过点击OAuth进入详情页面

4. 在添加用户身份提供商选择HTPasswd

【分享】使用htpasswd配置身份提供程序_用户名_02

有雀OAuth详情页面

5. 上传生成的user.htpasswd文件 或者 将文件内容键入输入框

【分享】使用htpasswd配置身份提供程序_用户名_03

添加htpasswd提供程序

6.点击添加

综上:

再次登录有雀容器云管理平台集群Web页面时,会显示添加的使用htpasswd方式登录集群

【分享】使用htpasswd配置身份提供程序_云管理平台_04

登录后如下所示为,test-1用户仅为普通用户,与kubeadmin角色登录后的权限不同。

【分享】使用htpasswd配置身份提供程序_统信有雀_05

若想让 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 进入详情页面

【分享】使用htpasswd配置身份提供程序_用户名_06

3. 选择角色绑定--->创建角色绑定 跳转到角色绑定页面

【分享】使用htpasswd配置身份提供程序_统信有雀_07

4. 按需设置角色绑定范围 可为集群范围的角色绑定或者特定命名空间范围的角色绑定

5.角色名称 选择为具有集群cluster-admin权限的 cluster-admin角色

6.点击创建


再次使用 test-1 用户 登录控制台可发现 test-1用户已经和 kubeadmin 具有相同的权限

【分享】使用htpasswd配置身份提供程序_云管理平台_08