Role Kubernetes

Простыми словами

Роль — список того, что можно делать, например читать Pod и их журналы. Отдельная привязка определяет, кому этот список разрешён.

Как применяется

Role используют для доступа команд и сервисных учётных записей к ресурсам одного пространства имён. Разрешения суммируются: запрета, который перекрывает другую разрешающую роль, в RBAC нет. Поэтому проверяют все привязки субъекта, а не только одну Role.

Пример применения

Команде поддержки разрешают читать Pod и журналы приложения в namespace support, но не изменять Deployment и не читать Secret. Тест выполняют от имени её учётной записи: запрос логов разрешён, попытки изменения и чтения секретов отклонены. Право на pods/log указывают отдельно от pods.

Не путать с

  • RoleBindingСоединяет роль с субъектом; не является самим набором правил.
  • ClusterRoleРоль без привязки к namespace; область выдачи зависит от типа binding.
  • SecurityContextОграничивает процессы контейнера, а не операции пользователя над Kubernetes API.

Как это работает

  1. Выделить операцииПеречисляют API-ресурсы и действия, необходимые для конкретной задачи.
  2. Создать RoleЗадают явные resources и verbs без необоснованных звёздочек.
  3. Назначить субъектуRoleBinding связывает Role с пользователем, группой или service account.
  4. Проверить итоговые праваТестируют разрешённые и запрещённые запросы с учётом других привязок.

Продолжить изучение

Связанные термины

Частые вопросы

Role работает во всём кластере?

Нет. Она задаёт права в своём namespace.

Почему лишнее действие всё равно разрешено?

Проверьте остальные bindings: разрешения RBAC аддитивны.

Можно ограничить отдельный ресурс?

Для подходящих операций используют resourceNames, учитывая ограничения конкретного API-запроса.

Role Kubernetes — объект RBAC, содержащий набор разрешённых действий над ресурсами API в определённом namespace. Правила задают группы API, типы ресурсов и операции. Само создание Role никому не выдаёт эти разрешения: нужна привязка к субъекту.