我尝试使用该kubectl get sa default
命令,但只能看到一些非常基本的值。在 k8s 中查看与特定服务帐户关联的权限/角色的命令是什么?
Luc*_*Luc 11
以下命令可能会有所帮助。它基本上获取 RoleBindings 和 ClusterRoleBindings,其中 .subjects[0] 是 ServiceAccount 的名称。
$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="SERVICE_ACCOUNT_NAME")]}[{.roleRef.kind},{.roleRef.name}]{end}'
Run Code Online (Sandbox Code Playgroud)
注意:它不会列出在主题字段中包含多个对象的 RoleBindings / ClusterRoleBindings
例如,如果 weave-net 部署为网络插件,您可以获取 weave-net ServiceAccount 使用的 Role 和 ClusterRole:
$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="weave-net")]}[{.roleRef.kind},{.roleRef.name}]{end}'
[Role,weave-net][ClusterRole,weave-net]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
iva*_*dov 11
上述所有答案的问题在于,它们依赖于您进行额外的跑腿工作,然后将它们授予的所有和RoleBindings
/或ClusterRoleBindings
以及任何重复策略编译到一个主列表中,您可以为给定的用户/组/服务帐户引用。
经过大量搜索,我发现了rbac-tool
。
使用该lookup
命令查看所有Roles
绑定ClusterRoles
到用户或服务帐户的内容。
例如,这将打印Roles
和。ClusterRoles
default
ServiceAccount
rbac-tool lookup default
SUBJECT | SUBJECT TYPE | SCOPE | NAMESPACE | ROLE
+---------------------------------+----------------+-------------+-----------------------+-----------------------------------------------------------------+
default | ServiceAccount | ClusterRole | | cluster-admin
default | ServiceAccount | Role | openshift-marketplace | 29517457e658582846e43460363c3ffde708b018f636a66cc7e33076254bff4
default | ServiceAccount | ClusterRole | rook-ceph | psp:rook
system:serviceaccounts:default | Group | ClusterRole | default | system:image-puller
Run Code Online (Sandbox Code Playgroud)
使用该policy-rules
命令查看授予特定用户或服务帐户的所有资源和 RBAC 规则。
rbac-tool policy-rules system:serviceaccounts:default
TYPE | SUBJECT | VERBS | NAMESPACE | API GROUP | KIND | NAMES | NONRESOURCEURI | ORIGINATED FROM
+-------+--------------------------------+-------+-----------+--------------------+---------------------+-------+----------------+-----------------------------------+
Group | system:serviceaccounts:default | get | default | core | imagestreams/layers | | | ClusterRoles>>system:image-puller
Group | system:serviceaccounts:default | get | default | image.openshift.io | imagestreams/layers | | | ClusterRoles>>system:image-puller
Run Code Online (Sandbox Code Playgroud)
kubectl get rolebindings,clusterrolebindings \
--all-namespaces \
-o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name'
Run Code Online (Sandbox Code Playgroud)
你可以试试这个命令来生成一个表来显示映射
我认为您正在寻找命令:kubectl auth can-i --list
和kubectl auth can-i --list --as=[user-name]
示例输出:
kubectl auth can-i --list
Resources Non-Resource URLs Resource Names Verbs
selfsubjectaccessreviews.authorization.k8s.io [] [] [create]
selfsubjectrulesreviews.authorization.k8s.io [] [] [create]
persistentvolumeclaims [] [] [get list watch create delete deletecollection patch update]
pods/exec [] [] [get list watch create delete deletecollection patch update]
pods [] [] [get list watch create delete deletecollection patch update]
events [] [] [get list watch]
pods/log [] [] [get list watch]
configmaps [] [] [get watch list]
[/.well-known/openid-configuration] [] [get]
[/api/*] [] [get]
[/api] [] [get]
[/apis/*] [] [get]
[/apis] [] [get]
[/healthz] [] [get]
[/healthz] [] [get]
[/livez] [] [get]
[/livez] [] [get]
[/openapi/*] [] [get]
[/openapi] [] [get]
[/openid/v1/jwks] [] [get]
[/readyz] [] [get]
[/readyz] [] [get]
[/version/] [] [get]
[/version/] [] [get]
[/version] [] [get]
[/version] [] [get]
podsecuritypolicies.policy [] [global-unrestricted-psp] [use]
Run Code Online (Sandbox Code Playgroud)
在 Kubernetes 中,服务帐户使用 ClusterRoleBinding 对象映射到权限(集群级别或命名空间级别)。您需要查找 RoleBinding 或 ClusterRoleBinding 对象,然后查找 Role 或 ClusterRole 对象以查看它在集群中拥有哪些权限。
归档时间: |
|
查看次数: |
9460 次 |
最近记录: |