kubernetes-mcp-server: доступ агента к кластеру только на чтение
Добавлено 2026-10-29.
Проблема
ИИ-агенту дают свой kubeconfig с правами администратора. Логи и ресурсы кластера могут содержать инструкции для модели — и агент с правом записи их выполнит.
Решение
Подключать агента через kubernetes-mcp-server: нативная реализация на Go через Kubernetes API, а не обёртка над kubectl. Режим read_only, запрет на чтение Secret и отдельный ServiceAccount с ролью view.
Пример
ServiceAccount с правами на чтение в одном namespace и короткоживущий токен:
kubectl create namespace mcp
kubectl create serviceaccount mcp-viewer -n mcp
kubectl create rolebinding mcp-viewer-rb -n mcp \
--clusterrole=view --serviceaccount=mcp:mcp-viewer
TOKEN="$(kubectl create token mcp-viewer --duration=2h -n mcp)"
kubectl auth can-i delete pods -n mcp --as=system:serviceaccount:mcp:mcp-viewer # ожидаем "no"
view — встроенная ClusterRole, поэтому в RoleBinding нужен --clusterrole.
config.toml сервера:
read_only = true
toolsets = ["core"]
[[denied_resources]]
group = ""
version = "v1"
kind = "Secret"
kubernetes-mcp-server --config config.toml
Когда применять
Для разбора проблем в кластере с помощью ИИ — только на тестовом стенде или с правами на чтение.
Ограничения
Версия 0.0.x — интерфейс меняется. Роль view не даёт читать Secret, но даёт читать логи и ConfigMap — там тоже бывают чувствительные данные.
Источник
Как применить у себя
- Поднять kind-кластер и ServiceAccount по примеру.
- Подключить агента с
read_only = true. - Убедиться, что попытка записи и чтения Secret отклоняется.
- Отметить «Изучено» после разбора одной реальной проблемы через агента.