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 i 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
Vi använder SqlClient för Azure SQL och SQL Server, som stöder dessa varianter av anslutningssträngar.
Konsumera 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 definierade i Azure.Identity biblioteket. Läs mer om hanterade identiteter i Microsoft Entra för Azure SQL.
User-Assigned hanterade identiteter (UAMI)
För Användartilldelad hanterad identitet lägger du till egenskaperna Autentisering och Användar-ID i anslutningssträngen medan du ersätter i klient-ID:t för den användartilldelade hanterade identiteten: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.
System-Assigned hanterad identitet (SAMI)
För Systemtilldelad hanterad identitet lägger du till egenskapen Autentisering och exkluderar argumenten UserId och Lösenord från anslutningssträngen: Authentication=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 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_CLIENTID |
Program-ID för entra-ID-appregistreringen |
DAB_OBO_CLIENTSECRET |
Klienthemlighet för appregistreringen |
DAB_OBO_TENANTID |
Klient-ID för Entra-ID |
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.