RBAC
Role-Based Access Control — гранулярные разрешения для агентов и API-ключей
🔧 Team и выше
Обзор
FlowLink RBAC позволяет создавать кастомные роли с точным набором разрешений (scopes). Каждый API-ключ и агент привязан к роли, которая определяет доступные инструменты и операции. Это предотвращает privilege escalation и ограничивает damage radius при компрометации ключа.
Встроенные роли
Все операции, управление биллингом и политиками
Чтение агентов, выполнение команд, просмотр аудита
Только чтение: агенты, метрики, конфигурация
Scopes (разрешения)
agents:readПросмотр списка агентовagents:writeРегистрация/удаление агентовcommands:readПросмотр истории командcommands:executeОтправка команд агентамpolicies:readЧтение политик безопасностиpolicies:writeСоздание/изменение политикaudit:readПросмотр audit logbilling:readПросмотр подписки и usageroles:manageУправление ролямиwebhooks:manageУправление webhook'амиСоздание роли
curl -X POST https://relay.example.com/api/v1/orgs/${ORG_ID}/roles \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "dev-readonly",
"display_name": "Developer Read-Only",
"permissions": ["agents:read", "commands:read", "audit:read"],
"deny": ["commands:execute", "policies:write"]
}'Привязка роли к API-ключу
# Создать ключ с ролью
curl -X POST https://relay.example.com/api/v1/keys \
-H "Authorization: Bearer $TOKEN" \
-d '{"name": "ci-bot", "role": "dev-readonly"}'
# Обновить роль существующего ключа
curl -X PATCH https://relay.example.com/api/v1/keys/${KEY_ID}/role \
-H "Authorization: Bearer $TOKEN" \
-d '{"role": "operator"}'Как работает
- API-запрос проходит через JWT auth middleware
- Claims содержат role и scopes из привязанной роли
- Handler проверяет can_call("scope") перед выполнением
- Недостаток прав → 403 Forbidden с описанием требуемого scope
Масштабирование
Кастомные роли позволяют создавать принципиал least-privilege: CI/CD бот получает только commands:execute, разработчик — commands:read + audit:read, оператор — полный набор. Ограничение на количество кастомных ролей зависит от тарифа (Team: 10, Business: 50, Enterprise: безлимит).