Udostępnij przez


Uwierzytelnianie w wystąpieniu bazy danych

Ważne

Ta funkcja jest dostępna w wersji próbnej w następujących regionach: westus, westus2, eastus, eastus2, centralus, southcentralus, northeurope, westeurope, australiaeast, brazilsouth, canadacentral, centralindia, southeastasia, uksouth.

Na tej stronie opisano sposób uwierzytelniania dla wystąpienia bazy danych Lakebase. Istnieją dwa sposoby uwierzytelniania:

  1. Uzyskiwanie tokenu OAuth i uwierzytelnianie przy użyciu tożsamości usługi Azure Databricks.
  2. Używaj natywnych ról Postgres z hasłami.

Uwierzytelnianie za pomocą tożsamości usługi Azure Databricks

Podczas uwierzytelniania jako użytkownik usługi Azure Databricks należy wygenerować token OAuth i użyć go jako hasła do nawiązywania połączenia z Postgres.

Zagadnienia przed rozpoczęciem

  • Tokeny OAuth wygasają po godzinie, ale wygaśnięcie jest wymuszane tylko podczas logowania. Otwarte połączenia pozostają aktywne, nawet jeśli token wygaśnie. Jednak każde polecenie PostgreSQL wymagające uwierzytelnienia kończy się niepowodzeniem, jeśli token wygasł.

  • Tokeny OAuth używane do uwierzytelniania Postgres są związane z zakresem obszaru roboczego i powinny należeć do tego samego obszaru roboczego, co baza danych. Uwierzytelnianie tokenu między obszarami roboczymi nie jest obsługiwane. Aby dowiedzieć się więcej na temat uwierzytelniania, zobacz Uwierzytelnianie dla interfejsu wiersza polecenia Databricks (Authentication for the Databricks CLI).

  • Uwierzytelnianie oparte na tokenach wymaga hasła w postaci zwykłego tekstu, więc dozwolone są tylko połączenia SSL. Upewnij się, że biblioteka klienta używana do uzyskiwania dostępu do bazy danych Postgres z uwierzytelnianiem opartym na tokenach jest skonfigurowana do nawiązywania połączenia SSL.

Uzyskiwanie tokenu OAuth w przepływie typu użytkownik-maszyna

Jeśli jesteś właścicielem bazy danych, administratorem lub twoja tożsamość w Azure Databricks posiada odpowiadającą rolę Postgres dla wystąpienia bazy danych, możesz uzyskać token OAuth z interfejsu użytkownika, CLI Databricks lub jednego z SDK Databricks. Zakres tokenu można odpowiednio ograniczyć przy użyciu interfejsu wiersza polecenia usługi Databricks.

W przypadku innych użytkowników tożsamości usługi Azure Databricks zobacz Autoryzowanie dostępu użytkowników do usługi Azure Databricks przy użyciu protokołu OAuth , aby uzyskać instrukcje autoryzacji na poziomie obszaru roboczego w celu uzyskania tokenów OAuth.

interfejs użytkownika

Gdy stan wystąpienia bazy danych jest dostępny, użyj interfejsu użytkownika usługi Azure Databricks, aby uzyskać token OAuth:

  1. Kliknij Comput na pasku bocznym obszaru roboczego i kliknij kartę Lakebase Provisioned.
  2. Znajdź i kliknij nazwę wystąpienia bazy danych, dla którego chcesz uzyskać token OAuth.
  3. Kliknij kartę Szczegóły połączenia.
  4. Kliknij pozycję Pobierz token OAuth. Flaga wskazuje, kiedy token został utworzony.
  5. Kliknij Kopiuj OAuthToken, aby skopiować token do schowka.

CLI

Gdy stan wystąpienia bazy danych jest dostępny, użyj CLI Databricks w wersji 0.256.0 lub nowszej, aby uzyskać token OAuth:

  1. Użyj następującego polecenia, aby pobrać token.
     databricks database generate-database-credential \
       --request-id $(uuidgen) \
       --json '{
         "instance_names": ["db-instance-name"]
       }'
    
  2. Spowoduje to wygenerowanie odpowiedzi w następującym formacie. Skopiuj element token z odpowiedzi.
    {
      "expiration_time": "2025-08-24T14:15:22Z",
      "token": "<string>"
    }
    

Aby uzyskać więcej informacji o korzystaniu z interfejsu wiersza polecenia usługi Databricks w celu uzyskania tokenu OAuth, zobacz Uwierzytelnianie użytkownika do maszyny (U2M) protokołu OAuth.

Zestaw SDK dla języka Python

Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Python. Powiązania zestawu SDK usługi Azure Databricks są dostępne w zestawie SDK usługi Databricks dla języka Python w wersji 0.56.0.

Jeśli używasz starszej wersji zestawu SDK, najpierw uruchom te polecenia.

%pip install --upgrade databricks-sdk
%restart_python

Zestaw SDK usługi Databricks dla języka Python generuje bezpieczny token OAuth, cred, dla wystąpienia bazy danych. W razie potrzeby wprowadź swoje poświadczenia.

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

Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Java. Powiązania API bazy danych są dostępne w usłudze Databricks SDK dla języka Java od wersji 0.53.0 wzwyż. Jeśli używasz starszej wersji zestawu SDK, może być konieczne odświeżenie zaimportowanego zestawu SDK. Więcej informacji można znaleźć tutaj.

%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())

Uzyskiwanie tokenu OAuth w przepływie maszyny do maszyny

Aby włączyć bezpieczny, zautomatyzowany (maszyna-maszyna) dostęp do wystąpienia bazy danych, należy uzyskać token OAuth przy użyciu jednostki usługi Azure Databricks. Ten proces obejmuje skonfigurowanie jednostki usługi, wygenerowanie poświadczeń i wybicie tokenów OAuth na potrzeby uwierzytelniania.

  1. Skonfiguruj jednostkę usługi z poświadczeniami o nieokreślonym terminie ważności. Aby uzyskać instrukcje, zobacz Autoryzowanie dostępu jednostki usługi do usługi Azure Databricks przy użyciu protokołu OAuth.

  2. Wygeneruj nowe tokeny OAuth jako jednostka usługi.

    CLI

    Gdy stan wystąpienia bazy danych jest dostępny, użyj CLI Databricks w wersji 0.256.0 lub nowszej, aby uzyskać token OAuth:

    1. Użyj następującego polecenia, aby pobrać token.

        databricks database generate-database-credential \
          --request-id $(uuidgen) \
          --json '{
            "instance_names": ["db-instance-name"]
          }'
      
    2. Spowoduje to wygenerowanie odpowiedzi w następującym formacie. Skopiuj element token z odpowiedzi.

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

    Zestaw SDK dla języka Python

    Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Python. Powiązania zestawu SDK usługi Azure Databricks są dostępne w zestawie SDK usługi Databricks dla języka Python w wersji 0.56.0.

    Jeśli używasz starszej wersji zestawu SDK, najpierw uruchom te polecenia.

    %pip install --upgrade databricks-sdk
    %restart_python
    

    Zestaw SDK usługi Databricks dla języka Python generuje bezpieczny token OAuth, cred, dla wystąpienia bazy danych. Wprowadź nazwę instancji bazy danych tam, gdzie jest to potrzebne.

    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

    Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Java. Powiązania API bazy danych są dostępne w usłudze Databricks SDK dla języka Java od wersji 0.53.0 wzwyż. Jeśli używasz starszej wersji zestawu SDK, może być konieczne zaktualizowanie do nowszego zestawu SDK. Więcej informacji można znaleźć tutaj.

    %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())
    

Uwaga / Notatka

Odnów tokeny OAuth przed godzinnym wygaśnięciem.

  • Sprawdź czas wygaśnięcia tokenu OAuth dla każdego użycia i odświeżaj w razie potrzeby.
  • Alternatywnie skonfiguruj wątek w tle, aby okresowo odświeżyć bieżący token OAuth.

Rozwiązywanie problemów z identyfikacją tokenu

Jeśli tożsamość tokenu jest niezgodna z etykietą zabezpieczeń, może zostać wyświetlony komunikat o błędzie podobny do poniższego.

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.

Uruchom następujące polecenie, aby sprawdzić, która tożsamość usługi Azure Databricks jest zwracana:

CLI

databricks current-user me

Zestaw SDK dla języka Python

w.current_user.me().user_name

Java SDK

w.currentUser.me().getUserName()

Jeśli oczekiwana tożsamość nie zostanie zwrócona, sprawdź, czy podczas inicjowania klienta przestrzeni roboczej użyto poprawnych poświadczeń.

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft

W przypadku usługi Azure Databricks można również używać tożsamości i tokenów usługi Microsoft Entra ID do uwierzytelniania w interfejsach API usługi Azure Databricks. Użyj tych interfejsów API, aby uzyskać token do uwierzytelniania w usłudze Postgres.

Zobacz Zarządzanie użytkownikami, jednostkami usługi i grupami, aby dowiedzieć się, jak zarządzać tożsamościami zarządzanymi w Microsoft Entra ID w usłudze Azure Databricks. Użytkownicy, grupy oraz główne usługi z Microsoft Entra ID mogą być tworzone w Azure Databricks. Po dodaniu tych tożsamości do usługi Azure Databricks możesz dodać je do wystąpienia bazy danych zgodnie z opisem w Zarządzanie rolami Postgres.

Aby pobrać tokeny identyfikatora Entra firmy Microsoft, zapoznaj się z poniższymi informacjami:

Uwierzytelnianie jako grupa usługi Azure Databricks

Grupy i członkostwa w grupach nie są synchronizowane z usługi Azure Databricks w usłudze Postgres i żadne z nich nie są uprawnieniami wykazu aparatu Unity. Jednak po dodaniu grupy usługi Azure Databricks do usługi Postgres każdy użytkownik usługi Azure Databricks w grupie może zalogować się jako grupa przy użyciu hasła użytkownika. Umożliwia to zarządzanie uprawnieniami na poziomie grupy w usłudze Postgres. Każdy bezpośredni lub pośredni członek (użytkownik lub jednostka usługi) tożsamości grupy usługi Azure Databricks może uwierzytelniać się w usłudze Postgres i logować się jako rola postgres grupy usługi Azure Databricks.

W przypadku uwierzytelniania jako tożsamości grupy przy użyciu tokenu użytkownika lub jednostki usługi członkostwo w grupie jest weryfikowane tylko w momencie uwierzytelniania. Każde otwarte połączenie z tokenem członka grupy pozostaje otwarte, jeśli członek zostanie usunięty z grupy po uwierzytelnieniu. Każde nowe żądanie połączenia od usuniętego członka grupy jest odrzucane podczas uwierzytelniania.

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

Tylko grupy przypisane do obszaru roboczego usługi Azure Databricks wystąpienia bazy danych są obsługiwane w przypadku logowania postgres opartego na grupach. Aby dowiedzieć się, jak przypisać grupę do obszaru roboczego, zobacz Przypisywanie grupy do obszaru roboczego.

Uwierzytelnianie za pomocą ról i haseł bazy danych Postgres

Jeśli masz klientów, którzy nie obsługują rotacji poświadczeń po godzinie, możesz utworzyć natywne role Postgres z hasłami:

  1. Kliknij pozycję Obliczenia na pasku bocznym obszaru roboczego.

  2. Kliknij kartę Wystąpienia bazy danych .

  3. Wybierz wystąpienie bazy danych, które chcesz zaktualizować.

  4. Kliknij przycisk Edytuj w prawym górnym rogu.

  5. Włącz logowanie roli natywnej Postgres.

  6. Kliknij przycisk Zapisz.

  7. Zaloguj się do bazy danych Postgres lub użyj edytora SQL, aby utworzyć rolę z hasłem.

    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
    
  8. Przyznaj dodatkowe uprawnienia Postgres nowej roli. Zobacz Udzielanie uprawnień do ról Postgres przy użyciu bazy danych PostgreSQL.

Dalsze kroki

Po uzyskaniu poświadczenia (tokenu OAuth lub hasła) możesz nawiązać połączenie z wystąpieniem bazy danych.