RBAC: the built-in view ClusterRole (which never includes Secrets, so Vault-managed material stays structurally invisible) plus a read-only extra for nodes, namespaces, PVs, storage classes, CRDs, Flux resources and metrics, bound to the chat service account. Tooling: a cluster-read plugin registers a GET-only cluster_read tool against the in-cluster API using the pod's projected token - secrets paths refused in the handler as well, malformed segments rejected, responses bounded and stripped of managedFields noise. Classified read_files/low in the HUX capability map. RBAC applies on push; the tool activates when the pods next roll (bundled with the round-3 voice build). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
52 lines
1.5 KiB
YAML
52 lines
1.5 KiB
YAML
# services/hermes/chat-cluster-read-rbac.yaml
|
|
# Chat's read-only window onto the cluster. The built-in `view` ClusterRole
|
|
# structurally excludes Secrets everywhere, so Vault-managed material and
|
|
# other credential Secrets stay invisible; the extra role adds the read-only
|
|
# cluster-scoped objects `view` does not cover. No write verbs anywhere.
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: hermes-chat-cluster-view
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: view
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: hermes-chat
|
|
namespace: hermes
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: hermes-chat-cluster-read-extra
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: [nodes, namespaces, persistentvolumes]
|
|
verbs: [get, list]
|
|
- apiGroups: [storage.k8s.io]
|
|
resources: [storageclasses]
|
|
verbs: [get, list]
|
|
- apiGroups: [apiextensions.k8s.io]
|
|
resources: [customresourcedefinitions]
|
|
verbs: [get, list]
|
|
- apiGroups: [kustomize.toolkit.fluxcd.io, source.toolkit.fluxcd.io, helm.toolkit.fluxcd.io, image.toolkit.fluxcd.io]
|
|
resources: ["*"]
|
|
verbs: [get, list]
|
|
- apiGroups: [metrics.k8s.io]
|
|
resources: [nodes, pods]
|
|
verbs: [get, list]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: hermes-chat-cluster-read-extra
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: hermes-chat-cluster-read-extra
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: hermes-chat
|
|
namespace: hermes
|