Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A data-source seção define os detalhes de acesso ao banco de dados. Ele também define opções de banco de dados.
Configurações da fonte de dados
| Property | Description |
|---|---|
| Fonte de dados | Objeto que contém configurações de conectividade de banco de dados |
| data-source.database-type. | Base de dados usada pelo backend: mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql |
| data-source.connection-string | Cadeia de conexão para o tipo de banco de dados selecionado |
| data-source.options | Propriedades específicas do banco de dados (por exemplo, opções para SQL Server, Cosmos DB, etc.) |
| data-source.options.database | Nome do banco de dados do Azure Cosmos DB para NoSQL (obrigatório quando database-type = cosmosdb_nosql) |
| data-source.options.container | Nome do contêiner do Azure Cosmos DB para NoSQL (necessário quando database-type = cosmosdb_nosql) |
| data-source.options.schema | Caminho para o arquivo de esquema GraphQL (necessário quando database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Permite o envio de declarações JSON Web Token (JWT) como contexto de sessão (somente SQL Server) |
| data-source.health | Objeto configurando verificações de integridade para a fonte de dados |
| data-source.health.enabled | Habilita o ponto de extremidade de verificação de integridade |
| data-source.health.name | Identificador usado no relatório de integridade |
| data-fonte.saúde.threshold-ms | Duração máxima em milissegundos para consulta de verificação de integridade |
| data-source.user-delegated-auth | Configuração de objetos On-Behalf-Of (OBO) autenticação delegada pelo utilizador (apenas mssql) |
| data-source.user-delegated-auth.enabled | Ativa autenticação por OBO |
| data-source.user-delegated-auth.provider | Fornecedor de identidade OBO (apenas atualmente EntraId ) |
| data-source.user-delegated-auth.database-audience | Público-alvo para o token SQL a jusante |
Visão geral do formato
{
"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>"]
}
Origem de dados
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
$root |
data-source |
objecto | ✔️ Sim | - |
Propriedades aninhadas
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
enumeração | ✔️ Sim | None |
data-source |
connection-string |
cadeia (de caracteres) | ✔️ Sim | None |
data-source |
options |
objecto | ❌ Não | None |
Valores de propriedade
database-type |
Description | Versão Min |
|---|---|---|
mssql |
SQL na malha | - |
mssql |
Base de Dados SQL do Azure | - |
mssql |
Instância Gerida do SQL do Azure | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Armazém de Tecidos | - |
dwsql |
Ponto de extremidade do Fabric SQL Analytics | - |
postgresql |
PostgreSQL | ver. 11 |
mysql |
MySQL | ver. 8 |
cosmosdb_nosql |
Azure Cosmos DB for NoSQL | - |
cosmosdb_postgresql |
Azure Cosmos DB for PostgreSQL | - |
Format
{
"data-source": {
"database-type": <string>,
"connection-string": <string>,
"options": {
"<key-name>": <string>
}
}
}
Exemplo: SQL do 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
O Data API Builder utiliza SqlClient para SQL do Azure e SQL Server, que suporta variantes these cadeia de ligação.
Utilize SESSION_CONTEXT
Para o SQL do Azure e o SQL Server, o construtor de API de Dados pode incluir informações de Declarações no SQL .SESSION_CONTEXT
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;
Exemplo: 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
As "opções" especificadas (database, container, e schema) são específicas do Azure Cosmos DB.
Variáveis de ambiente
Use variáveis de ambiente para manter segredos de texto sem formatação fora do arquivo de configuração.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Resiliência da conexão
O construtor de API de dados usa o Backoff Exponencial para repetir solicitações de banco de dados após erros transitórios.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Identidades de serviços geridos (MSI)
As identidades de serviços geridos (MSI) são suportadas com DefaultAzureCredential definidas na biblioteca Azure.Identity. Saiba mais sobre identidades gerenciadas no Microsoft Entra para SQL do Azure.
Identidades geridas atribuídas pelo utilizador (UAMI)
Para a identidade gerida atribuída pelo utilizador, adicione as propriedades
Identidade gerida atribuída ao sistema (SAMI)
Para identidade gerida atribuída ao sistema, adicione a propriedade Autenticação e exclua os argumentos UserId e Password do seu cadeia de ligação: Authentication=Active Directory Managed Identity;.
Saúde (Fonte de dados)
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
data-source |
health |
objecto | No | – |
O construtor de API de dados suporta vários arquivos de configuração, cada um com sua própria fonte de dados. Esse bloco de configuração permite que cada fonte de dados tenha sua própria configuração de integridade.
Propriedades aninhadas
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
data-source.health |
enabled |
boolean | No | true |
data-source.health |
name |
cadeia (de caracteres) | No | database-type |
data-source.health |
threshold-ms |
número inteiro | No | 1000 |
Nome de verificação
Como vários arquivos de configuração podem apontar para fontes de dados do mesmo tipo, essas fontes de dados não podem ser distinguidas no relatório de integridade. Use name para atribuir um rótulo exclusivo e identificável usado apenas no relatório de integridade.
Verificar o comportamento
A consulta mais simples possível, específica para o tipo de banco de dados, é executada na fonte de dados fornecida para validar que a conexão pode ser aberta. Use a threshold-ms propriedade para configurar a duração máxima aceitável (em milissegundos) para que a consulta seja concluída.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
Autenticação delegada pelo utilizador
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
objecto | No | – |
On-Behalf-Of (OBO) autenticação delegada pelo utilizador para SQL Server e SQL do Azure. Quando ativado, o DAB troca o token de utilizador recebido por um token SQL a jusante para que a base de dados se autentique como o utilizador efetivo que chama. Esta funcionalidade é suportada apenas para fontes de dados mssql e requer autenticação Microsoft Entra ID a montante.
Note
A funcionalidade Data API builder 2.0 descrita nesta secção está atualmente em pré-visualização e pode mudar antes da disponibilidade geral. Para mais informações, consulte O que há de novo na versão 2.0.
Propriedades aninhadas
| Parent | Property | Tipo | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | falso |
data-source.user-delegated-auth |
provider |
enum (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
cadeia (de caracteres) | Sim (quando ativado) | None |
-
enabled—liga ou desliga o OBO. -
provider—o fornecedor de identidade para a troca de tokens. Atualmente, apenasEntraIdé suportada. -
database-audience—o público-alvo do token SQL a jusante (por exemplo,https://database.windows.net).
Variáveis de ambiente necessárias
Quando o OBO está ativado, o DAB lê as seguintes variáveis de ambiente para a troca de tokens:
| Variable | Description |
|---|---|
DAB_OBO_CLIENT_ID |
ID da aplicação (cliente) do registo da aplicação Microsoft Entra ID |
DAB_OBO_CLIENT_SECRET |
Segredo do cliente para o registo da aplicação |
DAB_OBO_TENANT_ID |
ID do locatário do Microsoft Entra ID |
Pooling de ligações por utilizador
Quando o OBO está ativado, o DAB mantém pools de ligação SQL separados por utilizador, para que o token de acesso de um utilizador nunca seja reutilizado para o pedido de outro utilizador.
Note
O pooling de ligação por utilizador aplica-se apenas quando a autenticação OBO está ativa. As implementações padrão não são afetadas.
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
Exemplo
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
Importante
OBO é suportado apenas para mssql. A database-audience propriedade é necessária quando o OBO está ativado. Executar esta configuração contra uma fonte de dados que não seja MSSQL falha na validação.