Freigeben über


Konfigurieren der On-Behalf-Of-(OBO)-benutzerdelegierten Authentifizierung

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.json mit data-source.database-type Festgelegt auf mssql
  • 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.