OpenShift 4 之增加管理员用户

重要说明

  1. 本文主要适用于使用HTPasswd Identity Provider机制验证用户名和密码。
  2. 检查OpenShift 4是否已有HTPasswd Identity Provider(IDP)。
$ oc get identity
NAME                      IDP NAME            IDP USER NAME   USER NAME   USER UID
htpasswd_provider:admin   htpasswd_provider   admin           admin       e26157a0-1903-11ea-a73b-0a580a8000c9
  1. 如果OpenShift 4的OAuth中还没有 HTPasswd Identity Provider,可以参考《OpenShift 4之增加 HTPasswd方式的身份认证》创建HTPasswd Identity Provider和添加用户。
  2. 确保安装httpd-tools。
$ sudo yum -y install httpd-tools

增加管理员用户

基于OpenShift 4的CodeReady Container装好后只有kubeadmin和developer两个用户。我们可以通过以下方法增加登录用户,并赋予管理员权限。

  1. 用kubeadmin(即集群管理员用户)登录,然后执行命令,获取Identity Providers的Htpasswd的Name(即下面中的htpass-secret)
$ oc describe oauth cluster
Name:         cluster
Namespace:    
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"config.openshift.io/v1","kind":"OAuth","metadata":{"annotations":{},"name":"cluster"},"spec":{"identityProviders":[{"htpass...
              release.openshift.io/create-only: true
API Version:  config.openshift.io/v1
Kind:         OAuth
Metadata:
  Creation Timestamp:  2019-11-22T15:53:51Z
  Generation:          2
  Resource Version:    22250
  Self Link:           /apis/config.openshift.io/v1/oauths/cluster
  UID:                 476c22b4-0d40-11ea-912d-525400ae0293
Spec:
  Identity Providers:
    Htpasswd:
      File Data:
        Name:        htpass-secret
    Mapping Method:  claim
    Name:            htpasswd_provider
    Type:            HTPasswd
Events:              <none>
  1. 将现有OpenShift环境中的htpass-secret包括的用户和密码导出来。
$ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 -d | tee htpasswd.txt
  1. 执行命令,向文件追加用户(admin/admin)。注意:在确认文件内容的时候每个用户是单独一行!我遇到在追加第一个用户的时候出现没有换行的情况,可以手动换行解决。
$ htpasswd -b htpasswd.txt admin admin
Adding password for user admin
$ cat htpasswd.txt 
developer:$2y$05$paX6Xc9AiLa6VT7qr2VvB.Qi.GJsaqS80TR3Kb78FEIlIL0YyBuyS
admin:$apr1$.0WVZfUa$jxi3vJFfqqWdnOgZrNYLF1
  1. 将用户文件密码文件导入到OpenShift。
$ oc create secret generic htpass-secret --from-file=htpasswd=htpasswd.txt --dry-run -o yaml -n openshift-config | oc replace -f -
  1. 此时也可以在OpenShift Console进入openshift-config项目,然后从Workloads->Secrets找到htpass-secret,然后在Data区域点击Reveal Values查看用户名和加密密码。
    OpenShift 4 之增加管理员用户_第1张图片
  2. 用kubeadmin给新建的用户赋“集群管理员”权限。
$ oc adm policy add-cluster-role-to-user cluster-admin admin
  1. 使用新建用户登录即可。注意:刚刚创建完用户马上登录有可能出现登录失败(401 Unauthorized),稍等几分钟再执行就会好了(这是因为OpenShift将htpass-secret的用户转换成OpenShift的User对象)。
$ oc login -u admin -p admin
  1. 执行命令,查看当前已有的OpenShift User对象(并非现有有效用户。“用户”和“User对象”的区别是如果用户从未登录过OpenShift,则不会有User对象。如果用户登录过然后又被删除了,User对象不会自动删除)。
$ oc get users

你可能感兴趣的:(OpenShift,4,Ops,安全)