Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Avsnittet data-source definierar information om databasåtkomst. Den definierar även databasalternativ.
Inställningar för datakälla
| Property | Description |
|---|---|
| datakälla | Objekt som innehåller inställningar för databasanslutning |
| data-source.database-type | Databas som används av serverdelen: mssql, postgresql, mysql, , cosmosdb_nosqlcosmosdb_postgresql |
| data-source.connection-string | Anslutningssträng för den valda databastypen |
| data-source.options | Databasspecifika egenskaper (till exempel alternativ för SQL Server, Cosmos DB osv.) |
| data-source.options.database | Namnet på Azure Cosmos DB för NoSQL-databasen (krävs när database-type = cosmosdb_nosql) |
| data-source.options.container | Namnet på Azure Cosmos DB för NoSQL-containern (krävs när database-type = cosmosdb_nosql) |
| data-source.options.schema | Sökväg till GraphQL-schemafilen (krävs när database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Aktiverar sändning av JSON-webbtokenanspråk (JWT) som sessionskontext (endast SQL Server) |
| data-source.health | Objekt som konfigurerar hälsokontroller för datakällan |
| data-source.health.enabled | Aktiverar slutpunkten för hälsokontroll |
| data-source.health.name | Identifierare som används i hälsorapporten |
| data-source.health.threshold-ms | Maximal varaktighet i millisekunder för hälsokontrollfråga |
| data-source.user-delegated-auth | Objekt som konfigurerar användardelad autentisering (endast mssql)Behalf-Of (OBO) |
| data-source.user-delegated-auth.enabled | Aktiverar OBO-autentisering |
| data-source.user-delegated-auth.provider | OBO-identitetsprovider (endast för närvarande EntraId ) |
| data-source.user-delegated-auth.database-audience | Målgrupp för den underordnade SQL-token |
Formatöversikt
{
"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>"]
}
Datakälla
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
data-source |
object | ✔️ Ja | - |
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
database-type |
enum | ✔️ Ja | None |
data-source |
connection-string |
string | ✔️ Ja | None |
data-source |
options |
object | ❌ Nej | None |
Egenskapsvärden
database-type |
Description | Lägsta version |
|---|---|---|
mssql |
SQL i infrastrukturresurser | - |
mssql |
Azure SQL Database | - |
mssql |
Azure SQL MI | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Textillager | - |
dwsql |
Sql Analytics-slutpunkt för infrastrukturresurser | - |
postgresql |
PostgreSQL | ver. 11 |
mysql |
MySQL | ver. 8 |
cosmosdb_nosql |
Azure Cosmos DB för NoSQL | - |
cosmosdb_postgresql |
Azure Cosmos DB för PostgreSQL | - |
Format
{
"data-source": {
"database-type": <string>,
"connection-string": <string>,
"options": {
"<key-name>": <string>
}
}
}
Exempel: Azure SQL & 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
Data API Builder använder SqlClient för Azure SQL och SQL Server, som stöder varianterna these reťazec pripojenia.
Använd SESSION_CONTEXT
För Azure SQL och SQL Server kan Data API-byggare inkludera anspråksinformation i SQL:s 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;
Exempel: 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
De "alternativ" som anges (database, containeroch schema) är specifika för Azure Cosmos DB.
Miljövariabler
Använd miljövariabler för att hålla oformaterade texthemligheter borta från konfigurationsfilen.
Tip
Data-API Builder stöder både @env() funktionen och .env filerna.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Anslutningsmotståndskraft
Data API Builder använder exponentiell backoff för att försöka databasbegäranden igen efter tillfälliga fel.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Hanterade tjänstidentiteter (MSI)
Hanterade tjänstidentiteter (MSI) stöds med DefaultAzureCredential definierat i biblioteket Azure.Identity. Läs mer om hanterade identiteter i Microsoft Entra för Azure SQL.
Användartilldelade hanterade identiteter (UAMI)
För användartilldelad hanterad identitet lägger du till egenskaperna Authentication och User ID i din reťazec pripojenia när du ersätter klient-ID:t för den användartilldelade hanterade identiteten: Authentication=služba Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
Systemtilldelad hanterad identitet (SAMI)
För systemtilldelad hanterad identitet lägger du till egenskapen Authentication och exkluderar UserId och Password argument från din reťazec pripojenia: Authentication=služba Active Directory Managed Identity;.
Hälsa (datakälla)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
health |
object | No | – |
Data API Builder stöder flera konfigurationsfiler, var och en med sin egen datakälla. Med det här konfigurationsblocket kan varje datakälla ha en egen hälsokonfiguration.
Kapslade egenskaper
| 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 |
Kontrollera namn
Eftersom flera konfigurationsfiler kan peka på datakällor av samma typ kan dessa datakällor inte särskiljas i hälsorapporten. Använd name för att tilldela en unik, identifierbar etikett som endast används i hälsorapporten.
Kontrollera beteende
Den enklaste möjliga frågan – specifik för databastypen – körs mot den angivna datakällan för att verifiera att anslutningen kan öppnas. Använd egenskapen threshold-ms för att konfigurera den maximala acceptabla varaktigheten (i millisekunder) för att frågan ska slutföras.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}
Användardelegering
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
user-delegated-auth |
object | No | – |
Användardelegering påBehalf-Of (OBO) för SQL Server och Azure SQL. När den är aktiverad byter DAB ut den inkommande användartoken mot en underordnad SQL-token så att databasen autentiseras som den faktiska anropande användaren. Den här funktionen stöds endast för mssql datakällor och kräver Microsoft Entra ID autentisering uppströms.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source.user-delegated-auth |
enabled |
boolean | No | falsk |
data-source.user-delegated-auth |
provider |
uppräkning (EntraId) |
No | EntraId |
data-source.user-delegated-auth |
database-audience |
string | Ja (när det är aktiverat) | None |
-
enabled— aktiverar eller inaktiverar OBO. -
provider– identitetsprovidern för tokenutbytet. För närvarande stöds endastEntraId. -
database-audience– målgruppen för den underordnade SQL-token (till exempelhttps://database.windows.net).
Obligatoriska miljövariabler
När OBO är aktiverat läser DAB följande miljövariabler för tokenutbytet:
| Variable | Description |
|---|---|
DAB_OBO_CLIENT_ID |
Program-ID för Microsoft Entra ID appregistrering |
DAB_OBO_CLIENT_SECRET |
Klienthemlighet för appregistreringen |
DAB_OBO_TENANT_ID |
Klient-ID för Microsoft Entra |
Anslutningspooler per användare
När OBO är aktiverat underhåller DAB separata SQL-anslutningspooler per användare så att en användares åtkomsttoken aldrig återanvänds för en annan användares begäran.
Note
Anslutningspooler per användare gäller endast när OBO-autentisering är aktiv. Standarddistributioner påverkas inte.
Format
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": <true> | <false> (default),
"provider": <string>,
"database-audience": <string>
}
}
}
Exempel
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
Viktigt!
OBO stöds endast för mssql. Egenskapen database-audience krävs när OBO är aktiverat. Det går inte att verifiera att den här konfigurationen körs mot en icke-MSSQL-datakälla.