Чтобы разграничить права пользователей по 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".
Комментариев нет:
Отправить комментарий