环境准备
环境中有两个Project:Project1和Project2。测试需求如下:
| 普通用户 admin 作为管理员 普通用户 p1admin 作为 project1 管理员 普通用户 p1dev1 作为 project1 的开发人员,有修改权限 普通用户 p1test1 作为 project1 的测试人员,有查看权限 |
|---|
| 普通用户 p2admin 作为 project2 管理员 普通用户 p2dev1 作为 project2 的开发人员,有修改权限 普通用户 p2test1 作为 project2 的测试人员,有查看权限 |
超级管理员登陆
| oc login -u system:admin |
|---|
创建各个用户
| htpasswd -b /etc/origin/master/htpasswd admin admin htpasswd -b /etc/origin/master/htpasswd p1admin p1admin htpasswd -b /etc/origin/master/htpasswd p2admin p2admin htpasswd -b /etc/origin/master/htpasswd p1dev1 p1dev1 htpasswd -b /etc/origin/master/htpasswd p1test1 p1test1 htpasswd -b /etc/origin/master/htpasswd p2dev1 p2dev1 htpasswd -b /etc/origin/master/htpasswd p2test1 p2test1 |
|---|
| 默认情况下,创建账户后,使用 oc login -u \<账户> -p \<口令> 登录后,该账户就可以创建 Project,创建 Project 后,就成为这个 Project 的管理员,具有 admin 角色 |
| 如果是多 master 结构,需要在每一个 master 节点上创建同样的账户。 |
为admin账户授权管理员权限
| oadm policy add-cluster-role-to-user admin admin |
|---|
| 如果授予 admin cluster-admin 角色,则 admin 为超级管理员。 |
| oadm policy add-cluster-role-to-user cluster-admin admin |
| cluster-admin 和 admin 角色区别在于 cluster-admin 可以查看和修改 clusterPolicy,二者都可以管理集群中所有 Project |
| 常用的授权命令如下: |
| (1)在当前 Project 下,列出能对指定资源执行指定操作的用户和组 oadm policy who-can verb resource |
| (2)在当前 Project 下,把指定的角色和用户绑定起来 oadm policy add-role-to-user role username |
| (3)在当前 Project 下,删除指定用户的指定角色 oadm policy remove-role-from-user role username |
| (4)在当前 Project 下,在所有的角色中删除指定的用户 oadm policy remove-user username |
| (5)在当前 Project 下,把指定的角色和组绑定起来 oadm policy add-role-to-group role groupname |
| (6)在当前 Project 下,删除指定组的指定角色 oadm policy remove-role-from-group role groupname |
| (7)在当前 Project 下,在所有的角色中删除指定的组 oadm policy remove-group groupname |
| (8)在集群中所有 Project 下,把指定的角色和用户绑定起来 oadm policy add-cluster-role-to-user role username |
| (8)在集群中所有 Project 下,把指定的角色和用户绑定起来 oadm policy add-cluster-role-to-user role username |
| (10)在集群中所有 Project 下,把指定的角色和组绑定起来 oadm policy add-cluster-role-to-group role groupname |
| (11)在集群中所有 Project 下,删除指定组的指定角色 oadm policy remove-cluster-role-from-group role groupname |
创建各个Project
| oc new-project project1 |
|---|
| oc new-project project2 |
| ./media/image1.png |
为project1分配权限
| oc project project1 |
|---|
| oc policy add-role-to-user admin p1admin |
| oc policy add-role-to-user edit p1dev1 |
| oc policy add-role-to-user view p1test1 |
为project2分配权限
| oc project project2 |
|---|
| oc policy add-role-to-user admin p2admin |
| oc policy add-role-to-user edit p2dev1 |
| oc policy add-role-to-user view p2test1 |
一共有多少种 Role?
| oc get clusterroles |
|---|
| NAME admin basic-user cluster-admin cluster-debugger cluster-reader cluster-status edit hawkular-metrics-admin management-infra-admin registry-admin registry-editor registry-viewer self-access-reviewer self-provisioner storage-admin sudoer system:auth-delegator system:basic-user system:build-controller system:build-strategy-custom system:build-strategy-docker system:build-strategy-jenkinspipeline system:build-strategy-source system:certificate-signing-controller system:controller:attachdetach-controller system:controller:certificate-controller system:controller:cronjob-controller system:controller:daemon-set-controller system:controller:deployment-controller system:controller:disruption-controller system:controller:endpoint-controller system:controller:generic-garbage-collector system:controller:horizontal-pod-autoscaler system:controller:job-controller system:controller:namespace-controller system:controller:node-controller system:controller:persistent-volume-binder system:controller:pod-garbage-collector system:controller:replicaset-controller system:controller:replication-controller system:controller:resourcequota-controller system:controller:route-controller system:controller:service-account-controller system:controller:service-controller system:controller:statefulset-controller system:controller:ttl-controller system:daemonset-controller system:deployer system:deployment-controller system:deploymentconfig-controller system:discovery system:disruption-controller system:endpoint-controller system:garbage-collector-controller system:gc-controller system:heapster system:hpa-controller system:image-auditor system:image-builder system:image-pruner system:image-puller system:image-pusher system:image-signer system:job-controller system:kube-aggregator system:kube-controller-manager system:kube-dns system:kube-scheduler system:master system:namespace-controller system:node system:node-admin system:node-bootstrapper system:node-problem-detector system:node-proxier system:node-reader system:oauth-token-deleter system:openshift:controller:build-config-change-controller system:openshift:controller:build-controller system:openshift:controller:cluster-quota-reconciliation-controller system:openshift:controller:deployer-controller system:openshift:controller:deployment-trigger-controller system:openshift:controller:deploymentconfig-controller system:openshift:controller:horizontal-pod-autoscaler system:openshift:controller:image-import-controller system:openshift:controller:image-trigger-controller system:openshift:controller:origin-namespace-controller system:openshift:controller:pv-recycler-controller system:openshift:controller:resourcequota-controller system:openshift:controller:sdn-controller system:openshift:controller:service-ingress-ip-controller system:openshift:controller:service-serving-cert-controller system:openshift:controller:serviceaccount-controller system:openshift:controller:serviceaccount-pull-secrets-controller system:openshift:controller:template-instance-controller system:openshift:controller:unidling-controller system:openshift:template-service-broker system:openshift:templateservicebroker-client system:persistent-volume-provisioner system:registry system:replicaset-controller system:replication-controller system:router system:sdn-manager system:sdn-reader system:statefulset-controller system:webhook view |
查看 view 角色具体能操作哪些资源
| oc describe clusterrole view |
|---|
| ./media/image2.png |
查看 clusterPolicy 拥有的角色
| oc get clusterpolicy |
|---|
| ./media/image3.png |
查看 clusterPolicy default 具体能操作哪些资源
| oc describe clusterPolicy default |
|---|
查看当前/指定 Project 下的角色和用户、组的绑定关系
| oc get rolebinding |
|---|
| ./media/image4.png |
查看集群角色和用户、组的绑定关系
| oc get clusterrolebinding |
|---|