暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OpenShift htpasswd使用及角色管理

野架构师 2018-10-09
935


htpasswd是openshift默认的一种简单的用户密码管理工具,本文将介绍在openshift上常用htpasswd命令参数;openshift引用的htpasswd文件路径为:/etc/origin/master/htpasswd。

参数介绍

  • -c:创建htpasswd文件


当部署完openshift后,默认是没有/etc/origin/master/htpasswd文件的,当需要向该文件添加用户名和密码时,需先创建该文件,否则报:htpasswd: cannot modify file etc/origin/master/htpasswd; use '-c' to create it;通过-c参数即可创建,该命令通常结合-b参数使用;需要注意的,当有了该文件后,并且文件内有内容,再次添加用户时不能再使用-c参数,否则会将原文件给删除然后创建新文件。
  • -n:类似dry run测试,不对文件进行更新,将运行结果输出至窗口

# htpasswd -nb user-test2 123456
user-test2:$apr1$8cPMzSyO$UIMM5PYPFIzdwnbeKWP1x/
  • -b:从命令行中读取密码

  • -i:测试了一下,不大明白该参数具体如何使用

  • -m:对密码使用的加密算法,默认是md5

  • -B:bcrypt加密方式

  • -C:设置bcrypt加密算法的长度

  • -d: CRYPT加密算法

  • -s:sha加密算法

  • -p:明文,不加密,如果使用该参数创建用户,则会提示如下信息,并且openshift无法登陆

# htpasswd -bp etc/origin/master/htpasswd user-test3 123456
Warning: storing passwords as plain text might just not work on this platform.
Adding password for user user-test3
  • -D:删除用户

常用命令

  • 创建用户(第一次创建,从命令行显式传入密码)

# htpasswd -cb etc/origin/master/htpasswd user-test1 123456
Adding password for user user-test1
# cat etc/origin/master/htpasswd
user-test1:$apr1$Mq4mRqKC$pIuIZqUeGwr/SJYLd3IlZ0
  • 创建用户(交互式输入密码,比较安全,不会通过history发现密码)

# htpasswd etc/origin/master/htpasswd user-test2
New password:
Re-type new password:
Adding password for user user-test2
  • 更新密码:使用的是创建用户命令,当检测到有相同的用户名时,就会更新密码

# htpasswd -b etc/origin/master/htpasswd user-test1 111111
Updating password for user user-test1
# htpasswd etc/origin/master/htpasswd user-test2
New password:
Re-type new password:
Updating password for user user-test2
  • 删除用户

# htpasswd -D etc/origin/master/htpasswd user-test2
Deleting password for user user-test2
  • 修改用户名:htpasswd命令不支持修改用户名,我直接编辑htpasswd密码文件,测试了一下可以登录,修改完用户名后,要记得相应的修改新用户名对应的openshift权限。

用户权限分配

  • 在创建好用户的情况下登录openshift,没有任何项目属于该项目,并且默认是允许用户创建项目的

  • 不让普通用户组创建项目


# oc adm policy remove-cluster-role-from-group self-provisioner system:authenticated:oauth
cluster role "self-provisioner" removed: "system:authenticated:oauth"
  • 恢复让普通用户组创建项目

# oc adm policy add-cluster-role-to-group self-provisioner system:authenticated:oauth
cluster role "self-provisioner" added: "system:authenticated:oauth"
  • 指定某个用户可以或者不可以创建项目

# oc adm policy add-cluster-role-to-user self-provisioner xxx
# oc adm policy remove-cluster-role-from-user self-provisioner xxx
  • openshift的用户角色分为项目内级别和集群级别,刚刚创建的user-test1不属于任何项目,且没有角色。

  • 当该用户创建一个项目时,就会分配给该项目admin的角色

# oc login -u user-test1 -p 111111
You don't have any projects. You can try to create a new project, by running

   oc new-project <projectname>
   
# oc new-project p1
Now using project "p1" on server "https://cluster.test.com:8443".

You can add applications to this project with the 'new-app' command. For example, try:

   oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git

to build a new example application in Ruby.
# oc get project
NAME      DISPLAY NAME   STATUS
p1                       Active
# oc project
Using project "p1" on server "https://cluster.test.com:8443".
# oc get rolebinding
NAME                    ROLE                    USERS        GROUPS                      SERVICE ACCOUNTS   SUBJECTS
admin                   admin                  user-test1
system:deployers        /system:deployer                                                 deployer
system:image-builders   system:image-builder                                            builder
system:image-pullers    /system:image-puller                 system:serviceaccounts:p1
  • user-test2也是没有任何项目,这时候在p1项目里,通过user-test1分配一个view角色给user-test2

# oc project
Using project "p1" on server "https://cluster.test.com:8443".
# oc adm policy add-role-to-user view user-test2
role "view" added: "user-test2"
  • 切换至user-test2用户,发现能看到user-test1的项目p1,但是因为只有该项目的view权限,所以不能创建和查看一些特殊权限的东西。

# oc login -u user-test2 -p 1111
Login successful.

You have one project on this server: "p1"

Using project "p1".
# oc get project
NAME      DISPLAY NAME   STATUS
p1                       Active
  • 为user-test2用户分配集群管理员权限,就可以看到所有的项目了。

# oc adm policy add-cluster-role-to-user cluster-admin user-test2
cluster role "cluster-admin" added: "user-test2"
[root@local2-ocp3.9-master1-test.com ~]# oc login -u user-test2 -p 1111
Login successful.

You have access to the following projects and can switch between them with 'oc project <projectname>':

   bdk-dev
   default
   jenkins
   kube-public
   kube-system
   logging
   management-infra
   openshift
   openshift-infra
   openshift-node
   openshift-web-console
 * p1
   user1-1
   user2-2

Using project "p1".



文章转载自野架构师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论