Требования сгруппированы по доменам. Все сценарии предполагают аутентифицированного пользователя, где применимо; авторизация выполняется по токену, проверяемому на API Gateway (x-user-id).
Аутентификация
- Система должна отказывать в регистрации, если пользователь уже авторизован.
- Система должна отказывать в регистрации, если имя пользователя (логин) уже занято, и возвращать ошибку.
- Система должна отказывать в регистрации, если пароль и подтверждение не совпадают.
- При корректной регистрации: создавать пользователя в сервисе идентификации и хранить пароль только в сервисе учётных данных в виде хэша (Argon2id).
- Система должна поддерживать вход по учётным данным: идентификатор (логин / email / телефон) и пароль.
- Система должна отказывать в аутентификации, если идентификатора нет в базе, не раскрывая факт отсутствия пользователя.
- Система должна отказывать в аутентификации при неверном пароле ответом, не раскрывающим, верен ли идентификатор или пароль.
- При успешной аутентификации: создавать сессию и выдавать одноразовое подтверждение (assertion) для сервиса токенов.
Токены
- После успешного входа система должна выдавать токен доступа в формате JWT, подписанный асимметричным ключом (RS256), и токен обновления в непрозрачном формате.
- Для запросов, требующих токен доступа, система должна проверять JWT по JWKS, проверять срок действия и выставлять заголовок x-user-id (sub) для внутренних сервисов.
- Система должна возвращать ошибку авторизации при невалидном или истёкшем токене доступа.
- При предъявлении валидного токена обновления система должна выполнять ротацию (выдавать новую пару токенов) и хранить токены обновления только в виде хэша.
Профиль
- Система должна возвращать профиль пользователя по аутентифицированному запросу (авторизация по x-user-id).
- Система должна позволять обновлять профиль и хранить персональные данные только в сервисе профиля (account).
Организации
- Система должна возвращать список организаций, связанных с пользователем; каждая — с названием, описанием, слагом, числом членов и датой создания.
- Система должна позволять создавать организацию с названием, описанием и уникальным слагом и привязывать пользователя к ней.
- Система должна возвращать одну организацию по идентификатору (название, id и т.д.).
- Система должна возвращать список членов организации: имя, фамилия, юзернейм, дата присоединения.
Регионы
- Система должна возвращать список регионов организации; каждый — с названием, описанием, слагом и датой создания.
- Система должна фильтровать регионы по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать регион с названием, описанием, слагом, привязанный к организации.
- Система должна возвращать один регион с списком датацентров.
Датацентры
- Система должна возвращать список датацентров организации; каждый — с названием, описанием, слагом, страной, городом, регионом и датой создания.
- Система должна фильтровать датацентры по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать датацентр с названием, описанием, слагом, страной, городом, регионом, привязанный к региону и организации.
- Система должна возвращать один датацентр с списком вычислительных ресурсов.
Окружения
- Система должна возвращать список окружений организации; каждое — с названием, описанием, слагом и датой создания.
- Система должна фильтровать окружения по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать окружение с названием, описанием, слагом, привязанное к организации.
- Система должна возвращать одно окружение со списком окружений, имеющих доступ к нему.
Вычислительные ресурсы
- Система должна возвращать список вычислительных ресурсов организации; каждый — с названием, описанием, типом (BARE_METAL, VIRTUAL_MACHINE, GPU), датацентром, IP, диском, CPU, памятью и датой создания.
- Система должна фильтровать вычислительные ресурсы по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать вычислительный ресурс с указанными атрибутами, привязанный к датацентру и организации.
- Система должна возвращать один вычислительный ресурс по идентификатору.
Кластеры
- Система должна возвращать список кластеров организации; каждый — с названием, описанием, слагом, правилами размещения, механизмом оркестрации и датой создания.
- Система должна фильтровать кластеры по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать кластер с названием, описанием, слагом, правилами размещения, оркестрацией, привязанный к организации.
- Система должна возвращать один кластер по идентификатору.
Каталог сервисов
- Система должна возвращать список сервисов организации; каждый — с названием, описанием, слагом, принадлежностью (внутренний/внешний), типом (платформенный/производственный) и датой создания.
- Система должна фильтровать сервисы по поисковому запросу и возвращать подходящие результаты.
- Система должна позволять создавать сервис с указанными атрибутами, привязанный к организации.
- Система должна возвращать один сервис по идентификатору.
Где реализовано (маппинг на фичи и сервисы)
| Домен требований | Фича | Сервисы |
|---|---|---|
| Аутентификация, Токены | Аутентификация | Auth Service, Identity, Credential, Token, API Gateway |
| Профиль | Профиль | Account service |
| Организации | Организации | Cloud service |
| Регионы, Датацентры, Окружения | Топология | Cloud service |
| Вычислительные ресурсы | Compute Resources | Cloud service |
| Кластеры | Кластеры | Cloud service |
| Каталог сервисов | Каталог сервисов | Cloud service |
Связанные страницы
- Требования (обзор) — нефункциональные, безопасность, производительность
- Фичи продукта — описание возможностей
- Аутентификация (фича) — детали capability
- Домен Identity — доменная модель идентичности
- Архитектура безопасности — аутентификация в архитектуре