SecureCommit
SecureCommit
Техническая документация
Secure-Commit
Инструкции администратора
Описание API
Описание платформы
Системная архитектура
Микросервисы
Платформа SecureCommit представляет из себя набор платформенных сервисов, интегрированных и готовых к последующей интеграции с популярными решениями класса api gateway для обеспечения быстрой и безопасной организации композитных веб-приложений в микросервисной архитектуре. Платформенные сервисы решают типовые проблемы, возникающие при переходе от монолитов к микросервисам и позволяют сильно сократить сроки и вложения при подобной трансформации ИТ-ландшафта.
Применение платформы помогает быстрее осуществить импортозамещение и сделать это планомерно за счет технологий, предоставляющих возможность организации бесшовного пользовательского опыта в ходе миграции.
Платформенное решение SecureCommit позволяет использовать микрофронтенды, собирая композитные пользовательские интерфейсы для их деплоя в состав хост-приложений без доработок и дополнительных издержек на стороне производственных команд. Платформенный сервис Service Discovery позволяет настраивать композиции из административной панели SecureCommit, снижая количество разрабатываемого кода.
Микрофронтенды
Платформенные сервисы
Платформа SecureCommit адаптирована под разработку микросервисов, чтобы позволить реализовывать независимые части системы в отдельных приложениях разными командами, сохраняя все преимущества микросервисной архитектуры, но не испытывая неудобств от ее недостатков.
Инсталляция и поддержка решения
Инсталляция
Компоненты платформенного решения разработаны на open source технологиях, имеющих широкое распространение на рынке ИТ-технологий.
Бекенд реализован в двух вариантах - на Spring (Java) и Exprexss (JavaScript). Можно выбрать любой, исходя из предпочтений и возможностей. Фронтенд реализован на React и TypeScript в strict modе.
Все репозитории docker-ready и готовы к запуску в контейнерах в средах управления контейнеризацией.
Рекомендуется эксплуатация на kubernetes, но возможен и запуск на ОС в виде отдельных процессов.
Клиенты, внедрившие платформенное решение SecureCommit имеют возможность получения круглосуточной техподдержки с согласованием комфортного SLA и надежного формата взаимодействия с соблюдения всех требований по части NDA и внутреннего производственного процесса компании-заказчика.
Техническая поддержка
Административная панель
Аутентификация и авторизация
Identity Broker
В качестве Identity Broker платформенное решение SecureCommit использует Keycloak, где необходимо:
  • Настроить интеграцию с домен контроллером для подгрузки учетных записей пользователей с помощью механизма User Federation;
  • Создать пространства, именуемые realm’ами, для разделения микросервисов на пространства. Это может использоваться для использования одного keycloak на нескольких контурах или для агрегации микросервисов в группы по каким-либо признакам;
  • Настроить сквозную аутентификацию и SSO, при необходимости;
  • Настроить многофакторную аутентификацию, при необходимости;
  • Все это является пререквизитами для работы микросервисов в составе платформы по опредленным сценариям.
Платформенное решение SecureCommit не хранит записи пользователей, а обращается за ними к Identity Broker'у при кешировании ролевой модели для выполнения авторизации. В данном случае, речь идет и про SC Security Gate и про микросервисы, выполняющие процедуру авторизации доступа к их функционалу с помощью SC Middleware.

Процесс хранения и использования метаданных для процессов аутентификации и авторизации выглядит следующим образом:

  1. Identity Provider, интегрируется с Identity Broker, который является Master Data Management по пользовательским и технических учетным записям;
  2. Identity Broker является связующим звеном, получающим аутентификационные данные для аутентификации и формирования JWT-токенов в рамках пользовательских сессий;
  3. Платформенное решение SecureCommit получает данные о пользователе, идентифицирует его запрос и позволяет выполнить авторизацию на основании сквозной ролевой модели, преднастроенной в административной панели SecureCommit.
Аутентификация и авторизация
Ролевая модель
Роли
Роли в SecureCommit являются сущностью Identity Broker'а и регистрируются изнчально там или подгружаются из сторонней мастер-системы. На основании ролей строится сквозная ролевая модель в SecureCommit, используемая для определения полномочий пользователей.
Роли назначаются пользователям через профили, агрегирующие их в наборы прав. Роли используются в маппингах ролевой модели, определяя, к какому ресурсу (микрофронтенду или API микросервиса) возможно с данным перечнем ролей получить доступ.
Созданные в Identity Broker роли, погружаются в административную панель SecureCommit для дальнейшей настройки ролевой модели.
Платформенное решение SecureCommit использует агрегации ролей в профили для обеспечения гибкости выдачи доступа и его изымания у пользователей. Таким образом, имея возможность назачения набора полномочий какому-либо пользователю, его проше онбордить для начала работы, а также имеется возможность централизованной корректировки набора полномочий для ряда пользователей.
Профили
Аудит
Журнал аудита
Все запросы, участвующие в процессе авторизации, регистрируются в базе данных SC Security Gate.
Помимо доступа к отдельному приложению, логируются факты доступа и к их API. В административной панели SecureCommit регитсрируются все API, требующие авторизацию. API могут быть публичными и в данной процедуре не участвствовать.
Функция аудита вклчюена в состав процесса авторизации и ее реализация предусмотрена в SC Middleware. Разработчикам приложения, участвующего в платформенном решении, нет необходимости вникать в устройство механизмов SC Middleware и каким-то образом применять меры по внедрению этого функционала. Работоспособность обеспечивается "из коробки" и не требует вмешательства команды развития приложения.
Механизм аудита
Отчеты
Стандартные отчеты
В стандартной инсталляции, платформенное решение SecureCommit содержит набор отчетов, необходимых для поиска и обнаружения потенциального фрода с точки зрения информационной безопасности.
В микросервисной архитектуре сложная техническая задача заключается в корректном назначении прав на выполнении определенных операций, которые рассредоточены по разным приложеням, в отличии от монолита. Каждое приложение не обладает информацией о полномочиях и правах пользователя в других микросервисах. Именно поэтому, было важно не только создать средства наделения доступом учетных записей, но и обеспечить контроль соблюдения этих правил и обнаружение попыток нарушений.
Помимо стандартного набора отчетов, есть возможность разработки дополнительных, которые будут необходимы для определенных задач клиентов и их особенностей бизнес-процесов и инфраструктуры.
Кастомизация
Для разработчиков
Gate Middleware
Реализация
SC Gate Middleware представляет из себя стартер в случае реализации на Java и импортируемый модуль в случае версии на NodeJS.
Этот подход упрощает разработку, снижает трудозатраты и содержание бойлерплейтного кода. Среди функций, реализованных в Middleware следующие:

  1. Авторизация
  2. Дополнительные проверки безопасности
  3. Форматно-логистический контроль
  4. Rate limiting
  5. Мониторинг SSL-сертификатов
Настройка Middleware происходит единожды при старте разработки приложения, который будет участвовать в платформенном решении. Процедура занимает порядка 10 минут и содержит контурозависимые настройки для возможности использования приложением функций платформы.
Конфигурирование
Конфигурация ресурсов
Основная сущность платформенного решения
Основная сущность в платформенном решении SecureCommit - ресурс. Это может быть, как микрофронтенд, который является для пользователя частью или целым интерфейсом, так и любой API, который необходимо авторизовывать, аудировать и/или регулировать в части нагрузки.
Каждый подобный контроллер на бекенде имеет уникальный идентификатор, который связвает настройки в административной панели SecureCommit с исходным кодом приложения.
Логирование и мониторинг
Логирование
Логирование функций Middleware преднастроено в поставке прлатформенного решения. Запись лога ведется в отдельный файл и конфигурируется в файле настроек.
Мониторинг
Мониторинг комплекса приложений и платформенных сервисов SecureCommit должно вестись централизованно, для чего предлагается типовая инсталляция с применением Thanos/Prometheus/Grafana.
Описание API
SG_CheckAccessByCode - базовая авторизация
Контроллер авторизации доступа по session_code, возвращаемым Identity Broker в итоге успешной аутентификации.
SC_GetCredentials-Login - извлечение логина пользователя
Контроллер получения информации о пользователе по его correlation_id, передаваемом в качестве cookie.
На стороне бекенда админ-панели выполняется поиск сессии и извлечение из ее access-токена необходимой информации.
SC_GetRealms - получение пространств
Контроллер получения списка всех realm'ов, загруженных из Identity Broker в административную панель.
Realm'ы чаще всего используются в роли контуров (DEV/C/B, TEST, PREPROD, HOTFIX, PERF, PROD и т.д)

SC_GetResourcesByRealm - получение ресурсов пространства
Контроллер для получения всех ресурсов, входящих в состав realm'а. В ответе поступает перечень ресурсов, объединенных в пространства (client scope). Каждый ресурс может быть в неограниченном кол-ве пространств.
Ресурсы (client в терминологии Identity Broker) чаще всего используются в роли микросервисов или частей микросервисов, которые представляют из себя функцию или набор функций, требующих авторизованный доступ. Пример: ресурс с новостной лентой или списком продуктов клиента или заявки на определенный вид продукта.

SC_GetResourceById - получение детальной карточки ресурса

Контроллер для получения детальной информации о ресурсе. Содержит данные о самом ресурсе и о всех интерфейсах, входящих в его состав с краткой информацией о них.
SC_UpsertResource - создание/обновление карточки ресурса

Контроллер для изменения данных детальной карточки ресурса или создания ее. Ключевым полем является id, на основании которого ведется определение логики работы.
SC_InitResource - инициализация ресурса

Контроллер для запуска функции инициализации ресурса. Инциализация ресурса производяится администратором SecureCommit и создает в БД SC Gate нового технического пользователя для микросервиса и две буфферные таблицы.
SC_DeleteResourceById - удаление карточки ресурса

Контроллер для удаления карточки ресурса. Карточка удаляется только из административной панели SecureCommit, но остается в Identity Broker.
SC_AssignResourceRolesArr - добавлние ролей для доступа к ресурсу

Контроллер для изменения перечня ролей, определяющих доступ к ресурсу. Получает на вход массив ролей, которые будут добавлены в итоговый перечень при успешном выполнении.
SC_UnassignResourceRolesArr - удаление ролей для доступа к ресурсу

Контроллер для изменения перечня ролей, определяющих доступ к ресурсу. Получает на вход массив ролей, которые будут удалены из итогового переченя при успешном выполнении.
SC_GetInterfacesByRealm - получение интерфейсов пространства
Контроллер для получения всех интерфейсов, входящих в состав realm'а. В ответе поступает перечень методов, объединенных в интерфейсы. Каждый метод может принадлежать только одному интерфейсу и именуется с его префиксом. Принадлежность метода к ресурсу определяется атрибутом resource_name.
Интерфейсы группируют методы API для удобства применения настроек доступа к ним и группируют методы по смыслу.


SC_GetInterfaceById - получение детальной карточки интерфейса

Контроллер для получения детальной информации об интерфейсе. Содержит данные о самом интерфейсе и о всех методах, входящих в его состав с краткой информацией о них.
SC_UpsertInterface - создание/обновление карточки интерфейса

Контроллер для изменения данных детальной карточки интерфейса или создания ее. Ключевыми полями являются resource_name, realm, name, на основании которых ведется определение логики работы.
SC_DeleteInterfaceById - удаление карточки интерфейса

Контроллер для удаления карточки интерфейса. Данные полностью удаляются из платформенного решения, т.к производится удаление из административной панели SecureCommit - единственном источнике хранения.
SC_AssignInterfaceRolesArr - добавление ролей для доступа к интерфейсу

Контроллер для изменения перечня ролей, определяющих доступ к интерфейсу. Получает на вход массив ролей, которые будут добавлены в итоговый перечень при успешном выполнении.
SC_UnassignInterfaceRolesArr - удаление ролей для доступа к интерфейсу

Контроллер для изменения перечня ролей, определяющих доступ к интерфейсу. Получает на вход массив ролей, которые будут удалены из итогового переченя при успешном выполнении.
SC_GetInterfaceMethodById - получение информации о методе интефрейса

Контроллер для получения информации о методе интерфейса, по-другому - API данного приложения, являющимся контроллером на бекенде микросервиса.
SC_UpsertInterfaceMethod - создание/обновление метода интефрейса

Контроллер для изменения записи метода интерфейса или создания ее. Ключевыми полями являются intrrface_id, name, на основании которых ведется определение логики работы.
SC_DeleteInterfaceMethodById - удаление метода интефрейса

Контроллер для удаления карточки метода интерфейса. Данные полностью удаляются из платформенного решения, т.к производится удаление из административной панели SecureCommit - единственном источнике хранения.
SC_GetRoleProfilesByRealm - получение профилей пространства

Контроллер для получения всех профилей, входящих в состав realm'а. В ответе поступает перечень профилей и ролей, входящих в него. Контроллеры используются для агрегации ролей и удобного масштабирования/сокращения доступа для ряда пользователей.
SC_GetRoleProfileById - получение детальной карточки профиля

Контроллер для получения детальной информации о профиле. Содержит данные о профиле и о всех ролях, входящих в его состав, а также пользователей, которым данный профиль назначен.
SC_UpsertRoleProfile - создание/обновление карточки профиля

Контроллер для изменения данных детальной карточки интерфейса или создания ее. Ключевыми полями являются realm, name, на основании которых ведется определение логики работы.
SC_AssignRolesArrToProfile - добавление ролей для доступа в профиль

Контроллер для изменения перечня ролей, входящих в профиль доступа. Получает на вход массив ролей, которые будут добавлены в профиль при успешном выполнении.
SC_UnassignRolesArrFromProfile - удаление ролей из профиля

Контроллер для изменения перечня ролей, входящих в профиль доступа. Получает на вход массив ролей, которые будут удалены из профиля при успешном выполнении.
SC_AssignProfilesArrToUser - добавление профилей пользователю

Контроллер для изменения перечня профилей пользователя. Получает на вход массив профилей, которые будут добавлены пользователю при успешном выполнении.
SC_UnassignProfilesArrFromUser - удаление профилей у пользователя

Контроллер для изменения перечня профилей пользователя. Получает на вход массив профилей, которые будут удалены у пользователя при успешном выполнении.
SC_GetResourceDisoverDataById - получение параметров для погрузки микрофронтенда

Контроллер для получения парамтеров Service Discovery микрофронтенда на указанном realm'е. Данные Service Discovery необходимы для динамической погдгрузки микрофронтнендов в составе хост-приложения.
SC_UpsertRole - создание/обновление роли

Контроллер для изменения записи роли или создания ее. Ключевым полем является id, на основании которого ведется определение логики работы.
SC_GetAssignedResourceRoles - получение ролей ресурса

Контроллер для получения ролей, определяющих доступ к данному ресурсу. Возвращает перечень ролей и информацию об активности записей, пользователях создавших и изменивших записи, дату и время создания/изменения.
SC_GetAssignedInterfaceRoles - получение ролей интерфейса

Контроллер для получения ролей, определяющих доступ к данному интерфейсу. Возвращает перечень ролей и информацию об активности записей, пользователях создавших и изменивших записи, дату и время создания/изменения.
SC_GetAuditWithPagination - получение журнала аудита

Контроллер для получения данных журнала аудита, отображающего перечень попыток и результаты авторизаций в ходе обращения к ресурсу или его интерфейсному методу.
SC_GetReportUserMultisession - получение данных о параллельных сессиях

Контроллер для получения контекста построения отчета о параллельных сессиях пользователя. График строится в разрезе пользователей и дат, когда данные сессии были зафиксированы.
SC_GetReportUserSuspAct - получение данных по потенциальному фроду

Контроллер для получения контекста построения отчета о подозрительной пользовательской активности. График строится в разрезе пользователей и дат, когда подобная активность была зафиксирована.
SC_GetReportUserAuthResults - получение данных по результатам авторизаций

Контроллер для получения контекста построения отчета о сводных результатах авторизаций пользователей. График строится в разрезе пользователей и дат, за которые происходит группировка данных.
SC_GetReportUserAuthScore - получение данных о коэффициенту легитимности доступа

Контроллер для получения контекста построения отчета по условному рейтингу успешности авторизаций. График строится в разрезе пользователей и дат, за которые происходит выборка результатов авторизаций. Отчет позволяет идентифицировать пользователей, пытающихся осуществить нелегитимный доступ к ресурсам.
SC_GetHostCertsByRealm - получение SSL-сертификатов хостов пространства

Контроллер для получения перечня хостов пространства, по которым ведется отслеживание SSL-сертификатов и оповещение ответственных администраторов о их сроке окончания действия или отзыве. Актуально для больших инсталляций, особенно при отсутсвием wildcard-сертификатов.
SC_GetHostCertById - получение расширенной информации об SSL-сертификате

Контроллер для получения данных об SSL-сертификате по части его издателя, дат выпуска и срока действия, альтернативных dns-имен, серийного номера и CN.
SC_CheckHostCert - проверка SSL-сертификата

Контроллер для выполнения проверки SSl-сертификата хоста, указанного в запросе. Необходим для выполнения разовой проверки и регулярной в режиме батч-джоба.
SC_UpsertHostCert - создание/обновление записи SSL-сертификата хоста

Контроллер для создания или изменения данных об SSL-сертификате. Ключевым полем является id, на основании которого ведется определение логики работы