在openshift doc中,我们可以使用单个命令检查执行操作的能力:
oc policy can-i <verb> <resource>
但我怎样才能通过其余的api实现这一目标(以确定您是否可以对特定资源执行特定动词)
答案 0 :(得分:0)
使用服务帐户名称来运行应用程序:
$ oc policy can-i --list --user system:serviceaccount:myproject:default
Verbs Non-Resource URLs Resource Names API Groups Resources
$ oc create serviceaccount jupyterhub
$ oc policy add-role-to-user edit -z jupyterhub
$ oc policy can-i --list --user system:serviceaccount:myproject:jupyterhub
Verbs Non-Resource URLs Resource Names API Groups Resources
[create delete deletecollection get impersonate list patch update watch] [] [] [] [serviceaccounts]
[create delete deletecollection get list patch update watch] [] [] [] [buildconfigs]
[create delete deletecollection get list patch update watch] [] [] [] [buildconfigs/webhooks]
....
应用程序通常会以default
运行。在这里,我创建了一个名为jupyterhub
的新服务帐户,并赋予其edit
个角色。然后我询问它能做什么。将myproject
替换为您项目的名称,并将jupyterhub
替换为您的服务帐户名称,如果您要更改其中的角色,则替换为default
。
这假设您想要从应用程序中使用REST API。
对于某个应用程序来说,实际上非常简单,您可以给它view
,edit
或admin
角色。
admin:项目经理。用户有权查看项目中的任何资源,并修改项目中除配额之外的任何资源。具有此项目角色的用户将能够删除该项目。
编辑:可以修改项目中大多数对象但无权查看或修改角色或绑定的用户。具有此角色的用户可以在项目中创建和删除应用程序。
view:无法进行任何修改但可以查看项目中大多数对象的用户。
即使是普通用户帐户并且从群集外部执行此操作,在解释它的方式上仍然没有太大差异,只需使用用户帐户名称即可。虽然如果你自己做,不需要--user
选项。
答案 1 :(得分:0)
oc policy can-i get pods --loglevel=8
然后我可以看到这个cmd调用了api,它是:
POST https://openshift-cluster.example.com:8443/oapi/v1/subjectaccessreviews