RoleBinding может ссылаться на любую роль в том же пространстве имен . В качестве альтернативы RoleBinding может ссылаться на ClusterRole и связывать эту ClusterRole с пространством имен RoleBinding . Если вы хотите связать ClusterRole со всеми пространствами имен в вашем кластере, вы используете ClusterRoleBinding. 1052 * Лучшее решение - предоставить как можно меньше разрешений . - Предоставить роль учетной записи службы c для конкретного приложения (наилучшее практика)
- Предоставить роль учетной записи службы "по умолчанию" в пространстве имен
- Предоставить роль всем учетным записям службы в пространстве имен
- Предоставить ограниченную роль всем службам учетные записи на уровне кластера (не рекомендуется)
- Предоставить суперпользователю доступ ко всем учетным записям служб на уровне кластера (настоятельно не рекомендуется)
На этот вопрос нет однозначного ответа, потому что вам необходимо спланировать и протестировать действие / разрешения между вашим приложением / развертыванием и Kubernetes API. Fe в ресурсах с именами или без имен, в одном пространстве имен или во всем кластере.
В вашем примере вы можете просто использовать Role / Rolebinding, если вы работаете в одном пространстве имен. Вы можете использовать ClusterRole / Rolebinding и расширять разрешения с помощью дополнительной привязки RoleBinding, позволяя ServiceAccount создавать новые объекты k8s в другом пространстве имен.
Предполагая, что мы говорим о ServiceAccount для развертывания, здесь вы можете найти полезный совет для " RBA C в развертываниях: пример использования "
Если вы создаете ServiceAccount для своего развертывания и создаете соответствующие Role / ClusterRole и Rolebinding / ClusterRoleBinding:
, вы можете выполнить:
kubectl can-i get secrets --as=system:serviceaccount:[namespace]:[service_account_name] -n [target_namespace]
Для тестирования возьмите взгляните также на Кластеры доступа с использованием Kubernetes API .
Эта команда покажет вам, определен ли конкретный ServiceAccount ( субъектом в Rolebinding / ClusterRolebinding ) имеет разрешения ( определяется глаголами в Role / ClusteRole ) для получения секретов ( определяется ресурсами Role / ClusterRole ) в указанном пространство имен.
Следуя этому подходу, вы можете проверить, достаточно ли у вашего развертывания разрешений для выполнения всех необходимых операций с Kubernetes API.
При работе с RBA C в Kubernetes вы должны учитывать указанные ниже темы:
Наличие нескольких пользователей с разными свойствами, создание надлежащего механизма аутентификации.
Полный контроль над операциями, которые может выполнять каждый пользователь или группа пользователей .
Полный контроль над операциями, которые может выполнять каждый процесс внутри модуля. Ограничьте видимость определенных ресурсов пространств имен.