IAM Service
Identity and Access Management
Управление пользователями, ролями и политиками доступа. RBAC, multi-tenant изоляция и соответствие требованиям ЦБ РФ.
Пользователи
Управление учётными записями
Роли
RBAC с гранулярными правами
Политики
Условные правила доступа
Управление пользователями
Создавайте и управляйте пользователями внутри вашей организации. Каждому пользователю назначаются роли, определяющие права доступа.
user_management.py
1from coren import Coren23client = Coren()45# Создание пользователя6user = client.iam.users.create(7 email="ivanov@company.ru",8 name="Иванов Иван Иванович",9 department="IT отдел",10 roles=["developer"],11 tenant_id="moscow-branch"12)1314# Список пользователей15users = client.iam.users.list(16 tenant_id="moscow-branch",17 role="developer"18)1920# Обновление ролей21client.iam.users.update(22 user_id=user.id,23 roles=["developer", "analyst"]24)2526# Деактивация пользователя27client.iam.users.deactivate(user_id=user.id)
Роли и права доступа
Роли определяют набор разрешений для пользователей. Используйте встроенные роли или создавайте кастомные.
Встроенные роли
| Роль | Описание | Права |
|---|---|---|
| admin | Администратор | Полный доступ ко всем ресурсам |
| developer | Разработчик | chat:*, embeddings:*, rag:*, agents:* |
| analyst | Аналитик | *:read, rag:query |
| ml-engineer | ML инженер | models:*, finetuning:*, chat:* |
| auditor | Аудитор | audit:read, usage:read |
Создание кастомной роли
custom_role.py
1# Создание роли для службы поддержки2role = client.iam.roles.create(3 name="support-agent",4 description="Агент службы поддержки банка",5 permissions=[6 "chat:write",7 "chat:read",8 "rag:query",9 "agents:run"10 ],11 # Ограничение по моделям12 resource_constraints={13 "models": ["llama-3-70b", "llama-3-8b"],14 "collections": ["support-kb", "faq"]15 }16)
Политики доступа
Политики позволяют задать условные правила доступа на основе IP адреса, времени суток, атрибутов запроса и других факторов.
policies.py
1# Политика: доступ только из корпоративной сети2policy = client.iam.policies.create(3 name="corporate-network-only",4 description="Разрешить доступ только из корпоративной сети",5 effect="allow",6 actions=["chat:*", "embeddings:*", "rag:*"],7 resources=["*"],8 conditions={9 "ip_address": {10 "in": [11 "10.0.0.0/8",12 "192.168.0.0/16",13 "172.16.0.0/12"14 ]15 }16 }17)1819# Политика: запрет в нерабочее время20policy_time = client.iam.policies.create(21 name="business-hours-only",22 description="Запретить доступ в нерабочее время",23 effect="deny",24 actions=["*"],25 resources=["*"],26 conditions={27 "time": {28 "not_between": ["09:00", "18:00"]29 },30 "day_of_week": {31 "not_in": ["Mon", "Tue", "Wed", "Thu", "Fri"]32 }33 }34)3536# Применить политику к роли37client.iam.roles.attach_policy(38 role_name="support-agent",39 policy_name="corporate-network-only"40)
Порядок применения политик
- Если есть явный Deny — запрос отклоняется
- Если есть явный Allow — запрос разрешается
- По умолчанию — запрос отклоняется (deny by default)
Multi-tenant изоляция
Платформа поддерживает изоляцию данных между тенантами (подразделениями, филиалами). Каждый тенант имеет изолированные ресурсы.
tenants.py
1# Создание тенанта2tenant = client.iam.tenants.create(3 id="spb-branch",4 name="Филиал Санкт-Петербург",5 settings={6 "default_model": "llama-3-70b",7 "max_tokens_per_request": 4096,8 "rate_limit_rpm": 1009 },10 quotas={11 "monthly_tokens": 10_000_000,12 "max_users": 50,13 "max_collections": 1014 }15)1617# Назначение администратора тенанта18client.iam.users.create(19 email="admin@spb.company.ru",20 name="Администратор филиала",21 roles=["tenant-admin"],22 tenant_id="spb-branch"23)
Изолированные ресурсы
- • Пользователи и роли
- • API ключи
- • RAG коллекции
- • Агенты и workflows
Общие ресурсы
- • Модели (если разрешено)
- • Глобальные политики
- • Инфраструктура
API эндпоинты
Пользователи
GET
/v1/iam/usersСписок пользователейPOST
/v1/iam/usersСоздать пользователяGET
/v1/iam/users/{id}Получить пользователяPUT
/v1/iam/users/{id}Обновить пользователяDELETE
/v1/iam/users/{id}Удалить пользователяРоли
GET
/v1/iam/rolesСписок ролейPOST
/v1/iam/rolesСоздать рольPUT
/v1/iam/roles/{name}Обновить рольDELETE
/v1/iam/roles/{name}Удалить рольПолитики
GET
/v1/iam/policiesСписок политикPOST
/v1/iam/policiesСоздать политикуPUT
/v1/iam/policies/{name}Обновить политикуDELETE
/v1/iam/policies/{name}Удалить политику