如何在OpenShift Online Pro中为用户授予oc tag权限及创建自定义角色
解决oc tag权限授予问题
一、快速搞定:用现成的registry-editor角色
你已经找对路子了!OpenShift内置的registry-editor角色刚好涵盖了执行oc tag需要的所有权限,直接运行这条命令就能完成授权:
oc policy add-role-to-user registry-editor myuser
(小提醒:OpenShift 3.x版本里,可能得用oc adm policy替代oc policy哦)
二、自定义角色的正确姿势(解决你之前的报错)
如果需要更精细的权限控制,自己造角色也不难,我帮你梳理下正确步骤,顺便解决你之前遇到的「RoleBinding找不到」的问题:
写对自定义Role的YAML配置
基于view角色修改时,得把配置调整对,比如apiVersion、权限规则,还要删掉那些自动生成的元数据字段。给你个正确的role_edittags.yaml示例:kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: edittags rules: - apiGroups: ["image.openshift.io", ""] resources: ["imagestreamimages", "imagestreammappings", "imagestreams"] verbs: ["get", "list", "watch"] - apiGroups: ["image.openshift.io", ""] resources: ["imagestreamtags"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]这里要注意:
kind必须是Role,这样角色只在当前项目生效(如果是ClusterRole就是集群级的了)- 删掉
resourceVersion、selfLink这些OpenShift自动生成的字段,不然创建的时候会出问题 - 单独给
imagestreamtags加了create、update这些oc tag必须的权限
在目标项目里创建这个Role
先切到你要授权的项目:oc project <你的目标项目名称>然后创建Role:
oc create -f role_edittags.yaml看到
role "edittags" created就说明成了。给用户绑定自定义Role(关键!)
你之前报错的核心原因是用错了命令!在OpenShift 3.2里,管理权限绑定得用oc adm policy,不是oc policy,运行这条命令:oc adm policy add-role-to-user edittags myuser成功的话会返回
role "edittags" added: "myuser"验证下权限是否生效
可以用oc impersonate模拟用户测试:oc impersonate myuser oc tag <你的源镜像> <目标镜像标签>能顺利执行就说明权限配置没问题啦!
内容的提问来源于stack exchange,提问作者simbo1905
相关产品推荐
相关产品推荐

