Freigeben über


Authentifizieren bei einer Datenbankinstanz

Von Bedeutung

Dieses Feature befindet sich in der öffentlichen Vorschau in den folgenden Regionen: westus, westus2, eastus, eastus2, centralus, southcentralus, northeurope, westeurope, australiaeast, brazilsouth, canadacentral, centralindia, southeastasia, uksouth.

Auf dieser Seite wird beschrieben, wie Sie sich bei einer Lakebase-Datenbankinstanz authentifizieren. Es gibt zwei Möglichkeiten zur Authentifizierung:

  1. Rufen Sie ein OAuth-Token ab und authentifizieren Sie sich mithilfe von Azure Databricks-Identitäten.
  2. Verwenden Sie native Postgres-Rollen mit Kennwörtern.

Authentifizieren mit Azure Databricks-Identitäten

Wenn Sie sich als Azure Databricks-Identität authentifizieren, müssen Sie ein OAuth-Token generieren und als Kennwort verwenden, wenn Sie eine Verbindung mit Postgres herstellen.

Überlegungen vor Beginn

  • OAuth-Token laufen nach einer Stunde ab, aber das Ablaufdatum wird nur bei der Authentifizierung durchgesetzt. Offene Verbindungen bleiben auch dann aktiv, wenn das Token abläuft. Jeder PostgreSQL-Befehl, der eine Authentifizierung erfordert, schlägt jedoch fehl, wenn das Token abgelaufen ist.

  • OAuth-Token, die für die Postgres-Authentifizierung verwendet werden, sind an den Arbeitsbereich gebunden und sollten zu demselben Arbeitsbereich gehören, der die Datenbankinstanz besitzt. Die arbeitsbereichübergreifende Tokenauthentifizierung wird nicht unterstützt. Weitere Informationen zur Authentifizierung finden Sie unter "Authentication for the Databricks CLI".

  • Die tokenbasierte Authentifizierung erfordert ein Nur-Text-Kennwort, sodass nur SSL-Verbindungen zulässig sind. Stellen Sie sicher, dass die Clientbibliothek, die Sie für den Zugriff auf Postgres mit tokenbasierter Authentifizierung verwenden, für die Einrichtung einer SSL-Verbindung konfiguriert ist.

Abrufen eines OAuth-Tokens in einem Benutzer-zu-Computer-Fluss

Wenn Sie Eigentümer einer Datenbank, Administrator sind oder Ihre Azure Databricks-Identität über eine entsprechende Postgres-Rolle für die Datenbankinstanz verfügt, können Sie ein OAuth-Token über die Benutzeroberfläche, die Databricks CLI oder eines der Databricks-SDKs abrufen. Sie können den Umfang des Tokens mithilfe der Databricks CLI entsprechend einschränken.

Weitere Azure Databricks-Identitätsbenutzer finden Sie unter Autorisieren des Benutzerzugriffs auf Azure Databricks mit OAuth für die Autorisierungsanweisungen auf Arbeitsbereichsebene, um OAuth-Token abzurufen.

Benutzeroberfläche

Wenn Ihr Datenbankinstanzstatusverfügbar ist, verwenden Sie die Azure Databricks-Benutzeroberfläche, um ein OAuth-Token abzurufen:

  1. Klicken Sie in der Arbeitsbereichs-Randleiste auf "Berechnen ", und klicken Sie auf die Registerkarte " Lakebase Provisioned ".
  2. Suchen Und klicken Sie auf den Namen der Datenbankinstanz, für die Sie ein OAuth-Token abrufen möchten.
  3. Klicken Sie auf die Registerkarte Verbindungsdetails.
  4. Klicken Sie auf "OAuth-Token abrufen". Ein Kennzeichen gibt an, wann das Token erstellt wurde.
  5. Klicken Sie auf "OAuthToken kopieren", um das Token in die Zwischenablage zu kopieren.

Befehlszeilenschnittstelle (CLI)

Wenn der Datenbankinstanzstatusverfügbar ist, verwenden Sie die Databricks CLI v0.256.0 und höher, um ein OAuth-Token abzurufen:

  1. Verwenden Sie den folgenden Befehl, um ein Token abzurufen.
     databricks database generate-database-credential \
       --request-id $(uuidgen) \
       --json '{
         "instance_names": ["db-instance-name"]
       }'
    
  2. Dadurch wird eine Antwort im folgenden Format generiert. Kopieren Sie token aus der Antwort.
    {
      "expiration_time": "2025-08-24T14:15:22Z",
      "token": "<string>"
    }
    

Weitere Informationen zur Verwendung der Databricks CLI zum Abrufen eines OAuth-Tokens finden Sie unter OAuth-Authentifizierung (User-to-Machine, U2M).

Python SDK

Sie können ein OAuth-Token mithilfe des Databricks SDK für Python generieren. Azure Databricks SDK-Bindungen sind im Databricks SDK für Python Version v0.56.0 verfügbar.

Wenn Sie eine ältere Version des SDK verwenden, führen Sie zuerst diese Befehle aus.

%pip install --upgrade databricks-sdk
%restart_python

Das Databricks SDK für Python generiert für Ihre Datenbankinstanz ein sicheres OAuth-Token cred. Geben Sie bei Bedarf Ihre Anmeldeinformationen ein.

from databricks.sdk import WorkspaceClient
import uuid

w = WorkspaceClient()

instance_name = "<YOUR INSTANCE>"

cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])

Java-SDK

Sie können ein OAuth-Token mithilfe des Databricks SDK für Java generieren. Datenbank-SDK-Bindungen sind im Databricks SDK für Java Version v0.53.0 oder höher verfügbar. Wenn Sie eine ältere Version des SDK verwenden, müssen Sie möglicherweise das importierte SDK aktualisieren oder neu laden. Weitere Informationen finden Sie hier.

%scala

import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID

val w = new WorkspaceClient()

val instanceName = "<YOUR INSTANCE>"

// Generate database credential
val cred = w.database().generateDatabaseCredential(
    new GenerateDatabaseCredentialRequest()
        .setRequestId(UUID.randomUUID().toString())
        .setInstanceNames(Collections.singletonList(instanceName))
)

// Print out credential details
System.out.println("Credential: " + cred.getToken())

Abrufen eines OAuth-Tokens in einem Flow zwischen Computern

Um den sicheren, automatisierten Zugriff (Computer-zu-Computer) auf die Datenbankinstanz zu ermöglichen, müssen Sie ein OAuth-Token mit einem Azure Databricks-Dienstprinzipal abrufen. Dieser Prozess umfasst das Konfigurieren des Dienstprinzipals, das Generieren von Anmeldeinformationen und das Abfassen von OAuth-Token für die Authentifizierung.

  1. Konfigurieren Sie einen Dienstprinzipal mit unbefristet gültigen Anmeldeinformationen. Anweisungen finden Sie unter Autorisieren des Dienstprinzipalzugriffs auf Azure Databricks mit OAuth.

  2. Generieren Sie neue OAuth-Token als Dienstprinzipal.

    Befehlszeilenschnittstelle (CLI)

    Wenn der Datenbankinstanzstatusverfügbar ist, verwenden Sie die Databricks CLI v0.256.0 und höher, um ein OAuth-Token abzurufen:

    1. Verwenden Sie den folgenden Befehl, um ein Token abzurufen.

        databricks database generate-database-credential \
          --request-id $(uuidgen) \
          --json '{
            "instance_names": ["db-instance-name"]
          }'
      
    2. Dadurch wird eine Antwort im folgenden Format generiert. Kopieren Sie token aus der Antwort.

      {
        "expiration_time": "2025-08-24T14:15:22Z",
        "token": "<string>"
      }
      

    Python SDK

    Sie können ein OAuth-Token mithilfe des Databricks SDK für Python generieren. Azure Databricks SDK-Bindungen sind im Databricks SDK für Python Version v0.56.0 verfügbar.

    Wenn Sie eine ältere Version des SDK verwenden, führen Sie zuerst diese Befehle aus.

    %pip install --upgrade databricks-sdk
    %restart_python
    

    Das Databricks SDK für Python generiert für Ihre Datenbankinstanz ein sicheres OAuth-Token cred. Geben Sie bei Bedarf den Namen Ihrer Datenbankinstanz ein.

    from databricks.sdk import WorkspaceClient
    import uuid
    
    w = WorkspaceClient(
      host          = "https://<YOUR WORKSPACE URL>/",
      client_id     = "<YOUR SERVICE PRINCIPAL ID>",
      client_secret = "REDACTED"
    )
    
    instance_name = "<YOUR INSTANCE>"
    
    cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
    

    Java-SDK

    Sie können ein OAuth-Token mithilfe des Databricks SDK für Java generieren. Datenbank-SDK-Bindungen sind im Databricks SDK für Java Version v0.53.0 oder höher verfügbar. Wenn Sie mit einer älteren Version des SDK arbeiten, müssen Sie möglicherweise auf ein neueres SDK aktualisieren. Weitere Informationen finden Sie hier.

    %scala
    
    import com.databricks.sdk.WorkspaceClient
    import com.databricks.sdk.core.DatabricksConfig
    import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
    import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
    import com.databricks.sdk.service.database.DatabaseInstance
    import com.databricks.sdk.service.database.DatabaseCredential
    import java.util.Collections
    import java.util.UUID
    
    val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication
    val w = new WorkspaceClient(config)
    
    val instanceName = "<YOUR INSTANCE>"
    
    // Generate database credential
    val cred = w.database().generateDatabaseCredential(
        new GenerateDatabaseCredentialRequest()
            .setRequestId(UUID.randomUUID().toString())
            .setInstanceNames(Collections.singletonList(instanceName))
    )
    
    // Print out credential details
    System.out.println("Credential: " + cred.getToken())
    

Hinweis

Rotieren Sie OAuth-Token vor dem stündlichem Ablauf:

  • Überprüfen Sie bei Bedarf die Ablaufzeit des OAuth-Tokens für jede Verwendung und Aktualisierung.
  • Alternativ können Sie einen Hintergrundthread einrichten, um das aktuelle OAuth-Token regelmäßig zu aktualisieren.

Problembehandlung bei der Token-Identität

Wenn die Identität Ihres Tokens nicht mit der Sicherheitsbezeichnung übereinstimmt, erhalten Sie möglicherweise eine Fehlermeldung wie die folgende.

A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.

Führen Sie den folgenden Befehl aus, um zu überprüfen, welche Azure Databricks-Identität zurückgegeben wird:

Befehlszeilenschnittstelle (CLI)

databricks current-user me

Python SDK

w.current_user.me().user_name

Java-SDK

w.currentUser.me().getUserName()

Wenn die erwartete Identität nicht zurückgegeben wird, überprüfen Sie, ob die richtigen Anmeldeinformationen beim Initialisieren des Arbeitsbereichsclients verwendet wurden.

Melden Sie sich an mit der Microsoft Entra-ID

Für Azure Databricks können Microsoft Entra-ID-Identitäten und -Token auch verwendet werden, um sich bei Azure Databricks-APIs zu authentifizieren. Verwenden Sie diese APIs, um ein Token zur Authentifizierung bei Postgres abzurufen.

Informationen zum Verwalten von verwalteten Microsoft Entra ID-Identitäten in Azure Databricks finden Sie unter Verwalten von Benutzern, Dienstprinzipalen und Gruppen . Benutzer, Gruppen und Dienstprinzipale aus der Microsoft Entra-ID können in Azure Databricks erstellt werden. Sobald Sie diese Identitäten zu Azure Databricks hinzufügen, können Sie sie der Datenbankinstanz hinzufügen, wie in Rollen in Postgres verwalten beschrieben.

Informationen darüber, wie Sie Microsoft Entra-ID-Token abrufen können, finden Sie in den folgenden Quellen:

Authentifizieren als Azure Databricks-Gruppe

Gruppen und Gruppenmitgliedschaften werden nicht aus Azure Databricks in Postgres synchronisiert, und auch nicht Unity-Katalogberechtigungen. Nachdem jedoch eine Azure-Databricks-Gruppe in Postgres hinzugefügt wurde, kann sich jeder Azure-Databricks-Benutzer in der Gruppe mit seinem eigenen Kennwort als Mitglied der Gruppe anmelden. Auf diese Weise können Sie Berechtigungen auf Gruppenebene in Postgres verwalten. Jedes direkte oder indirekte Mitglied (Benutzer oder Dienstprinzipal) der Azure-Databricks-Gruppenidentität kann sich bei Postgres authentifizieren und sich als Rolle der Azure-Databricks-Gruppe Postgres anmelden.

Bei der Authentifizierung als Gruppenidentität mithilfe eines Benutzer- oder Dienstprinzipaltokens wird die Gruppenmitgliedschaft nur zum Zeitpunkt der Authentifizierung überprüft. Jede geöffnete Verbindung mit einem Gruppenmitgliedstoken bleibt geöffnet, wenn das Mitglied nach der Authentifizierung aus der Gruppe entfernt wird. Jede neue Verbindungsanforderung von einem entfernten Gruppenmitglied wird während der Authentifizierung abgelehnt.

export PGPASSWORD='<OAuth token of a group member>'
export GROUPROLENAME=<pg-case-sensitive-group-role-name>

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUPROLENAME

Für die gruppenbasierte Postgres-Anmeldung werden nur Gruppen unterstützt, die dem Azure Databricks-Arbeitsbereich der Datenbankinstanz zugewiesen sind. Informationen zum Zuweisen einer Gruppe zu einem Arbeitsbereich finden Sie unter Zuweisen einer Gruppe zu einem Arbeitsbereich.

Authentifizieren mit Postgres-Rollen und Kennwörtern

Wenn Sie Clients haben, die die Rotation von Zugangsdaten nach einer Stunde nicht unterstützen, können Sie native Postgres-Rollen mit Kennwörtern erstellen.

  1. Klicken Sie auf " Berechnen" in der Arbeitsbereich-Randleiste.

  2. Klicken Sie auf die Registerkarte Datenbankinstanzen.

  3. Wählen Sie die Datenbankinstanz aus, die Sie aktualisieren möchten.

  4. Klicken Sie oben rechts auf "Bearbeiten ".

  5. Aktivieren Sie Postgres Native Role Login.

  6. Klicken Sie auf "Speichern".

  7. Melden Sie sich bei Postgres an, oder verwenden Sie den SQL-Editor, um eine Rolle mit einem Kennwort zu erstellen.

    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
    
  8. Gewähren Sie der neuen Rolle zusätzliche Postgres-Berechtigungen. Weitere Informationen finden Sie unter Berechtigungen für Postgres-Benutzerrollen mithilfe von PostgreSQL gewähren.

Nächste Schritte

Nach dem Abrufen einer Anmeldeinformation (OAuth-Token oder Kennwort) können Sie eine Verbindung mit Ihrer Datenbankinstanz herstellen: