Datenquelle

Der data-source Abschnitt definiert die Datenbankzugriffsdetails. Außerdem werden Datenbankoptionen definiert.

Datenquelleneinstellungen

Property Description
Datenquelle Objekt, das Datenbankkonnektivitätseinstellungen enthält
data-source.database-type Vom Back-End verwendete Datenbank: mssql, , mysqlpostgresql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Verbindungszeichenfolge für den ausgewählten Datenbanktyp
data-source.options Datenbankspezifische Eigenschaften (z. B. Optionen für SQL Server, Cosmos DB usw.)
data-source.options.database Name der Azure Cosmos DB für NoSQL-Datenbank (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.container Name des Azure Cosmos DB für NoSQL-Container (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.schema Pfad zur GraphQL-Schemadatei (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.set-session-context Aktiviert das Senden von JSON-Webtokenansprüchen (JWT) als Sitzungskontext (nur SQL Server)
data-source.health Objektkonfiguration von Integritätsprüfungen für die Datenquelle
data-source.health.enabled Aktiviert den Integritätsprüfungsendpunkt.
data-source.health.name Bezeichner, der im Integritätsbericht verwendet wird
data-source.health.threshold-ms Maximale Dauer in Millisekunden für die Integritätsprüfungsabfrage
data-source.user-delegated-auth Objekt, das die benutzerdelegierte Authentifizierung (On-Behalf-Of, OBO) konfiguriert (nur mssql)
data-source.user-delegated-auth.enabled Aktiviert die OBO-Authentifizierung
data-source.user-delegated-auth.provider OBO-Identitätsanbieter (derzeit EntraId nur)
data-source.user-delegated-auth.database-audience Zielgruppe für das nachgeschaltete SQL-Token

Formatübersicht

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

Datenquelle

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

Verschachtelte Eigenschaften

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

Immobilienwerte

database-type Description Min Version
mssql SQL in Fabric -
mssql Azure SQL-Datenbank -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Stofflagerhaus -
dwsql Fabric SQL Analytics-Endpunkt -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB für NoSQL-Datenbanklösungen -
cosmosdb_postgresql Azure Cosmos DB für PostgreSQL -

Format

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

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

Der Daten-API-Generator verwendet SqlClient für Azure SQL und SQL Server, die these Verbindungszeichenfolge Varianten unterstützt.

SESSION_CONTEXT verwenden

Für Azure SQL und SQL Server kann der Daten-API-Generator Anspruchsinformationen in SQL enthalten 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;

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

Die angegebenen "Optionen" (database, containerund schema) sind spezifisch für Azure Cosmos DB.

Umgebungsvariablen

Verwenden Sie Umgebungsvariablen, um geheime Nur-Text-Schlüssel aus Ihrer Konfigurationsdatei zu behalten.

Tip

Der Daten-API-Generator unterstützt sowohl die Funktion als @env()auch die .env Dateien.

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

Verbindungsstabilität

Der Daten-API-Generator verwendet exponentielles Backoff, um Datenbankanforderungen nach vorübergehenden Fehlern erneut zu versuchen.

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

Verwaltete Dienstidentitäten (MSI)

Verwaltete Dienstidentitäten (MSI) werden mit DefaultAzureCredential unterstützt, die in der bibliothek Azure.Identity definiert sind. Erfahren Sie mehr über verwaltete Identitäten in Microsoft Entra für Azure SQL.

Vom Benutzer zugewiesene verwaltete Identitäten (UAMI)

Fügen Sie für vom Benutzer zugewiesene verwaltete Identität die Eigenschaften Authentication und Benutzer-ID an Ihre Verbindungszeichenfolge an, während sie die Client-ID Ihrer vom Benutzer zugewiesenen verwalteten Identität ersetzen: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

Vom System zugewiesene verwaltete Identität (SAMI)

Fügen Sie für vom System zugewiesene verwaltete Identität die Eigenschaft Authentication an, und schließen Sie die Argumente UserId und Password aus Ihrem Verbindungszeichenfolge aus: Authentication=Active Directory Managed Identity;.

Integrität (Datenquelle)

Parent Property Type Required Default
data-source health object No

Der Daten-API-Generator unterstützt mehrere Konfigurationsdateien, die jeweils über eine eigene Datenquelle verfügen. Mit diesem Konfigurationsblock kann jede Datenquelle über eine eigene Integritätskonfiguration verfügen.

Verschachtelte Eigenschaften

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

Überprüfen des Namens

Da mehrere Konfigurationsdateien auf Datenquellen desselben Typs verweisen können, können diese Datenquellen im Integritätsbericht nicht unterschieden werden. Dient name zum Zuweisen einer eindeutigen, identifizierbaren Bezeichnung, die nur im Integritätsbericht verwendet wird.

Überprüfen des Verhaltens

Die einfachste abfrage , die für den Datenbanktyp spezifisch ist, wird für die angegebene Datenquelle ausgeführt, um zu überprüfen, ob die Verbindung geöffnet werden kann. Verwenden Sie die threshold-ms Eigenschaft, um die maximal zulässige Dauer (in Millisekunden) für diese Abfrage zu konfigurieren.

Format

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

Benutzerdelegierte Authentifizierung

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

On-Behalf-Of (OBO) benutzerdelegierte Authentifizierung für SQL Server und Azure SQL. Wenn diese Option aktiviert ist, wechselt DAB das eingehende Benutzertoken für ein nachgeschaltetes SQL-Token, sodass die Datenbank als tatsächlich aufgerufener Benutzer authentifiziert wird. Dieses Feature wird nur für mssql-Datenquellen unterstützt und erfordert Microsoft Entra ID Authentifizierung upstream.

Note

Die in diesem Abschnitt beschriebene Funktionalität des Daten-API-Generators 2.0 befindet sich derzeit in der Vorschau und kann sich vor der allgemeinen Verfügbarkeit ändern. Weitere Informationen finden Sie unter Neuigkeiten in Version 2.0.

Verschachtelte Eigenschaften

Parent Property Type Required Default
data-source.user-delegated-auth enabled boolean No FALSCH
data-source.user-delegated-auth provider Enumeration (EntraId) No EntraId
data-source.user-delegated-auth database-audience string Ja (wenn aktiviert) None
  • enabled– aktiviert oder deaktiviert OBO.
  • provider– der Identitätsanbieter für den Tokenaustausch. Derzeit wird nur EntraId unterstützt.
  • database-audience— die Zielgruppe für das nachgeschaltete SQL-Token (z. B https://database.windows.net. ).

Erforderliche Umgebungsvariablen

Wenn OBO aktiviert ist, liest DAB die folgenden Umgebungsvariablen für den Tokenaustausch:

Variable Description
DAB_OBO_CLIENT_ID Anwendungs-ID (Client) der Microsoft Entra ID App-Registrierung
DAB_OBO_CLIENT_SECRET Geheimer Clientschlüssel für die App-Registrierung
DAB_OBO_TENANT_ID Microsoft Entra ID Mandanten-ID

Pro Benutzerverbindungspooling

Wenn OBO aktiviert ist, verwaltet DAB separate SQL-Verbindungspools pro Benutzer, sodass das Zugriffstoken eines Benutzers nie für die Anforderung eines anderen Benutzers wiederverwendet wird.

Note

Die pooling pro Benutzer gilt nur, wenn die OBO-Authentifizierung aktiv ist. Standardbereitstellungen sind nicht betroffen.

Format

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

Beispiel

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

Von Bedeutung

OBO wird nur für mssql. Die database-audience Eigenschaft ist erforderlich, wenn OBO aktiviert ist. Das Ausführen dieser Konfiguration für eine Nicht-MSSQL-Datenquelle schlägt die Überprüfung fehl.