Freigeben über


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 Im Back-End verwendete Datenbank: mssql, postgresql, mysql, , 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 Fabric Warehouse -
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

Wir verwenden SqlClient Azure SQL und SQL Server, die diese Verbindungszeichenfolgenvarianten unterstützen.

Verbrauchen SESSION_CONTEXT

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 .envauch 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 (MANAGED Service Identities, MSI) werden in DefaultAzureCredential der Azure.Identity Bibliothek definiert unterstützt. Erfahren Sie mehr über verwaltete Identitäten in Microsoft Entra für Azure SQL.

User-Assigned Verwaltete Identitäten (UAMI)

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

System-Assigned Managed Identity (SAMI)

Fügen Sie für vom System zugewiesene verwaltete Identität die Authentifizierungseigenschaft an, und schließen Sie die Argumente UserId und Password aus Ihrer 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 die 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_CLIENTID Anwendungs-ID (Client)-ID der Entra-ID-App-Registrierung
DAB_OBO_CLIENTSECRET Geheimer Clientschlüssel für die App-Registrierung
DAB_OBO_TENANTID 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.