RBAC и служебные учётные записи
Защита доступа к кластеру
«RBAC и служебные учётные записи» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
RBAC управляет всем
Управление доступом на основе ролей (RBAC) определяет, какие субъекты могут выполнять какие действия над какими ресурсами в кластере. Каждый вызов API авторизуется согласно RBAC. Неправильно настроенный RBAC — главная причина повышения привилегий внутри кластера.
- Субъекты: пользователи, группы, сервисные учетные записи.
- Роли связывают операции с ресурсами.
- Привязки соединяют субъекты с ролями.
Роли и ClusterRoles
Существуют две области действия.
- Роль + RoleBinding: разрешения в пределах пространства имен.
- ClusterRole + ClusterRoleBinding: разрешения во всем кластере.
Привязка ClusterRoleBinding к cluster-admin означает полный контроль. Предоставление ее сервисной учетной записи — распространенная и опасная ошибка.
Токены сервисных учетных записей
Каждый под работает от имени сервисной учетной записи и по умолчанию монтирует ее токен. Этот токен является токеном предъявителя, содержащим права RBAC этой учетной записи. Если под скомпрометирован, токен также скомпрометирован.
Современные кластеры выдают краткоживущие проецируемые токены, привязанные к аудитории, но устаревшие долгоживущие токены из секретов все еще встречаются.
# Inspect which service account a pod uses
kubectl get pod web -o jsonpath='{.spec.serviceAccountName}'Перечисление своих разрешений
После получения токена первый шаг — узнать, что с его помощью можно делать. Kubernetes предоставляет API самопроверки.
# What can this token do?
kubectl auth can-i --list
# Specific checks
kubectl auth can-i create pods
kubectl auth can-i create clusterrolebindingsОпасные сочетания разрешений
Некоторые операции позволяют повысить привилегии даже без роли администратора кластера.
create pods: запланировать привилегированный под или под с hostPath, чтобы выйти из контейнера.create pods/exec: выполнять команды в существующих подах.get/list secrets: читать учетные данные во всем кластере.create rolebindings/clusterrolebindings: привязать себя к администратору.escalate/bind: предоставлять права, которыми Вы не обладаете.- Имперсонация: действовать от имени другого, более привилегированного субъекта.
Повышение привилегий через создание подов
Если сервисная учетная запись может создавать поды, она часто может получить контроль над узлом. Злоумышленник планирует под, который монтирует файловую систему узла или работает с привилегиями, а затем читает учетные данные узла или выходит из контейнера.
# Pod spec snippet that mounts the host root
# volumes: hostPath path: / ; container mounts it at /host
kubectl apply -f evil-pod.yaml
kubectl exec -it evil -- chroot /host bashПовышение привилегий через привязку
Если Вы можете создавать привязки ролей или кластерных ролей, Вы можете напрямую привязать свою сервисную учетную запись к администратору кластера. Kubernetes защищает это с помощью операций bind/escalate, но неправильно настроенные роли иногда разрешают такие действия.
# Bind a service account to cluster-admin (if permitted)
kubectl create clusterrolebinding pwn \
--clusterrole=cluster-admin \
--serviceaccount=default:webЗлоупотребление имперсонацией
Операция impersonate позволяет субъекту действовать от имени любого пользователя, группы или сервисной учетной записи. Субъект с широкими правами имперсонации фактически обладает всеми разрешениями в кластере.
# Act as a privileged user via impersonation
kubectl get secrets --as=admin-user --as-group=system:mastersАудит RBAC
Защитникам следует постоянно проверять RBAC на наличие опасных разрешений.
- Находите субъектов, привязанных к администратору кластера.
- Отмечайте операции и ресурсы с подстановочным знаком (
*). - Обнаруживайте выдачу прав на чтение секретов и создание подов учетным записям, не являющимся администраторами.
# Tools to audit RBAC
kubectl-who-can create pods
rbac-tool analysis
rakkess --as=system:serviceaccount:default:webУсиление защиты сервисных учетных записей
Применяйте принцип минимальных привилегий к идентичностям.
- Устанавливайте
automountServiceAccountToken: false, если поду не нужен доступ к API. - Предоставляйте каждой рабочей нагрузке отдельную сервисную учетную запись с минимально необходимой областью действия.
- Не используйте сервисную учетную запись
defaultдля реальных рабочих нагрузок. - Используйте краткоживущие проецируемые токены с указанием аудиторий; ротируйте и связывайте их.
- Никогда не привязывайте рабочие нагрузки к администратору кластера.
Этичное тестирование RBAC
При оценке RBAC предпочитайте неразрушающие проверки (auth can-i, пробный запуск), а не фактическое создание привязок администратора кластера в рабочей среде. Если необходимо доказать возможность повышения привилегий, ограничьте проверку тестовым пространством имен и удалите все созданные Вами привязки или поды.
Укажите точные роли и привязки, которые сделали возможным повышение привилегий, чтобы их можно было ужесточить.
Быстрая проверка
Проверьте свое понимание RBAC.
Итоги
Вы узнали, как RBAC и сервисные учетные записи управляют доступом к кластеру и создают угрозы для него.
- RBAC связывает субъекты с операциями над ресурсами; администратор кластера обладает полным контролем.
- Поды монтируют токены SA;
auth can-iпоказывает доступные им действия. - Создание подов, привязка, чтение секретов и имперсонация позволяют повысить привилегии.
- Учетные записи с минимальными привилегиями и отключенное автоматическое монтирование усиливают защиту кластера.
Далее: безопасность подов и сетевые политики.
Изучай Cyber Security Academy с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 76
- Уроки
- 303
Часто задаваемые вопросы
Урок «RBAC и служебные учётные записи» бесплатный?
Да — полный текст урока «RBAC и служебные учётные записи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «RBAC и служебные учётные записи»?
Защита доступа к кластеру Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «RBAC и служебные учётные записи»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модель угроз Kubernetes
- RBAC и служебные учётные записи
- Безопасность подов и сетевые политики
- Защита цепочки поставок и секретов