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

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)

Настройка доступа по умолчанию к API компонента

Рисунок 17.6 Настройка доступа по умолчанию к API компонента

Примечание

Для обеспечения доступ к API компонентов через Proxy API только через балансировщик, в правилах 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 для конкретной услуги, можно указать специфическе таймауты для запросов:

Настройка таймаутов доступа к эндпоинтам Proxy API выделенного модуля 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 – записи не создаются вообще