Перейти к содержанию

Источники данных

Источник данных — это описание базы данных на уровне компании: её сетевой адрес, параметры подключения и учётные записи, под которыми DataForge к ней обращается. Источник настраивается администратором один раз и переиспользуется подключениями к базам данных во всех проектах. Источники данных настраиваются в разделе НастройкиИнтеграции, на вкладке Источники данных.

Назначение и область действия

Раньше каждое подключение проекта хранило собственный адрес и собственные учётные данные, и одну и ту же базу данных приходилось описывать заново в каждой версии проекта. Источник данных переносит это описание на уровень выше:

  • Адрес, порт, настройки SSL и сервисная учётная запись хранятся один раз для всей компании и используются всеми подключениями, которые ведут к этой базе данных
  • Подключение проекта больше не запрашивает хост, порт и пароль — в нём выбирается источник данных, а затем база данных и схема, с которыми ведётся работа
  • Источник данных определяет, под какой учётной записью базы данных выполняется запрос: под одной общей сервисной учётной записью для всех либо под индивидуальными учётными данными каждого пользователя, чтобы результаты отражали его собственные права в базе данных
  • Все изменения конфигурации фиксируются в Системном журнале

Источники данных поддерживаются для PostgreSQL, Microsoft SQL Server и ClickHouse — тех же типов СУБД, что и подключения проектов.

Права доступа

Роль Управление источниками данных (просмотр, создание, изменение, проверка, активация, удаление, сопоставление пользователей) Использование источника данных в подключении проекта
Суперадминистратор Да Да
Администратор компании Да (источники своей компании) Да
Остальные роли (Менеджер проекта, Разработчик, Аналитик, Наблюдатель) Нет Да

Страница Интеграции доступна только администраторам. Пользователи с другими ролями её не открывают, но выбирают настроенные источники данных при создании подключений к базам данных в своих проектах.

Список источников данных

Вкладка Источники данных отображает источники данных компании в виде таблицы:

Колонка Описание
Источник данных Название, заданное администратором
Тип базы данных PostgreSQL, Microsoft SQL Server или ClickHouse
Хост базы данных Адрес сервера базы данных
Порт базы данных Порт сервера базы данных
Режим аутентификации Общая учетная запись или Индивидуальные учетные данные
Источник учетных данных Откуда берутся индивидуальные учётные данные; для общей учётной записи отображается «—»
Статус Активно, Ошибка проверки или Отключено
Действия Редактирование, пользователи источника данных, отключение или активация, удаление

Над таблицей расположена кнопка Добавить источник данных. Колонки Тип базы данных, Режим аутентификации, Источник учетных данных и Статус фильтруются выбором значения из списка, остальные — поиском по подстроке; список сортируется и разбит на страницы.

Статус источника данных

Статус Значение
Активно Источник данных используется, и последняя проверка подключения не завершилась ошибкой
Ошибка проверки Последняя проверка подключения завершилась ошибкой
Отключено Источник данных выведен администратором из использования

Добавление источника данных

  • Нажмите Добавить источник данных над списком
  • Заполните название, тип базы данных и режим аутентификации в верхней части диалога
  • Заполните вкладку Параметры — адрес базы данных и сервисную учётную запись
  • Если выбран режим Индивидуальные учетные данные, откройте вкладку Учетные данные и укажите, откуда берутся учётные данные каждого пользователя
  • Для ClickHouse откройте вкладку SSL, если сервер требует TLS
  • Нажмите Проверить, чтобы проверить введённые в форму значения
  • Нажмите Сохранить

Общие параметры

Эти поля расположены над вкладками и относятся ко всему источнику данных:

Поле Обязательное Описание
Название источника данных Да Название, отображаемое в списке и в диалоге подключения. Должно быть уникальным в пределах компании
Тип источника данных Да PostgreSQL, Microsoft SQL Server или ClickHouse. После сохранения источника не изменяется — подключения и сохранённая для них структура базы данных построены под эту СУБД
Режим аутентификации Да Общая учетная запись — все запросы выполняются под сервисной учётной записью источника; Индивидуальные учетные данные — запрос, инициированный пользователем, выполняется под его собственной учётной записью в базе данных

Вкладка «Параметры»

Поле Обязательное Описание
Хост базы данных Да Доменное имя или IP-адрес сервера базы данных без схемы, порта и пути
Порт базы данных Да Порт сервера базы данных
База данных по умолчанию Нет База данных, предлагаемая первой при создании подключения на основе этого источника
Схема по умолчанию Нет Схема, предлагаемая первой. Отображается только для PostgreSQL; по умолчанию public
Сервисный пользователь базы данных Нет Учётная запись, которую DataForge использует для собственных операций, а в режиме Общая учетная запись — для всех пользователей
Пароль сервисного пользователя Да Пароль этой учётной записи. Шифруется до отправки из браузера и хранится в зашифрованном виде
Переносить права на создаваемые представления витрин Переносятся ли права доступа исходных таблиц на объекты, создаваемые в базе данных при развёртывании представлений витрин. По умолчанию снят

Сервисной учётной записи нужны права на чтение метаданных базы данных и исходных таблиц. Она сохраняется при любом режиме аутентификации: DataForge использует её для операций, которые не должны зависеть от прав отдельного пользователя.

Вкладка «Учетные данные»

Вкладка доступна только в режиме Индивидуальные учетные данные. Она начинается с поля Источник учетных данных — откуда берутся логин и пароль пользователя в базе данных:

Источник учётных данных Как получаются учётные данные
Ручная настройка Администратор задаёт логин и пароль в базе данных для каждого пользователя на экране Пользователи источника данных
Хранилище учетных данных Логин и пароль считываются из внешнего хранилища секретов по пути, построенному для запросившего пользователя
Привязка LDAP В базу данных передаётся корпоративный пароль, введённый пользователем при входе в DataForge через провайдера идентификации LDAP / AD

Поля источника Хранилище учетных данных:

Поле Обязательное Описание
URL хранилища Да Адрес хранилища секретов
Метод аутентификации Да Token (по умолчанию) или AppRole
Токен / Role ID:Secret ID Да Секрет, под которым DataForge обращается к хранилищу. Хранится в зашифрованном виде и повторно не отображается
Шаблон пути Да Путь, по которому считывается секрет пользователя. Должен содержать подстановку {userEmail} или {userId}, чтобы каждый пользователь получал свой секрет
Поле имени пользователя Нет Название поля с логином в базе данных. По умолчанию username
Поле пароля Нет Название поля с паролем. По умолчанию password

Поля источника Привязка LDAP:

Поле Обязательное Описание
Сервер LDAP Да Имя хоста или IP-адрес сервера каталога
Порт Да Порт сервера каталога. По умолчанию 636
Включить SSL (LDAPS) Подключение к каталогу по LDAPS. Включено по умолчанию
Базовый DN Да Ветвь каталога, в которой ищутся записи пользователей
Атрибут поиска Нет Атрибут, по которому сопоставляется пользователь. По умолчанию uid
Домен Нет Домен Windows. Отображается только для Microsoft SQL Server — с заданным доменом база данных принимает учётную запись каталога как Windows-аутентификацию

Для источника Ручная настройка на вкладке дополнительно отображаются уже сопоставленные пользователи и кнопка, открывающая экран Пользователи источника данных. Кнопка становится доступной после сохранения источника данных — до этого сопоставлять учётные данные не с чем, о чём диалог сообщает подсказкой.

Внизу вкладки, для любого источника учётных данных:

Поле Описание
Использовать сервисную учетную запись при отсутствии индивидуальных учетных данных Если флаг установлен, пользователь без собственных учётных данных обслуживается сервисной учётной записью источника, а предупреждение сообщает ему, что его индивидуальные права не применяются. Если флаг снят, такому пользователю выполнение запроса запрещается

Вкладка «SSL»

Вкладка доступна только для источников данных ClickHouse. Поля сертификатов становятся активными после установки флага Использовать SSL.

Поле Описание
Использовать SSL Включает TLS и активирует поля сертификатов
Сертификат центра сертификации (CA) Корневой сертификат удостоверяющего центра
Клиентский сертификат Клиентский сертификат для взаимной аутентификации
Закрытый ключ клиента Закрытый ключ, соответствующий клиентскому сертификату

У каждого поля есть кнопки Загрузить и Удалить. Допустимые расширения — .crt, .pem, .cer, .ca-bundle и .bundle. Файл больше 1 МБ отклоняется браузером с сообщением «Максимальный размер файла: 1 мегабайт», а сервер принимает файл размером не более 64 КБ — сертификат обычно занимает существенно меньше. Загруженные сертификаты хранятся в зашифрованном виде, в форме остаются видны только их имена.

Проверка подключения

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

  • подключение к серверу — сервер базы данных отвечает по указанным адресу и порту
  • вход сервисной учётной записи — сервисный пользователь и пароль приняты
  • база данных и схема — база данных по умолчанию и, для PostgreSQL, схема по умолчанию существуют

Успешная проверка сопровождается уведомлением «Подключение к источнику данных успешно установлено». Неудачная — сообщением «Не удалось подключиться к источнику данных», за которым следуют шаг и причина, возвращённая базой данных. Проверка из диалога не меняет Статус источника данных в списке.

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

Индивидуальные учётные данные пользователей

Для источника данных с источником учётных данных Ручная настройка логин и пароль каждого пользователя в базе данных задаются на экране Пользователи источника данных. Он открывается кнопкой пользователей источника данных в строке списка или с вкладки Учетные данные диалога редактирования.

На экране перечислены пользователи, у которых уже есть учётные данные для этого источника: Имя, Фамилия, Адрес электронной почты и Имя в источнике данных. Пароли не отображаются — их можно только заменить.

Чтобы сопоставить сразу нескольких пользователей:

  • Нажмите Добавить пользователей
  • В каждой строке выберите Пользователя, затем введите его Имя в источнике данных и Пароль в источнике данных
  • Кнопкой Добавить пользователя добавьте следующую строку, кнопкой удаления — уберите лишнюю
  • Проверьте строку в базе данных кнопкой проверки рядом с ней — найти неверный логин или пароль здесь дешевле, чем потом в неудавшемся предпросмотре
  • Нажмите Сохранить

В списке предлагаются только пользователи компании, у которых сопоставления для этого источника ещё нет; у одного пользователя может быть одно сопоставление на источник данных.

Чтобы изменить сопоставление, воспользуйтесь кнопкой редактирования в его строке. Имя, фамилия и адрес электронной почты пользователя отображаются только для чтения; Имя в источнике данных можно изменить, а Пароль в источнике данных — только заменить, нажав рядом кнопку Редактировать и введя новый. Кнопка Проверить проверяет сопоставление в базе данных: если пароль не изменялся, используется сохранённый.

Кнопка удаления убирает сопоставление через диалог подтверждения. После этого у пользователя нет собственных учётных данных для этого источника, и он обслуживается по правилу подстановки сервисной учётной записи.

Использование источника данных в подключении проекта

Подключения к базам данных в проекте больше не хранят собственный адрес и собственные учётные данные. В диалоге подключения пользователь:

  • выбирает Источник данных — его Хост базы данных и Порт базы данных отображаются только для чтения, чтобы было видно, куда ведёт подключение
  • выбирает Базу данных, а для PostgreSQL — Схему, из списков, которые источник данных загружает с сервера

Всё остальное, что касается подключений — проверка, обновление закешированной структуры базы данных, активация и удаление, — описано на странице Управление подключениями к базам данных.

Под какой учётной записью выполняется запрос

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

В режиме Индивидуальные учетные данные учётная запись зависит от выполняемой операции:

  • Результаты, которые запрашивает пользователь — предпросмотр витрины, проверка витрины или показателя, — выполняются под его собственной учётной записью в базе данных, поэтому он видит только то, что позволяют его права в самой базе
  • Чтение структуры базы данных, создание и обновление объектов витрин в базе данных, а также проверка формул в базе данных всегда выполняются под сервисной учётной записью: это операции этапа проектирования, которые не должны зависеть от прав отдельного пользователя

Сообщения, которые пользователь может увидеть при работе под собственными учётными данными:

Сообщение Причина
«У вас нет настроенных учетных данных для базы данных. Обратитесь к администратору.» У пользователя нет собственных учётных данных, а подстановка сервисной учётной записи выключена
«Не удалось аутентифицироваться в базе данных. Проверьте свои учетные данные.» База данных отклонила логин или пароль
«У вас недостаточно прав для доступа к запрошенным данным в базе данных.» Учётная запись существует, но не имеет прав на запрошенные данные
«Используется общая учетная запись для доступа к данным. Ваши индивидуальные права доступа не применяются.» Предупреждение о том, что сработала подстановка сервисной учётной записи
«Источник данных «название» отключён администратором» Источник данных выведен из использования

Перенос прав на представления витрин

Флаг Переносить права на создаваемые представления витрин на вкладке Параметры определяет, переносятся ли права доступа исходных таблиц на объекты, которые витрина создаёт в целевой базе данных. По умолчанию он снят: перенос требует от сервисной учётной записи дополнительных полномочий, поэтому администратор включает его осознанно. Что именно переносится и как это влияет на развёртывание и обновление, описано в документации по витринам, на странице Управление представлениями витрин.

Изменение источника данных

  • Тип источника данных у сохранённого источника не изменяется — построенные на нём подключения и сохранённая для них структура базы данных относятся к этой СУБД. Для перехода на другую СУБД создайте новый источник данных
  • Сохранённые секреты — Пароль сервисного пользователя и токен или AppRole хранилища — повторно не отображаются. Чтобы заменить секрет, нажмите рядом с полем кнопку Редактировать; нетронутое поле сохраняет прежнее значение
  • Всё остальное, включая адрес, режим аутентификации, источник учётных данных и флаги, можно изменить в любой момент. Изменение применяется ко всем подключениям проектов, которые используют этот источник данных

Активация и отключение источника данных

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

Удаление источника данных

Кнопка удаления убирает источник данных через диалог подтверждения, который предупреждает, что ссылающиеся на него подключения придётся сначала перевести на другой источник. Источник данных, который ещё используется подключениями проектов, не удаляется — выводится сообщение «Источник данных используется подключениями проектов и не может быть удалён». Переведите такие подключения на другой источник или удалите их, а затем удалите источник данных.

Записи в журнале аудита

Настройка источников данных фиксируется в Системном журнале в категории управления источниками данных: источник данных добавлен, изменён и удалён, пользователь источника данных добавлен, изменён и удалён. Проверка подключения в журнал не записывается. Каждое изменённое поле записывается со старым и новым значением; пароли и секреты хранилища отмечаются как изменённые без раскрытия значений.

Фиксируются и события времени выполнения запроса: под чьими учётными данными было открыто подключение, когда вместо собственных учётных данных пользователя сработала сервисная учётная запись и когда база данных отклонила учётные данные или отказала в доступе.