воскресенье, 17 декабря 2023 г.

Что нужно помнить про Cloud IAM и Kubernetes RBAC в GKE

Чтобы разграничить права пользователей по namespace нужно использовать Kubernetes RBAC, т.к. Cloud IAM не позволяет гранулярно задать привилегии внутри namespace. Сделал простую роль для namespace (Role/RoleBinding) и кластерную роль для просмотра namespace, storageclass и прочих ресурсов, которые не имееют привязки к namespace.

процессе отладки возникла проблема что пользователь, который должен видеть список namespace и оперировать ресурсами в пространстве имён "abc-dev", смог создать ресурс в пространстве имён "xyz-dev". Если проверять через kubectl auth can-i create secret --as user@example.com --namespace xyz-dev то возвращает false, но при этом ресурс создаётся.

Причина была в правах пользователя в Cloud IAM, которые дополняли Kubernetes RBAC. Если у пользователя есть Editor, то никакая политика RBAC не сможет ограничить его права внутри кластера. Чтобы дать доступ на уровне namespace нужно сделать следующее:

  • Создать Role/RoleBinding для namespace;
  • Созжать ClusterRole/ClusterRoleBinding для ресурсов вне namespace;
  • Назначить IAM роли "Kubernetes Engine Cluster Viewer", "Logs Viewer" и "Monitoring Viewer".
В этом случае сохраняется вся визуальщина в GKE UI. Также не стоит забывать что list для ресурса позволяет получить также его содержимое.
 

Комментариев нет:

Отправить комментарий