通过openshift rest api检查执行操作的权限

时间:2017-12-01 06:14:14

标签: rest cmd authorization openshift

openshift doc中,我们可以使用单个命令检查执行操作的能力:

oc policy can-i <verb> <resource>

但我怎样才能通过其余的api实现这一目标(以确定您是否可以对特定资源执行特定动词)

2 个答案:

答案 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。

对于某个应用程序来说,实际上非常简单,您可以给它vieweditadmin角色。

  • 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