仅允许使用 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 无法使用。它提供列表,但也允许访问完整的对象内容。