IAM, AM/AMS, IdP, PEP, PIP, PDP и иные аббревиатуры =================================================== *Вдохновляясь ГОСТ Р 59383-2021* Предлагаю иметь четкие границы между следующими модулями или подсистемами отвечающими за функции безопасности в рамках контроля доступа: #. Подсистема занимающаяся: #. управлением пользователями, а именно регистрацией, назначением различных атрибутов (группа, роль, scope — это тоже атрибуты), удалением, блокировкой и т.д. #. Аутентификацией — проверкой логина и пароля, второго фактора и т.д. #. Выдачей токенов доступа, к примеру JWT-токенов #. OIDC, OAuth2 клиент, который будет реализовывать, к примеру, Authorization Code Flow #. Подсистема хранения, управления политиками доступа. К примеру, в формате JSON Schema, XACML или в любом ином удобном вам. #. Подсистема принятия решений на основе политик доступа и входящего запроса #. Подсистема исполнения политик доступа на основе результата отданного подсистемой принятия решений по политикам Плюсы ------ #. Все из описанных подсистем уже реализованы: ``OAuth2 Proxy``, ``Keycloak``, ``ngx_http_auth_request_module``, ``Open Policy Agent``, решения от Ory, etc. Это позволит нам заниматься не разработкой, а комплексированием, см. ГОСТ Р 59351-2021. Из этого пункта вытекает много плюсов, но они будут описаны в статье про комплексирование. #. Каждая из подсистем может быть протестирована отдельно или вся совокупность подсистем может быть протестирована без одной или нескольких из них. #. Интеграция в существующую энтерпрайз-инфраструктуру с высокой вероятностью будет легче, т.к. взаимодействие систем будет происходить по открытым стандартам и известным протоколам: ``OIDC``, ``OAuth2``, ``LDAP``, ``Kerberos``, ``XACML``, ``JSON Schema``, etc. #. ПЕРЕИСПОЛЬЗУЕМОСТЬ. Набив руку, выработав лучшие пратики, имея проверенные конфиги, отрисовав диаграммы, сделав нагрузочное тестирование и сайзинг, вы сможете продавать ваши решения в разы эффективнее #. Стабильность. Зачастую, решения, которые используются сообществом, стабильнее, нежели сервис, который вы разработали вчера. #. При выполнении заданий безопасности для прохождения проверки на соответствие ОУД, вам нужно отдавать на проверку только вышеперечисленные подсистемы или модули