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 utilizada no back-end: 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 |
Azure SQL MI | - |
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
Usamos SqlClient para Azure SQL e SQL Server, que suportam estas variantes de strings de ligação.
Consumir 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ço gerenciado (MSI)
As Identidades de Serviço Gerenciado (MSI) são suportadas com DefaultAzureCredential as definidas na Azure.Identity biblioteca. Saiba mais sobre identidades gerenciadas no Microsoft Entra para Azure SQL.
User-Assigned identidades gerenciadas (UAMI)
Para a Identidade Gerida Atribuída pelo Utilizador, adicione as propriedades de Autenticação e ID de Utilizador à sua cadeia de ligação enquanto substitui o ID do cliente da Identidade Gerida Atribuída pelo Utilizador: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
System-Assigned Identidade Gerenciada (SAMI)
Para Identidade Gerida Atribuída ao Sistema, adicione a propriedade de Autenticação e exclua os argumentos UserID e Password da sua string 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 Azure SQL. 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 mssql fontes de dados e requer autenticação 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_CLIENTID |
ID da aplicação (cliente) do registo da aplicação Entra ID |
DAB_OBO_CLIENTSECRET |
Segredo do cliente para o registo da aplicação |
DAB_OBO_TENANTID |
Entra ID tenant 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.