17. Защита и ограничение доступа к интерфейсам инсталляцмй и кластеров
Datamart Platform Studio предоставляет возможность организации защищенного доступа к эндпоинтам (веб-интерфейсам и API) приложений установленной услуги в закрытом контуре, когда прямой доступ к компонентам услуги заблокирован сетевым администратором.
В разделе «Карточка компонента» услуги выводится список доступных интерфейсов приложений услуги следующих категорий:
WEB / HTTP интерфейсы
API интерфейсы - эндпоинты API компонентов услуги
Метрики - эндпоинты, предоставляющие метрики компонентов услуги в реальном времени
Защита доступа к WEB / HTTP интерфейсам инсталляций осуществляется посредством установки дополнительного приложения «Защитник».
Защита доступа к API интерфейсам осуществляется посредством встроенного в |prod|механизма Proxy API и требует авторизации по токену. При помощи настроек ролей доступа можно разграничить доступ к различным эндпоинтам нескольких приложений в рамках услуги по для разных пользователей, в соответствии с требованиями бизнес-логики.
Доступ к эндпоинтам метрик осуществляется приложением мониторинга, проксирование и авторизация запросов к метрикам не производится. Доступ приложениям мониторинга к эндпоинтам метрик настраивается сетевым администратором. В стандартной конфигурации приложение мониторинга находится в одном контуре с приложениями услуги.
Рисунок 17.1 Список доступных эндпоинтов услуги
17.1. WEB / HTTP интерфейсы
При клике на соответствующий веб-интерфейс открывается окно доступа к веб-интерфейсу выбранного приложения.
Разрешение на доступ к веб-интерфейсам Datamart Platform Studio предоставляются только пользователям с ролью: superadmin, web_interface
17.1.1. Средство наложенной защиты доступа к веб-интерфейсу инсталляций
Установленные в рамках услуги приложения могут не иметь собственных средств аутентификации и авторизации и предоставлять доступ к веб-интерфейсу по незащищённому протоколу HTTP.
Для выполнения требования безопасности по организации авторизованного доступа по защищённому протоколу HTTPS из Datamart Platform Studio к веб-интерфейсам инсталляций приложений в закрытом контуре, требуется установка дополнительного приложения «Защитник». Прямой доступ к веб-интерфейсам должен быть заблокирован средствами сетевого администратора.
В этом случае, доступ к веб-интерфейсам инсталляций приложений будет предоставляться только при обязательной авторизации в Datamart Platform Studio и только по протоколу HTTPS с использованием ключей, сгенерированных в Datamart Platform Studio.
Веб-интерфейсы, доступ к которым обеспечивается средствами «Защитника» в Datamart Platform Studio помечаются в списке веб-интерфейсов Услуги специальным значком.
Для доступа к веб-интерфейсам потребуется добавить соответствующий хост и сертификат в список доверенных для браузера пользователя, которому требуется использовать защищенный доступ к интерфейсу
Рисунок 17.2 Отображение веб-интерфейса инсталляции в окне «Защитника»
Примечание
IP-адрес в заголовке окна после слов «Соединение защищено» отображает адрес клиента, от имени которого происходит соединение.
17.1.2. Установка приложения «Защитник»
Установка «Защитника» (Haproxy lua protector) должна производиться на сервер, с которого есть прямой доступ к серверу, на котором установлено приложение, к которому требуется организовать авторизованный доступ по протоколу HTTPS. Haproxy lua protector может быть установлен на том же сервере, что и защищаемое приложение.
После добавления, требуется исходящий интерфейс «Защитника» связать с входящим защищаемого приложения. Если связывание интерфейсов происходит уже после установки «Защитника» на сервер, то потребуется выполнить действие «Применение конфигурации».
Примечание
При первом подключении потребуется добавить сертификат https://<хост защитника>:<порт вх интерфейса защитника> в список исключений браузера.
При необходимости установки нескольких защищённых каналов доступа к веб-интерфейсам приложений, потребуется установить несколько Защитников на разных серверах и, соответственно, добавить несколько сертификатов.
17.2. API интерфейсы
Примечание
Доступ к Витринам данных НСУД через Proxy API в Datamart Platform Studio доступен только для учетных записей с ролью proxy-api и привязанным к соответствующим организациям.
Datamart Platform Studio предоставляет возможность авторизовать и перенаправлять запросы к API эндпоинтам инсталляций и кластеров в закрытом контуре. При помощи этого возможно, например, взаимодействовать с ядром Prostore, загружать csv-файлы через standard-loader и т.д, не имея прямого доступа к серверам Витрины (см. Рисунок 17.3).
При выполнении запросов через Proxy API ведется лог запросов в Datamart Platform Studio. Логи запросов к API инсталляций приложений находятся в разделе логов для соответствующих инсталляций.
Рисунок 17.3 Схема функционирования средств наложенной защиты Datamart Studio
Чтобы функционал Proxy API стал доступен для использования, Datamart Platform Studio должна быть связана с IAM сервисом аутентификации - Keycloak. В нём определяются пользователи и их роли в Datamart Platform Studio.
Для взаимодействия с API посредством Proxy API требуется получить токен IAM сервиса аутентификации Keycloak.
Правила получения токена и примеры взаимодействия с эндпоинтами инсталляций услуги через API Datamart Platform Studio посредством Proxy API приводятся в разделе (Раздел 16 Использование Proxy API).
17.3. Настройка ролей доступа к эндпоинтам
Datamart Platform Studio позволяет настраивать доступ к эндпоинтам компонентов через Proxy API только для определенных ролей пользователей. Эндпоинты и роли доступа по умолчанию для каждого отдельного приложения могут быть указаны в бандлах соответствующих приложений.
В списке API интерфейсов услуги отображается пиктограмма с информацией о наличии ограничений для списка эндпоинтов каждого приложения (см. Рисунок 17.4), при нажатии на которую отображаются настройки доступа по ролям, указанные в бандле приложения. Дополнительная настройка ролей доступа к эндпоинтам выполняется в карточке инсталляции во вкладке «Правила API (Список правил ролевого доступа к API)»
Рисунок 17.4 Список доступных эндпоинтов с указанием ролей
Настройки ролей доступа к API определяются по умолчанию отдельно в бандле каждого приложения:
Рисунок 17.5 Настройки доступа к эндпоинтам приложения
, где:
- deny - настройка общего доступа к Proxi API:
«none» - доступны все эндпоинты приложения, кроме указанных в списке endpoints;
«all» - недоступны все эндпоинты приложения, кроме указанных в списке endpoints;
endpoints - список эндпоинтов, доступных только пользователям с определенными ролями.
Изменить значение доступа по умолчанию можно в разделе «Правила API» выбрав действие «Настройка доступа» (см. Рисунок 17.6)
Рисунок 17.6 Настройка доступа по умолчанию к API компонента
Примечание
Для обеспечения доступ к API компонентов через Proxy API только через балансировщик, в правилах API компонентов необходимо запретить доступ к эндпоинтам по умолчанию, а в настройках правил балансировщика указать все необходимые правила ролевого доступа для используемых в услуге компонентов.
Также в разделе «Правила API (Список правил ролевого доступа к API)» можно скорректировать роли доступа и добавить дополнительные эндпоинты и роли при необходимости:
Рисунок 17.7 Добавить роли доступа к эндпоинтам API компонента услуги
17.3.1. Способы добавления правил для эндпоинтов компонента
Правила описывают, к каким эндпоинтам для какой пользовательской роли есть доступ. Правило задаётся строкой вида /users/*, где * — wildcard.
Символ * может быть использован в правиле в конце или середине пути:
если символ * расположен в конце пути, доступ предоставляется ко всем методам, включающим указанный в правиле с любой дальнейшей вложенностью. - Например, правило
/api/users/*предоставит доступ к URL,``/api/users/42/posts`` и/api/users/42/posts/5, но не позволит выполнить запросapi/users.
- если символ * расположен в середине пути, он заменяет ровно один сегмент (одну часть между /).
Например, правило
api/users/*/postsпредоставит доступ к URL,api/users/{id}/posts, но не позволит выполнить запросapi/users/{id}/posts/5.если URL правила не содержит символ * , доступ предоставляется только к URL, указанному в правиле. - Например, правило
api/usersпредоставит доступ только к URL,api/users, но не позволит выполнить запросapi/users/42или/api/users/42/posts/5.
Примечание
Правило /api/users/* не открывает доступ к /api/users (без дополнительной вложенности), только к /api/users/.... Чтобы открыть и сам /api/users, и вложенные — нужно два правила: /api/users и /api/users/*.
- Примеры правил:
/api/*— доступ ко всему разделу /api и всем его подразделам/users/*/edit— доступ к редактированию любого пользователя по ID/dashboard— доступ только к конкретной странице, без вложенных
17.4. Настройка таймаутов доступа к эндпоинтам
В .env файле Datamart Platform Studio указаны значения таймаутов доступа к API компонентов услуг через модуль Proxy API в параметрах:
# значения таймаутов в секундах:
STUDIO_PROXY_REQUEST_OPEN_TIMEOUT=60.0
STUDIO_PROXY_REQUEST_READ_TIMEOUT=60.0
STUDIO_PROXY_REQUEST_WRITE_TIMEOUT=60.0
При наличии выделенного модуля Proxy API для конкретной услуги, можно указать специфическе таймауты для запросов:
Рисунок 17.8 Настройка таймаутов доступа к эндпоинтам Proxy API отдельной услуги
17.5. Настройка логировния обращений к эндпоинтам
В .env файле переменных окружения Datamart Platform Studio указано значение уровня логирования обращений к эндпоинтам средствами Proxy API:
# уровень логирования Proxy API:
STUDIO_PROXY_REQUEST_LOG_LEVEL=minimal
переменная окружения STUDIO_PROXY_REQUEST_LOG_LEVEL, может принимать значения:
minimal (по умолчанию) – записи создаются, но тело запроса туда не пишется;
verbose (только для тестирования) – создаются записи в таблице proxy_request_logs вместе с содержимым тела запроса ;
off – записи не создаются вообще