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 инсталляций приложений находятся в разделе логов для соответствующих инсталляций.

Схема функционирования средств наложенной защиты Datamart Studio

Рисунок 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. Настройка ролей доступа к эндпоинтам

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

Proxy API позволяет ограничивать доступ к эндпоинтам только для указанных ролей.

В списке API интерфейсов услуги отображается пиктограмма с информацией о наличии ограничений для списка эндпоинтов каждого приложения (см. Рисунок 17.4), при нажатии на которую отображаются настройки доступа по ролям, указанные в бандле приложения. Дополнительная настройка ролей доступа к эндпоинтам выполняется в карточке инсталляции во вкладке «Правила API (Список правил ролевого доступа к API)»

Список доступных эндпоинтов с указанием ролей

Рисунок 17.4 Список доступных эндпоинтов с указанием ролей

Настройки ролей доступа к API определяются по умолчанию отдельно в бандле каждого приложения:

Настройки доступа к эндпоинтам приложения

Рисунок 17.5 Настройки доступа к эндпоинтам приложения

, где:

  • deny - настройка общего доступа к Proxi API:
    • «none» - доступны все эндпоинты приложения, кроме указанных в списке endpoints;

    • «all» - недоступны все эндпоинты приложения, кроме указанных в списке endpoints;

  • endpoints - список эндпоинтов, доступных только пользователям с определенными ролями.

После установки приложения в карточке инсталляции во вкладке «Правила API (Список правил ролевого доступа к API)» можно скорректировать роли доступа и добавить дополнительные эндпоинты и роли при необходимости:

Добавить роли доступа к эндпоинтам API

Рисунок 17.6 Добавить роли доступа к эндпоинтам API

17.4. Настройка таймаутов доступа к эндпоинтам

В .env файле Datamart Platform Studio указаны значения таймаутов доступа в параметрах:

# значения таймаутов в секундах:
STUDIO_PROXY_REQUEST_OPEN_TIMEOUT=60.0
STUDIO_PROXY_REQUEST_READ_TIMEOUT=60.0
STUDIO_PROXY_REQUEST_WRITE_TIMEOUT=60.0

При необходимости для отдельной услуги можно указать специфическе таймауты для Proxi API, отличные от ностроекнных по умолчанию в настройках услуги:

Настройка таймаутов доступа к эндпоинтам Proxi API отдельной услуги

Рисунок 17.7 Настройка таймаутов доступа к эндпоинтам Proxi API отдельной услуги

17.5. Настройка логировния обращений к эндпоинтам

В .env файле переменных окружения Datamart Platform Studio указано значение уровня логирования обращений к эндпоинтам средствами Proxi API:

# уровень логирования Proxi API:
STUDIO_PROXY_REQUEST_LOG_LEVEL=minimal

переменная окружения STUDIO_PROXY_REQUEST_LOG_LEVEL, может принимать значения:

  • minimal (по умолчанию) – записи создаются, но тело запроса туда не пишется;

  • verbose (только для тестирования) – создаются записи в таблице proxy_request_logs вместе с содержимым тела запроса ;

  • off – записи не создаются вообще