Ролевое управление доступом (RBAC)
Управляйте разрешениями пользователей и служебных учётных записей в кластере с помощью ролей RBAC и привязок ролей.
«Ролевое управление доступом (RBAC)» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое RBAC в Kubernetes?
Добро пожаловать! В этом уроке мы подробно рассмотрим управление доступом на основе ролей (RBAC) — важнейшую функцию безопасности Kubernetes.
RBAC помогает управлять тем, кто и что может делать в вашем кластере. Это своего рода вышибала для ресурсов Kubernetes, который следит за тем, чтобы только авторизованные пользователи и приложения могли выполнять определённые действия.
Почему RBAC необходим
Без RBAC любой, у кого есть доступ к кластеру, потенциально мог бы выполнять любые действия, что привело бы к рискам безопасности или случайному повреждению данных.
- Безопасность: предотвращает несанкционированный доступ и операции.
- Соответствие требованиям: помогает выполнять нормативные требования к управлению доступом.
- Минимальные привилегии: гарантирует, что пользователи и приложения получают только действительно необходимые разрешения.
Основные понятия RBAC
RBAC в Kubernetes опирается на несколько основных компонентов:
- Субъекты: «кто» (пользователи, сервисные учётные записи, группы).
- Роли: «что» (набор разрешений).
- RoleBindings: «как» (связывают Role с субъектом).
- ClusterRoles и ClusterRoleBindings: варианты Role и RoleBinding, действующие во всём кластере.
Субъекты: пользователи и ServiceAccount
Kubernetes должен знать, кто запрашивает выполнение действия. Такие объекты называются субъектами:
- Пользователи: обычно администраторы или разработчики. Kubernetes не управляет пользователями напрямую, а полагается на внешнюю аутентификацию.
- ServiceAccount: объекты Kubernetes, используемые приложениями или процессами, работающими внутри подов. Они необходимы для обмена данными между подом и сервером API.
Определение разрешений с помощью ролей
Role определяет набор разрешений в пределах определённого пространства имён. Она указывает, какие действия (глаголы) можно выполнять над какими ресурсами.
Например, Role может разрешать получать и перечислять поды в пространстве имён «default».
Пример Role: чтение подов
Ниже приведено определение YAML для Role с именем pod-reader. Эта Role предоставляет разрешения на получение, перечисление и наблюдение (мониторинг) за подами.
Обратите внимание на apiGroups: [""] — оно указывает на основную группу API Kubernetes.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: default
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]Предоставление разрешений с помощью RoleBindings
RoleBinding связывает определённую Role с одним или несколькими субъектами (пользователями, сервисными учётными записями или группами) в определённом пространстве имён.
Это связь, которая означает: «Этот пользователь или приложение может выполнять в данном пространстве имён действия, разрешённые этой Role».
Пример RoleBinding: предоставление доступа
Этот RoleBinding связывает нашу Role pod-reader с ServiceAccount с именем my-app-sa в пространстве имён default. Теперь my-app-sa может читать поды.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-app-sa # The service account getting permissions
namespace: default
roleRef:
kind: Role
name: pod-reader # The Role being granted
apiGroup: rbac.authorization.k8s.ioClusterRoles и ClusterRoleBindings
Иногда нужны разрешения, действующие во всём кластере, а не только в одном пространстве имён. В таких случаях используются ClusterRoles и ClusterRoleBindings.
- ClusterRole: определяет разрешения для ресурсов уровня кластера (например, узлов и постоянных томов) или для действий во всех пространствах имён (например, «перечислить все поды»).
- ClusterRoleBinding: связывает ClusterRole с субъектами и предоставляет разрешения во всём кластере.
Быстрая проверка RBAC
Разработчику нужно развёртывать новые приложения только в пространстве имён dev. Какие два ресурса RBAC Kubernetes следует прежде всего использовать, чтобы предоставить ему именно это разрешение?
Итоги: основы RBAC
Отличная работа! Вы изучили основные принципы RBAC в Kubernetes:
- RBAC управляет тем, кто может взаимодействовать с ресурсами вашего кластера.
- Roles определяют разрешения в пределах пространства имён.
- RoleBindings связывают Roles с субъектами (пользователями и сервисными учётными записями).
- ClusterRoles и ClusterRoleBindings управляют разрешениями во всём кластере.
Освоение RBAC — важная часть защиты среды Kubernetes!
Часто задаваемые вопросы
Урок «Ролевое управление доступом (RBAC)» бесплатный?
Да — полный текст урока «Ролевое управление доступом (RBAC)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Ролевое управление доступом (RBAC)»?
Управляйте разрешениями пользователей и служебных учётных записей в кластере с помощью ролей RBAC и привязок ролей. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Ролевое управление доступом (RBAC)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ролевое управление доступом (RBAC)
- Сетевые политики для изоляции
- Стандарты безопасности Pod
- Сервисные аккаунты и идентичность рабочих нагрузок