Kubernetes RBAC 规则动词列表
List of Kubernetes RBAC rule verbs
我想给我的应用程序提供有限的访问权限,以获取不同状态集(可能还有部署)的副本,并在必要时扩大或缩小它们。
我为此创建了 ServiceAccount、Rolebinding 和 Role,但找不到规则动词的完整列表("get"、"watch"、"list"、"update") 它们的局限性是什么,例如我可以使用 update
进行缩放还是我需要另一个动词?我在哪里可以找到描述这些动词的列表或 table?
我的 yaml 文件:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: scaler-role
namespace: {{ .Release.Namespace | quote }}
rules:
- apiGroups: ["apps"]
resources: ["statefulset"]
verbs: ["get", "watch", "list", "update"]
可以在此处找到动词列表 https://kubernetes.io/docs/reference/access-authn-authz/authorization/#review-your-request-attributes
可在此处找到简要说明https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-the-request-verb
我有一个角色用于更新部署的 docker 图像标签,如下所示(我不使用我的角色创建部署,只是修补图像标签)
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: deployer
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "patch"]
Here 是 RBAC 动词列表:
对于缩放,我认为您需要写入权限(create
、update
和 patch
)以及读取权限(get
、list
和 watch
).
在 Linux/Mac/WSL/etc。
- 运行: kubectl 代理 &
- 运行: curl http://127.0.0.1:8001 -k | grep -v 'paths' | grep '"' | sed -e 's/"//g' -e 's/,//g' | 排序 | while read line ; do kubectl get --raw ${line} ; done | jq | less
- 搜索您需要的 api 以查看动词。
最好的方法是
kubectl api-resources --sort-by name -o wide
上面的api-resources
命令是明确的并且很容易grep。可以这样获得可能动词的完整列表:
$ kubectl api-resources --no-headers --sort-by name -o wide | sed 's/.*\[//g' | tr -d "]" | tr " " "\n" | sort | uniq
create
delete
deletecollection
get
list
patch
update
watch
API 参考文档的 资源操作 部分(例如 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/) talks a little bit about them but doesn't mention deletecollection
(btw: see ;建议无论何时给出 delete
,你都应该给出 deletecollection
权限,如果资源支持的话)。
Determine the Request Verb section of Authorization Overview 确实简要提到了 deletecollection
,以及六个动词(例如 @RoryMcCune 正确指出的 escalate
),不幸的是,未显示在 kubectl api-resources -o wide
命令的输出中。
顺便说一下,api-resources
命令还列出了命令的简称,例如 svc
for services
.
我想给我的应用程序提供有限的访问权限,以获取不同状态集(可能还有部署)的副本,并在必要时扩大或缩小它们。
我为此创建了 ServiceAccount、Rolebinding 和 Role,但找不到规则动词的完整列表("get"、"watch"、"list"、"update") 它们的局限性是什么,例如我可以使用 update
进行缩放还是我需要另一个动词?我在哪里可以找到描述这些动词的列表或 table?
我的 yaml 文件:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: scaler-role
namespace: {{ .Release.Namespace | quote }}
rules:
- apiGroups: ["apps"]
resources: ["statefulset"]
verbs: ["get", "watch", "list", "update"]
可以在此处找到动词列表 https://kubernetes.io/docs/reference/access-authn-authz/authorization/#review-your-request-attributes
可在此处找到简要说明https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-the-request-verb
我有一个角色用于更新部署的 docker 图像标签,如下所示(我不使用我的角色创建部署,只是修补图像标签)
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: deployer
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "patch"]
Here 是 RBAC 动词列表:
对于缩放,我认为您需要写入权限(create
、update
和 patch
)以及读取权限(get
、list
和 watch
).
在 Linux/Mac/WSL/etc。
- 运行: kubectl 代理 &
- 运行: curl http://127.0.0.1:8001 -k | grep -v 'paths' | grep '"' | sed -e 's/"//g' -e 's/,//g' | 排序 | while read line ; do kubectl get --raw ${line} ; done | jq | less
- 搜索您需要的 api 以查看动词。
最好的方法是
kubectl api-resources --sort-by name -o wide
上面的api-resources
命令是明确的并且很容易grep。可以这样获得可能动词的完整列表:
$ kubectl api-resources --no-headers --sort-by name -o wide | sed 's/.*\[//g' | tr -d "]" | tr " " "\n" | sort | uniq
create
delete
deletecollection
get
list
patch
update
watch
API 参考文档的 资源操作 部分(例如 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/) talks a little bit about them but doesn't mention deletecollection
(btw: see delete
,你都应该给出 deletecollection
权限,如果资源支持的话)。
Determine the Request Verb section of Authorization Overview 确实简要提到了 deletecollection
,以及六个动词(例如 @RoryMcCune 正确指出的 escalate
),不幸的是,未显示在 kubectl api-resources -o wide
命令的输出中。
顺便说一下,api-resources
命令还列出了命令的简称,例如 svc
for services
.