Поделиться через


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

В data-source разделе определяются сведения о доступе к базе данных. Он также определяет параметры базы данных.

Параметры источника данных

Property Description
источник данных Объект, содержащий параметры подключения к базе данных
тип data-source.database База данных, используемая в серверной части: mssql, postgresql, mysqlcosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Строка подключения для выбранного типа базы данных
data-source.options Свойства, относящиеся к базе данных (например, параметры SQL Server, Cosmos DB и т. д.)
data-source.options.database Имя базы данных Azure Cosmos DB для NoSQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.container Имя контейнера Azure Cosmos DB для NoSQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.schema Путь к файлу схемы GraphQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.set-session-context Включает отправку утверждений веб-маркера JSON (JWT) в качестве контекста сеанса (только SQL Server)
data-source.health Настройка проверок работоспособности для источника данных
data-source.health.enabled Включает конечную точку проверки работоспособности
data-source.health.name Идентификатор, используемый в отчете о работоспособности
data-source.health.threshold-ms Максимальная длительность в миллисекундах для запроса проверки работоспособности
data-source.user-delegated-auth Объект, настроивBehalf-Of (OBO), делегированную пользователем проверку подлинности (только mssql)
data-source.user-delegated-auth.enabled Включает проверку подлинности OBO
data-source.user-delegated-auth.provider Поставщик удостоверений OBO (только сейчас EntraId )
data-source.user-delegated-auth.database-audience Целевая аудитория для нижестоящего токена SQL

Обзор формата

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      // mssql only
      "set-session-context": <true> (default) | <false>,
      // cosmosdb_nosql only
      "database": <string>,
      "container": <string>,
      "schema": <string>
    },
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    },
    "user-delegated-auth": {
      "enabled": <true> | <false> (default),
      "provider": <string>,
      "database-audience": <string>
    }
  },
  "data-source-files": ["<string>"]
}

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

Parent Property Type Required Default
$root data-source object ✔️ Да -

Вложенные свойства

Parent Property Type Required Default
data-source database-type enum ✔️ Да None
data-source connection-string string ✔️ Да None
data-source options object ❌ Нет None

Значения свойств

database-type Description Минимальная версия
mssql SQL в Fabric -
mssql База данных SQL Azure -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Склад тканей -
dwsql Конечная точка Аналитики SQL Fabric -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB для NoSQL -
cosmosdb_postgresql Azure Cosmos DB для PostgreSQL -

Format

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      "<key-name>": <string>
    }
  }
}

Пример: SQL Azure и SQL Server

"data-source": {
  "database-type": "mssql",
  "connection-string": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
    "options": {
      "set-session-context": true
    }
}

Note

Мы используем SqlClient для SQL Azure и SQL Server, которые поддерживают эти варианты строк подключения.

Потребляющий SESSION_CONTEXT

Для SQL Azure и SQL Server построитель API данных может включать сведения о утверждениях SESSION_CONTEXTв SQL.

CREATE PROC GetUser @userId INT AS
BEGIN
    -- Use claims
    IF SESSION_CONTEXT(N'user_role') = 'admin' 
    BEGIN
        RAISERROR('Unauthorized access', 16, 1);
    END

    SELECT Id, Name, Age, IsAdmin
    FROM Users
    WHERE Id = @userId;
END;

Пример: Azure Cosmos DB

"data-source": {
  "database-type": "cosmosdb_nosql",
  "connection-string": "@env('SQL_CONNECTION_STRING')",
  "options": {
    "database": "Your_CosmosDB_Database_Name",
    "container": "Your_CosmosDB_Container_Name",
    "schema": "Path_to_Your_GraphQL_Schema_File"
  }
}

Note

Указанные параметры (database, containerи schema) относятся к Azure Cosmos DB.

Переменные среды

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

Tip

Построитель данных поддерживает как функцию@env(), так и .env файлы.

"data-source": {
  "database-type": "mssql",
  "connection-string": "@env('SQL_CONNECTION_STRING')"
}

Устойчивость подключения

Построитель данных использует экспоненциальную обратную передачу для повторных запросов к базе данных после временных ошибок.

Attempts First Second Third Fourth Fifth
Seconds 2s 4s 8s 16s 32s

Удостоверения управляемых служб (MSI)

Управляемые удостоверения службы (MSI) поддерживаются в DefaultAzureCredentialAzure.Identity библиотеке. Дополнительные сведения об управляемых удостоверениях в Microsoft Entra для SQL Azure.

User-Assigned управляемых удостоверений (UAMI)

Для управляемого удостоверения, назначаемого пользователем, добавьте свойства проверки подлинности и идентификатора пользователя в строку подключения, подставив идентификатор клиента назначаемого пользователем управляемого удостоверения: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;

управляемое удостоверение System-Assigned (SAMI)

Для управляемого удостоверения, назначаемого системой, добавьте свойство Authentication и исключите аргументы UserId и Password из строки подключения: Authentication=Active Directory Managed Identity;

Работоспособности (источник данных)

Parent Property Type Required Default
data-source health object No

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

Вложенные свойства

Parent Property Type Required Default
data-source.health enabled boolean No true
data-source.health name string No database-type
data-source.health threshold-ms integer No 1000

Проверить имя

Так как несколько файлов конфигурации могут указывать на источники данных одного типа, эти источники данных не могут отличаться в отчете о работоспособности. Используется name для назначения уникальной идентифицируемой метки, используемой только в отчете о работоспособности.

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

Самый простой запрос, характерный для типа базы данных, выполняется в заданном источнике данных, чтобы убедиться, что подключение можно открыть. threshold-ms Используйте свойство, чтобы настроить максимальную допустимую длительность (в миллисекундах) для завершения этого запроса.

Format

{
  "data-source": {
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  }
}

Делегированная пользователем проверка подлинности

Parent Property Type Required Default
data-source user-delegated-auth object No

Делегированная пользователем проверка подлинности вBehalf-Of (OBO) для SQL Server и Azure SQL. Если этот параметр включен, DAB обменивается входящим маркером пользователя для нижестоящего маркера SQL, чтобы база данных выполняла проверку подлинности в качестве фактического вызывающего пользователя. Эта функция поддерживается только для mssql источников данных и требует вышестоящей проверки подлинности идентификатора записи.

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Вложенные свойства

Parent Property Type Required Default
data-source.user-delegated-auth enabled boolean No false
data-source.user-delegated-auth provider перечисление (EntraId) No EntraId
data-source.user-delegated-auth database-audience string Да (если включена) None
  • enabled— включает или отключает OBO.
  • provider— поставщик удостоверений для обмена токенами. Поддерживается только EntraId.
  • database-audience— целевая аудитория для нижестоящего маркера SQL (например, https://database.windows.net).

Обязательные переменные среды

Если OBO включен, DAB считывает следующие переменные среды для обмена токенами:

Variable Description
DAB_OBO_CLIENTID Идентификатор приложения (клиента) регистрации приложения Entra ID
DAB_OBO_CLIENTSECRET Секрет клиента для регистрации приложения
DAB_OBO_TENANTID Идентификатор клиента entra ID

Пул подключений для каждого пользователя

Если OBO включен, DAB поддерживает отдельные пулы подключений SQL на пользователя, чтобы маркер доступа одного пользователя никогда не был повторно использован для запроса другого пользователя.

Note

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

Format

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": <true> | <false> (default),
      "provider": <string>,
      "database-audience": <string>
    }
  }
}

Пример

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": true,
      "provider": "EntraId",
      "database-audience": "https://database.windows.net"
    }
  }
}

Это важно

OBO поддерживается только для mssql. Свойство database-audience требуется при включении OBO. Выполнение этой конфигурации для источника данных, отличного от MSSQL, завершается ошибкой проверки.