Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Daten-API-Generator 2.0 unterstützt die On-Behalf-Of-Authentifizierung (OBO), die manchmal als Pass-Through-Authentifizierung bezeichnet wird, für Microsoft SQL-Datenbanken mit Microsoft Entra ID. Wenn diese Option aktiviert ist, tauscht DAB das eingehende Benutzertoken gegen ein nachgeschaltetes SQL-Token, sodass die Datenbank den tatsächlichen aufrufenden Benutzer authentifiziert.
Bei der Standardauthentifizierung überprüft DAB das Token des Aufrufers, stellt jedoch mithilfe eigener Anmeldeinformationen (verwaltete Identität oder Verbindungszeichenfolge) eine Verbindung mit der Datenbank bereit. Mit OBO führt DAB einen Tokenaustausch durch, sodass die Datenbank die echte Benutzeridentität sieht.
Hinweis
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.
Wann soll OBO verwendet werden?
OBO ist die richtige Wahl, wenn die SQL-Datenbank wissen muss, wer der tatsächliche Aufrufer ist:
| Szenario | Verwenden Sie OBO? |
|---|---|
| Sicherheitsrichtlinien auf Zeilenebene, die von der Benutzeridentität abhängen | Ja |
| Compliance-Audits, die benutzerspezifische Datenbank-Zugriffsprotokolle erfordern | Ja |
| MCP-Szenarien, bei denen transparente Benutzeridentifikation wichtig ist | Ja |
| Einfacher API-Zugriff, bei dem DAB eine Verbindung mit eigenen Anmeldeinformationen herstellt | No |
| Nicht-MSSQL-Datenbanken | No |
Von Bedeutung
Heute wird OBO nur für Microsoft SQL-Datenbanken mit Entra-ID unterstützt.
Voraussetzungen
- Daten-API-Generator CLI, Version 2.0 oder höher
-
dab-config.jsonmitdata-source.database-typeFestgelegt aufmssql - Eine Entra-ID-App-Registrierung mit den entsprechenden API-Berechtigungen zum Anfordern von Token für die Datenbank
- Ein upstream-Identitätsanbieter, der JWTs ausgibt, die von DAB akzeptiert werden (Entra-ID oder ein benutzerdefinierter Anbieter, den Sie konfigurieren)
- Eine MSSQL-Datenbank, die für die Annahme von Microsoft Entra-ID-Token konfiguriert ist
Verbindungszeichenfolgenanforderung
Von Bedeutung
Wenn OBO aktiviert ist, darf die Verbindungszeichenfolge kein Schlüsselwort (z. B. Authentication=Active Directory Managed Identity) enthalten. Die Microsoft.Data.SqlClient Bibliothek wirft eine Ausnahme, wenn AccessToken auf einer Verbindung festgelegt ist, die Authentication= bereits in der Verbindungszeichenfolge enthält. Verwenden Sie eine Bare-Verbindungszeichenfolge, die nur Server-, Datenbank- und Verschlüsselungseinstellungen enthält:
Server=tcp:<server>.database.windows.net,1433;Database=<db>;Encrypt=true;TrustServerCertificate=true
DAB 2.0 mit OBO erwirbt automatisch ein MSI-Token für Gesundheitsprüfungen und interne Vorgänge und injiziert pro Benutzer das OBO-Token für authentifizierte Anforderungen.
Schritt 1: Festlegen der erforderlichen Umgebungsvariablen
DAB liest die folgenden Umgebungsvariablen für den OBO-Tokenaustausch vor:
| Variable | Beschreibung |
|---|---|
DAB_OBO_CLIENT_ID |
Anwendungs-ID (Client)-ID der Entra-ID-App-Registrierung |
DAB_OBO_TENANT_ID |
Entra ID-Mandanten-ID |
DAB_OBO_CLIENT_SECRET |
Geheimer Clientschlüssel für die App-Registrierung |
export DAB_OBO_CLIENT_ID="1234-abcd-5678-efgh"
export DAB_OBO_TENANT_ID="abcd-1234-efgh-5678"
export DAB_OBO_CLIENT_SECRET="supersecretvalue"
Schritt 2: Konfigurieren der Datenquelle
Aktivieren Sie OBO in Ihrem dab-config.json im data-source Abschnitt. Die Datenquelle muss sein mssql.
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
}
}
| Eigentum | Beschreibung |
|---|---|
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 (erforderlich, wenn OBO aktiviert ist) |
Schritt 3: Deaktivieren der Zwischenspeicherung
Die Zwischenspeicherung muss deaktiviert werden, wenn OBO konfiguriert ist. Da jeder Benutzer eine unterschiedliche Datenbankverbindung erhält, dürfen zwischengespeicherte Ergebnisse aus der Verbindung eines Benutzers nicht an eine andere übermittelt werden.
{
"runtime": {
"cache": {
"enabled": false
}
}
}
Schritt 4: Konfigurieren mithilfe der CLI
Sie können OBO auch vollständig über die CLI konfigurieren:
dab configure --data-source.database-type mssql
dab configure --runtime.cache.enabled false
dab configure --data-source.user-delegated-auth.enabled true
dab configure --data-source.user-delegated-auth.provider EntraId
dab configure --data-source.user-delegated-auth.database-audience "https://database.windows.net"
Vollständiges Konfigurationsbeispiel
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')",
"user-delegated-auth": {
"enabled": true,
"provider": "EntraId",
"database-audience": "https://database.windows.net"
}
},
"runtime": {
"cache": {
"enabled": false
}
}
}
Dabei SQL_CONNECTION_STRING muss es sich um eine bare Verbindungszeichenfolge ohne Authentication= Schlüsselwort handelt, z. B.:
Server=tcp:<server>.database.windows.net,1433;Database=<db>;Encrypt=true;TrustServerCertificate=true
Verbindungspooling pro Benutzer
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. Wenn die Sicherheit auf Zeilenebene davon abhängt, wer verbunden ist, können Sie sicher sein, dass die Wiederverwendung von Verbindungen zwischen Benutzern nicht stillschweigend den falschen Zugriff gewährt.
Hinweis
Bei Verwendung von OBO werden alle benutzerdefinierten Werte, die Sie möglicherweise in das Anwendungsnamenfeld der SQL-Verbindungszeichenfolge einfügen, möglicherweise abgeschnitten.