Dela via


Datakälla

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 endast EntraId.
  • database-audience– målgruppen för den underordnade SQL-token (till exempel https://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.