Delen via


Gegevensbron

In data-source de sectie worden de details van de databasetoegang gedefinieerd. Er worden ook databaseopties gedefinieerd.

Gegevensbroninstellingen

Property Description
gegevensbron Object met databaseconnectiviteitsinstellingen
data-source.database-type Database die wordt gebruikt in de back-end: mssql, postgresql, mysql, cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Verbindingsreeks voor het geselecteerde databasetype
data-source.options Databasespecifieke eigenschappen (bijvoorbeeld opties voor SQL Server, Cosmos DB, enzovoort)
data-source.options.database Naam van de Azure Cosmos DB for NoSQL-database (vereist wanneer database-type = cosmosdb_nosql)
data-source.options.container Naam van de Azure Cosmos DB for NoSQL-container (vereist wanneer database-type = cosmosdb_nosql)
data-source.options.schema Pad naar het GraphQL-schemabestand (vereist wanneer database-type = cosmosdb_nosql)
data-source.options.set-session-context Hiermee schakelt u het verzenden van JSON-webtokenclaims (JWT) in als sessiecontext (alleen SQL Server)
data-source.health Object configureren van statuscontroles voor de gegevensbron
data-source.health.enabled Hiermee schakelt u het eindpunt van de statuscontrole in
data-source.health.name Id die wordt gebruikt in het statusrapport
data-source.health.threshold-ms Maximale duur in milliseconden voor statuscontrolequery
data-source.user-delegated-auth Object configureren aan-Behalf-Of (OBO) door de gebruiker gedelegeerde verificatie (alleen mssql)
data-source.user-delegated-auth.enabled Hiermee schakelt u OBO-verificatie in
data-source.user-delegated-auth.provider OBO-id-provider (momenteel EntraId alleen)
data-source.user-delegated-auth.database-audience Doelgroep voor het downstream-SQL-token

Overzicht van opmaak

{
  "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>"]
}

Gegevensbron

Parent Property Type Required Default
$root data-source object ✔️ Ja -

Geneste eigenschappen

Parent Property Type Required Default
data-source database-type enum ✔️ Ja None
data-source connection-string string ✔️ Ja None
data-source options object ❌ Nee None

Vastgoedwaarden

database-type Description Minimale versie
mssql SQL in Fabric -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Textielmagazijn -
dwsql Sql Analytics-eindpunt voor fabric -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB voor NoSQL -
cosmosdb_postgresql Azure Cosmos DB voor PostgreSQL -

Format

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      "<key-name>": <string>
    }
  }
}

Voorbeeld: 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

We gebruiken SqlClient voor Azure SQL en SQL Server, die ondersteuning biedt voor deze verbindingsreeksvarianten.

Consumeren SESSION_CONTEXT

Voor Azure SQL en SQL Server kan Data API Builder claimgegevens bevatten 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;

Voorbeeld: 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 opgegeven opties (database, containeren schema) zijn specifiek voor Azure Cosmos DB.

Omgevingsvariabelen

Gebruik omgevingsvariabelen om geheimen zonder opmaak buiten uw configuratiebestand te houden.

Tip

Data API Builder ondersteunt zowel de functie als .env de@env() bestanden.

"data-source": {
  "database-type": "mssql",
  "connection-string": "@env('SQL_CONNECTION_STRING')"
}

Verbindingstolerantie

Data API Builder maakt gebruik van Exponential Backoff om databaseaanvragen opnieuw uit te voeren na tijdelijke fouten.

Attempts First Second Third Fourth Fifth
Seconds 2s 4s 8s 16s 32s

Managed Service Identities (MSI)

Managed Service Identities (MSI) worden ondersteund met DefaultAzureCredential gedefinieerde bibliotheek Azure.Identity . Meer informatie over beheerde identiteiten in Microsoft Entra voor Azure SQL.

User-Assigned Beheerde identiteiten (UAMI)

Voor door de gebruiker toegewezen beheerde identiteit voegt u de eigenschappen verificatie en gebruikers-id toe aan uw verbindingsreeks terwijl u de client-id van de door de gebruiker toegewezen beheerde identiteit vervangt: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

System-Assigned Managed Identity (SAMI)

Voor door het systeem toegewezen beheerde identiteit voegt u de eigenschap Verificatie toe en sluit u de argumenten UserId en Wachtwoord uit van de verbindingsreeks: Authentication=Active Directory Managed Identity;.

Status (gegevensbron)

Parent Property Type Required Default
data-source health object No

Data API Builder ondersteunt meerdere configuratiebestanden, elk met een eigen gegevensbron. Met dit configuratieblok kan elke gegevensbron een eigen statusconfiguratie hebben.

Geneste eigenschappen

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

Naam controleren

Omdat meerdere configuratiebestanden naar gegevensbronnen van hetzelfde type kunnen verwijzen, kunnen deze gegevensbronnen niet worden onderscheiden in het statusrapport. Gebruik name dit om een uniek, identificeerbaar label toe te wijzen dat alleen in het statusrapport wordt gebruikt.

Gedrag controleren

De eenvoudigste query, specifiek voor het databasetype, wordt uitgevoerd op basis van de opgegeven gegevensbron om te controleren of de verbinding kan worden geopend. Gebruik de threshold-ms eigenschap om de maximaal acceptabele duur (in milliseconden) voor die query te configureren.

Format

{
  "data-source": {
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  }
}

Door de gebruiker gedelegeerde verificatie

Parent Property Type Required Default
data-source user-delegated-auth object No

On-Behalf-Of (OBO) door de gebruiker gedelegeerde verificatie voor SQL Server en Azure SQL. Indien ingeschakeld, wisselt DAB het binnenkomende gebruikerstoken uit voor een downstream SQL-token, zodat de database wordt geverifieerd als de werkelijke aanroepende gebruiker. Deze functie wordt alleen ondersteund voor mssql gegevensbronnen en vereist upstream-verificatie van Entra-id's.

Note

De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.

Geneste eigenschappen

Parent Property Type Required Default
data-source.user-delegated-auth enabled boolean No onwaar
data-source.user-delegated-auth provider enum (EntraId) No EntraId
data-source.user-delegated-auth database-audience string Ja (indien ingeschakeld) None
  • enabled— schakelt OBO in of uit.
  • provider— de id-provider voor de tokenuitwisseling. Momenteel wordt alleen EntraId ondersteund.
  • database-audience— de doelgroep voor het downstream SQL-token (bijvoorbeeld https://database.windows.net).

Vereiste omgevingsvariabelen

Wanneer OBO is ingeschakeld, leest DAB de volgende omgevingsvariabelen voor de tokenuitwisseling:

Variable Description
DAB_OBO_CLIENTID Toepassings-id (client) van de entra-id-app-registratie
DAB_OBO_CLIENTSECRET Clientgeheim voor de app-registratie
DAB_OBO_TENANTID Tenant-id entra-id

Groepsgewijze verbindingen per gebruiker

Wanneer OBO is ingeschakeld, onderhoudt DAB afzonderlijke SQL-verbindingsgroepen per gebruiker, zodat het toegangstoken van één gebruiker nooit opnieuw wordt gebruikt voor de aanvraag van een andere gebruiker.

Note

Groepsgewijze verbindingen per gebruiker is alleen van toepassing wanneer OBO-verificatie actief is. Standaardimplementaties worden niet beïnvloed.

Format

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": <true> | <false> (default),
      "provider": <string>,
      "database-audience": <string>
    }
  }
}

Voorbeeld

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')",
    "user-delegated-auth": {
      "enabled": true,
      "provider": "EntraId",
      "database-audience": "https://database.windows.net"
    }
  }
}

Belangrijk

OBO wordt alleen ondersteund voor mssql. De database-audience eigenschap is vereist wanneer OBO is ingeschakeld. Het uitvoeren van deze configuratie voor een niet-MSSQL-gegevensbron mislukt.