Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La data-source sezione definisce i dettagli di accesso al database. Definisce anche le opzioni di database.
Impostazioni origine dati
| Property | Description |
|---|---|
| origine dati | Oggetto contenente le impostazioni di connettività del database |
| data-source.database-type | Database usato nel back-end: mssql, postgresqlmysql, , cosmosdb_nosql,cosmosdb_postgresql |
| data-source.connection-string | Stringa di connessione per il tipo di database selezionato |
| data-source.options | Proprietà specifiche del database (ad esempio, opzioni per SQL Server, Cosmos DB e così via) |
| data-source.options.database | Nome del database Azure Cosmos DB per NoSQL (obbligatorio quando database-type = cosmosdb_nosql) |
| data-source.options.container | Nome del contenitore Azure Cosmos DB per NoSQL (obbligatorio quando database-type = cosmosdb_nosql) |
| data-source.options.schema | Percorso del file di schema GraphQL (obbligatorio quando database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Abilita l'invio di attestazioni JWT (JSON Web Token) come contesto di sessione (solo SQL Server) |
| data-source.health | Oggetto che configura i controlli di integrità per l'origine dati |
| data-source.health.enabled | Abilita l'endpoint di controllo integrità |
| data-source.health.name | Identificatore usato nel report sull'integrità |
| data-source.health.threshold-ms | Durata massima in millisecondi per la query di controllo integrità |
| data-source.user-delegated-auth | Configurazione dell'oggetto on-Behalf-Of (OBO) autenticazione delegata dall'utente (solo mssql) |
| data-source.user-delegated-auth.enabled | Abilita l'autenticazione OBO |
| data-source.user-delegated-auth.provider | Provider di identità OBO (attualmente EntraId solo) |
| data-source.user-delegated-auth.database-audience | Destinatari del token SQL downstream |
Panoramica del 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>"]
}
L'origine dei dati
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
data-source |
object | ✔️ Sì | - |
Proprietà annidate
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
enum | ✔️ Sì | None |
data-source |
connection-string |
string | ✔️ Sì | None |
data-source |
options |
object | ❌ No | None |
Valori delle proprietà
database-type |
Description | Versione minima |
|---|---|---|
mssql |
SQL in Fabric | - |
mssql |
Database SQL di Microsoft Azure | - |
mssql |
Istanza gestita di SQL di Azure | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Magazzino tessuti | - |
dwsql |
Endpoint di Analisi SQL di Infrastruttura | - |
postgresql |
PostgreSQL | ver. 11 |
mysql |
MySQL | ver. 8 |
cosmosdb_nosql |
Azure Cosmos DB per il NoSQL | - |
cosmosdb_postgresql |
Azure Cosmos DB con PostgreSQL | - |
Format
{
"data-source": {
"database-type": <string>,
"connection-string": <string>,
"options": {
"<key-name>": <string>
}
}
}
Esempio: SQL di Azure e 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
Viene usato SqlClient per SQL di Azure e SQL Server, che supporta queste varianti di stringhe di connessione.
Consumare SESSION_CONTEXT
Per SQL di Azure e SQL Server, Il generatore di API dati può includere le informazioni sulle attestazioni in 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;
Esempio: 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
Le "opzioni" specificate (database, containere schema) sono specifiche di Azure Cosmos DB.
Variabili di ambiente
Usare le variabili di ambiente per mantenere i segreti di testo normale all'esterno del file di configurazione.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Resilienza della connessione
Il generatore di API dati usa il backoff esponenziale per ripetere le richieste di database dopo errori temporanei.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Identità del servizio gestito
Le identità del servizio gestito sono supportate con DefaultAzureCredential la libreria definita.Azure.Identity Altre informazioni sulle identità gestite in Microsoft Entra per SQL di Azure.
identità gestite User-Assigned (UAMI)
Per Identità gestita assegnata dall'utente, aggiungere le proprietà Autenticazione e ID utente alla stringa di connessione sostituendo l'ID client dell'identità gestita assegnata dall'utente: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
identità gestita System-Assigned (SAMI)
Per Identità gestita assegnata dal sistema, aggiungere la proprietà Authentication ed escludere gli argomenti UserId e Password dalla stringa di connessione: Authentication=Active Directory Managed Identity;.
Integrità (origine dati)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
health |
object | No | – |
Il generatore di API dati supporta più file di configurazione, ognuno con la propria origine dati. Questo blocco di configurazione consente a ogni origine dati di avere una propria configurazione di integrità.
Proprietà annidate
| 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 |
Controlla nome
Poiché più file di configurazione possono puntare a origini dati dello stesso tipo, tali origini dati non possono essere distinte nel report sull'integrità. Usare name per assegnare un'etichetta univoca e identificabile usata solo nel report sull'integrità.
Controllare il comportamento
La query più semplice possibile, specifica del tipo di database, viene eseguita sull'origine dati specificata per verificare che la connessione possa essere aperta. Utilizzare la threshold-ms proprietà per configurare la durata massima accettabile (in millisecondi) per il completamento della query.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
Autenticazione delegata dall'utente
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
object | No | – |
Autenticazione delegata dall'utente on-Behalf-Of (OBO) per SQL Server e Azure SQL. Se abilitata, DAB scambia il token utente in ingresso per un token SQL downstream in modo che il database esegua l'autenticazione come utente chiamante effettivo. Questa funzionalità è supportata solo per le mssql origini dati e richiede l'autenticazione di Entra ID upstream.
Note
La funzionalità Generatore API dati 2.0 descritta in questa sezione è attualmente in anteprima e potrebbe cambiare prima della disponibilità generale. Per altre informazioni, vedere Novità della versione 2.0.
Proprietà annidate
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | falso |
data-source.user-delegated-auth |
provider |
enumerazione (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
string | Sì (se abilitata) | None |
-
enabled— attiva o disattiva OBO. -
provider: provider di identità per lo scambio di token. Attualmente è supportato soloEntraId. -
database-audience: il gruppo di destinatari per il token SQL downstream (ad esempio,https://database.windows.net).
Variabili di ambiente obbligatorie
Quando OBO è abilitato, DAB legge le variabili di ambiente seguenti per lo scambio di token:
| Variable | Description |
|---|---|
DAB_OBO_CLIENTID |
ID applicazione (client) della registrazione dell'app Entra ID |
DAB_OBO_CLIENTSECRET |
Segreto client per la registrazione dell'app |
DAB_OBO_TENANTID |
Entra ID tenant ID |
Pool di connessioni per utente
Quando OBO è abilitato, DAB gestisce pool di connessioni SQL separati per utente in modo che il token di accesso di un utente non venga mai riutilizzato per la richiesta di un altro utente.
Note
Il pool di connessioni per utente si applica solo quando l'autenticazione OBO è attiva. Le distribuzioni standard non sono interessate.
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
Esempio
{
"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 è supportato solo per mssql. La database-audience proprietà è obbligatoria quando OBO è abilitato. L'esecuzione di questa configurazione su un'origine dati non MSSQL non ha esito negativo.