仅允许使用 Kubernetes RBAC 列出资源
Allow only listing of resources using Kubernetes RBAC
我想允许仅列出资源而不是清单内容。
示例,
NAME READY STATUS RESTARTS AGE
airflow-redis-0 1/1 Running 0 32h
airflow-postgresql-0 1/1 Running 0 32h
airflow-scheduler-9416ddfd6f-n7jcr 2/2 Running 0 32h
airflow-webserver-9bf7f3c95c-kf1fx 1/1 Running 0 32h
airflow-worker-0 2/2 Running 0 4h8m
具有 GET
权限的用户可以单独查看 pod 的清单。例如,kubectl describe pod airflow-worker-0 -n airflow
类似地,具有 LIST
权限的用户可以使用 - kubectl get pod --output=json
等命令查看所有 pods 的清单
是否可以限制清单访问并只允许在 K8 RBAC 中列出资源?
如果你想限制用户只能列出资源,你应该创建一个带有get动词的角色。
Role example在官方文档中表现得很好
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
因此,限制为例如仅 get pods
- 将 verbs
更改为
verbs: ["get"]
如果您还想允许列表,例如部署 - 将resources
更改为
resources: ["pods", "deployments"]
正如您已经注意到的,list
授予完整对象内容的权限。
使用任何 RBAC 请求动词都不可能只显示资源列表而不显示对象内容。
list
无法使用。它提供列表,但也允许访问完整的对象内容。
我想允许仅列出资源而不是清单内容。
示例,
NAME READY STATUS RESTARTS AGE
airflow-redis-0 1/1 Running 0 32h
airflow-postgresql-0 1/1 Running 0 32h
airflow-scheduler-9416ddfd6f-n7jcr 2/2 Running 0 32h
airflow-webserver-9bf7f3c95c-kf1fx 1/1 Running 0 32h
airflow-worker-0 2/2 Running 0 4h8m
具有 GET
权限的用户可以单独查看 pod 的清单。例如,kubectl describe pod airflow-worker-0 -n airflow
类似地,具有 LIST
权限的用户可以使用 - kubectl get pod --output=json
是否可以限制清单访问并只允许在 K8 RBAC 中列出资源?
如果你想限制用户只能列出资源,你应该创建一个带有get动词的角色。
Role example在官方文档中表现得很好
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
因此,限制为例如仅 get pods
- 将 verbs
更改为
verbs: ["get"]
如果您还想允许列表,例如部署 - 将resources
更改为
resources: ["pods", "deployments"]
正如您已经注意到的,list
授予完整对象内容的权限。
使用任何 RBAC 请求动词都不可能只显示资源列表而不显示对象内容。
list
无法使用。它提供列表,但也允许访问完整的对象内容。