Управление доступом на основе ролей
Документация RBAC (Role-Based Access Control)
Обзор
Система реализует комплексную модель RBAC для управления контролем доступа к различным ресурсам и действиям. Она состоит из ролей, политик и назначений ролей пользователям.
Основные компоненты
Ресурсы
Система определяет следующие защищённые ресурсы:
- Audit
- DevPod
- Image
- Payment
- Pubkey
- Registry
- Region
- Resource
- Serverless
- Storage
- Team
- Role
- UserRole
Действия
Доступные действия над ресурсами:
- List
- Get
- Create
- Update
- Delete
Система ролей
Роль — это набор разрешений, определяющий, какие действия пользователь может выполнять над определёнными ресурсами. Роли помогают эффективно организовывать и управлять правами доступа, группируя связанные разрешения вместе.
Предопределённые роли
-
AccountAdmin
- Полный доступ к ресурсам уровня аккаунта
- Может управлять участниками команды
- Может настраивать параметры аккаунта
-
Developer
- Может управлять DevPods
- Может управлять ресурсами Serverless
- Может управлять Images
- Может управлять Storage (только создание/чтение)
-
Auditor
- Доступ только для чтения к логам Audit
-
Finance
- Полный доступ к функциям Payment
-
Ops
- Доступ на чтение к DevPods и Serverless
- Полный доступ к Images, Storage, Pubkey и Resources
Политики
Политики являются фундаментальными строительными блоками контроля доступа, определяющими конкретные разрешения. Каждая политика представляет собой правило, которое предоставляет разрешение на выполнение определённых действий над конкретными ресурсами.
Структура политики
- Resource: Целевой ресурс
- Action: Разрешённое действие
Назначение политик
- Политики назначаются ролям через маппинг RolePolicy
- Несколько политик могут быть назначены одной роли
- Назначения политик уникальны для каждой роли
Контроль прав пользователей
Система реализует контроль прав через трёхуровневую модель: Пользователи, Роли и Политики. Роли выступают мостом между пользователями и политиками, обеспечивая гибкий и управляемый способ контроля прав доступа.
Поток управления
-
Назначение пользователю
- Пользователям назначается одна или несколько ролей
- Назначения ролей специфичны для каждого аккаунта
- Пользователь может иметь разные роли в разных аккаунтах
-
Роль как мост
- Роли служат контейнерами для наборов политик
- Каждая роль определяет конкретный набор обязанностей
- Роли делают управление правами более удобным
-
Применение политик
- Политики определяют фактические разрешения
- Каждый запрос валидируется относительно политик ролей пользователя
- Доступ предоставляется только при наличии соответствующей политики
Процесс авторизации
-
Обработка запроса
- Извлечение информации об аккаунте
- Идентификация целевого ресурса и действия
- Проверка ролей и политик пользователя
-
Проверка разрешений
- Роли, специфичные для аккаунта, валидируются относительно целевого аккаунта
- Сопоставление политик учитывает как точные совпадения, так и wildcards
-
Контроль доступа
- Доступ предоставляется, если любая назначенная роль имеет соответствующую политику
- Отклонённые запросы возвращают пустые результаты, а не ошибки
- Логирование аудита происходит после валидации RBAC
Лучшие практики
-
Управление ролями
- Используйте предопределённые роли, когда это возможно
- Создавайте пользовательские роли с минимально необходимыми разрешениями
- Регулярно проверяйте назначения ролей
-
Соображения безопасности
- Всегда валидируйте контекст аккаунта
- Реализуйте ограничения UI на основе ролей
- Ведите логи аудита для изменений ролей
-
Производительность
- Назначения ролей и политик кэшируются
- Пакетные операции доступны для массовых назначений
- Оптимизированные запросы к базе данных для проверки разрешений