Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Skalowanie automatyczne bazy danych Lakebase znajduje się w wersji beta w następujących regionach: eastus2, westeurope, westus.
Autoskalowanie bazy danych Lakebase to najnowsza wersja bazy danych Lakebase z automatycznym skalowaniem obliczeniowym, skalowaniem do zera, rozgałęzianiem i natychmiastowym przywracaniem. Aby zapoznać się z porównaniem funkcji z Lakebase Provisioned, sprawdź wybieranie między wersjami.
Dowiedz się, jak uwierzytelniać połączenia bazy danych z usługą Lakebase Postgres. Aby uzyskać instrukcje krok po kroku dotyczące połączenia, zobacz Szybki start.
Przegląd
Usługa Lakebase obsługuje dwie metody uwierzytelniania, z których każda jest przeznaczona dla różnych przypadków użycia:
Uwierzytelnianie tokenu OAuth: Używa tożsamości usługi Azure Databricks z tokenami OAuth ograniczonymi czasowo. Najlepsze dla:
- Interaktywne sesje, w których można odświeżyć tokeny
- Przepływy pracy zintegrowane z obszarem roboczym
- Aplikacje, które mogą implementować rotację tokenów
- Jeśli chcesz zarządzać uwierzytelnianiem zarządzanym przez usługę Azure Databricks
Natywne uwierzytelnianie haseł Postgres: Używa tradycyjnych ról Postgres z hasłami. Najlepsze dla:
- Aplikacje, które nie mogą odświeżać poświadczeń co godzinę
- Długotrwałe procesy
- Narzędzia, które nie obsługują rotacji tokenów
Uwaga / Notatka
Zarządzanie platformą a dostęp do bazy danych: ta strona koncentruje się na uwierzytelnianiu bazy danych (tokenach OAuth i hasłach Postgres na potrzeby nawiązywania połączenia z bazą danych). Aby uzyskać informacje na temat uwierzytelniania zarządzania platformą (tworzenie projektów, gałęzi, obliczeń), zobacz Uprawnienia projektu.
Przekroczenia limitu czasu połączenia
Wszystkie połączenia z bazą danych podlegają następującym limitom niezależnie od metody uwierzytelniania:
- 24-godzinny limit czasu bezczynności: Połączenia bez aktywności przez 24 godziny są automatycznie zamykane.
- Maksymalny czas 3-dniowego okresu połączenia: Połączenia, które były aktywne przez ponad 3 dni, mogą być zamknięte niezależnie od aktywności.
Zaprojektuj aplikacje tak, aby obsługiwały limity czasu połączenia bezpiecznie, implementując logikę ponawiania prób połączenia z odpowiednimi ustawieniami limitu czasu.
Uwierzytelnianie tokenu OAuth
Uwierzytelnianie tokenu OAuth umożliwia nawiązanie połączenia przy użyciu tożsamości usługi Azure Databricks. Czasowo ograniczony token OAuth generujesz w interfejsie użytkownika Lakebase i używasz go jako hasła podczas łączenia się z Postgres.
Rola OAuth właściciela projektu jest tworzona automatycznie. Aby włączyć uwierzytelnianie OAuth dla innych tożsamości usługi Azure Databricks, należy utworzyć ich role Postgres przy użyciu databricks_auth rozszerzenia i języka SQL. Zobacz Tworzenie roli OAuth dla tożsamości bazy danych przy użyciu języka SQL.
Jak działają tokeny OAuth
- Okres istnienia tokenu: Tokeny OAuth wygasają po godzinie.
- Wymuszanie wygasania: Wygaśnięcie tokenu jest wymuszane tylko podczas logowania. Otwarte połączenia pozostają aktywne nawet po wygaśnięciu tokenu.
- Ponowne uwierzytelnianie: Każde zapytanie lub polecenie postgres kończy się niepowodzeniem, jeśli token wygasł.
- Odświeżanie tokenu: W przypadku sesji interakcyjnych w razie potrzeby wygeneruj nowy token z interfejsu użytkownika. W przypadku aplikacji z długotrwałymi połączeniami zaimplementuj rotację tokenów , aby automatycznie odświeżyć poświadczenia.
Wymagania i ograniczenia
-
Wymagana odpowiednia rola Postgres: Tożsamość użytkownika usługi Azure Databricks musi mieć odpowiednią rolę Postgres. Rola właściciela projektu jest tworzona automatycznie. W przypadku innych tożsamości usługi Azure Databricks utwórz ich role przy użyciu
databricks_authrozszerzenia. - Określanie zakresu obszaru roboczego: tokeny OAuth są objęte zakresem obszaru roboczego i muszą należeć do tego samego obszaru roboczego, który jest właścicielem projektu. Uwierzytelnianie tokenu między obszarami roboczymi nie jest obsługiwane.
-
Wymagany protokół SSL: Uwierzytelnianie oparte na tokenach wymaga połączeń SSL. Wszyscy klienci muszą być skonfigurowani do używania protokołu SSL (zazwyczaj
sslmode=require).
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 ma odpowiednią rolę Postgres dla bazy danych, możesz otrzymać token OAuth poprzez interfejs użytkownika, interfejs API usługi Databricks, CLI lub jedno z zestawów SDK 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
W przypadku korzystania z klientów SQL, takich jak psql lub DBeaver, użyj interfejsu użytkownika usługi Lakebase do generowania tokenów:
- Przejdź do projektu w aplikacji Lakebase.
- Wybierz gałąź i jednostkę obliczeniową, z którą chcesz nawiązać połączenie.
- Kliknij pozycję Połącz i postępuj zgodnie z instrukcjami, aby wygenerować token OAuth.
Aby uzyskać pełne instrukcje, zobacz Nawiązywanie połączenia z rolą OAuth .
CLI
# Generate OAuth token for database connection (1-hour expiration)
databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output json
Odpowiedź:
{
"token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
"expire_time": "2026-01-22T17:07:00Z"
}
Użyj wartości token jako hasła podczas nawiązywania połączenia z bazą danych.
Zestaw SDK dla języka Python
Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Python.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Generate OAuth token for database connection (1-hour expiration)
credential = w.postgres.generate_database_credential(
endpoint="projects/my-project/branches/production/endpoints/my-compute"
)
print(f"Token: {credential.token}")
print(f"Expires: {credential.expire_time}")
# Use the token to connect to Postgres
import psycopg2
conn = psycopg2.connect(
host="ep-example.database.region.databricks.com",
port=5432,
database="postgres",
user="your.email@company.com",
password=credential.token,
sslmode="require"
)
Java SDK
Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Java.
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
WorkspaceClient w = new WorkspaceClient();
// Generate OAuth token for database connection (1-hour expiration)
DatabaseCredential credential = w.postgres().generateDatabaseCredential(
new GenerateDatabaseCredentialRequest()
.setEndpoint("projects/my-project/branches/production/endpoints/my-compute")
);
System.out.println("Token: " + credential.getToken());
System.out.println("Expires: " + credential.getExpireTime());
Uzyskiwanie tokenu OAuth w przepływie maszyny do maszyny
Aby włączyć bezpieczny, zautomatyzowany (komputer-komputer) dostęp do 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.
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.
Wygeneruj nowe tokeny OAuth jako jednostka usługi.
CLI
# Generate OAuth token for database connection (1-hour expiration) databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output jsonOdpowiedź:
{ "token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...", "expire_time": "2026-01-22T17:07:00Z" }Użyj wartości
tokenjako hasła podczas nawiązywania połączenia z bazą danych.Zestaw SDK dla języka Python
Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Python.
from databricks.sdk import WorkspaceClient w = WorkspaceClient( host="https://<YOUR WORKSPACE URL>/", client_id="<YOUR SERVICE PRINCIPAL ID>", client_secret="REDACTED" ) # Generate OAuth token for database connection (1-hour expiration) credential = w.postgres.generate_database_credential( endpoint="projects/my-project/branches/production/endpoints/my-compute" ) print(f"Token: {credential.token}") print(f"Expires: {credential.expire_time}")Java SDK
Token OAuth można wygenerować przy użyciu zestawu SDK usługi Databricks dla języka Java.
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.service.postgres.*; // Initialize with service principal credentials DatabricksConfig config = new DatabricksConfig() .setHost("https://<YOUR WORKSPACE URL>/") .setClientId("<YOUR SERVICE PRINCIPAL ID>") .setClientSecret("REDACTED"); WorkspaceClient w = new WorkspaceClient(config); // Generate OAuth token for database connection (1-hour expiration) DatabaseCredential credential = w.postgres().generateDatabaseCredential( new GenerateDatabaseCredentialRequest() .setEndpoint("projects/my-project/branches/production/endpoints/my-compute") ); System.out.println("Token: " + credential.getToken()); System.out.println("Expires: " + credential.getExpireTime());
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.
Przykłady rotacji tokenów
Ponieważ tokeny OAuth wygasają po godzinie, aplikacje, które utrzymują długotrwałe połączenia z bazą danych, muszą okresowo implementować rotację tokenów w celu odświeżenia poświadczeń. W poniższych przykładach pokazano, jak automatycznie obracać tokeny w kodzie aplikacji.
Uwaga / Notatka
Wymagania dotyczące tych przykładów:
- Musisz być uwierzytelniony do obszaru roboczego właściciela projektu. Narzędzie
WorkspaceClient()używa poświadczeń protokołu OAuth obszaru roboczego do generowania tokenów bazy danych. - Twoje konto w Azure Databricks musi być członkiem obszaru roboczego, w którym utworzono projekt.
- Pobierz parametry połączenia (host, baza danych, punkt końcowy) z okna dialogowego Łączenie w aplikacji Lakebase. Aby uzyskać szczegółowe informacje, zobacz Szybki start .
- Parametr
endpointużywa formatu:projects/{project-id}/branches/{branch-id}/endpoints/{endpoint-id}
Aby uzyskać informacje o konfiguracji uwierzytelniania obszaru roboczego, zobacz Autoryzowanie dostępu użytkowników do usługi Azure Databricks przy użyciu protokołu OAuth lub Autoryzowanie dostępu jednostki usługi do usługi Azure Databricks przy użyciu protokołu OAuth.
Python: psycopg3
W tym przykładzie użyto puli połączeń psycopg3 z niestandardową klasą połączenia, która generuje nowy token OAuth za każdym razem, gdy zostanie utworzone nowe połączenie. Takie podejście sprawia, że każde połączenie z puli ma zawsze aktualny, prawidłowy token.
%pip install "psycopg[binary,pool]"
from databricks.sdk import WorkspaceClient
import psycopg
from psycopg_pool import ConnectionPool
w = WorkspaceClient()
class CustomConnection(psycopg.Connection):
global w
def __init__(self, *args, **kwargs):
# Call the parent class constructor
super().__init__(*args, **kwargs)
@classmethod
def connect(cls, conninfo='', **kwargs):
# Generate a fresh OAuth token for each connection
endpoint = "projects/<project-id>/branches/<branch-id>/endpoints/<endpoint-id>"
credential = w.postgres.generate_database_credential(endpoint=endpoint)
kwargs['password'] = credential.token
# Call the superclass's connect method with updated kwargs
return super().connect(conninfo, **kwargs)
# Configure connection parameters (get these from the Connect dialog in the LakeBase App)
username = "your.email@company.com" # Your DB identity
host = "ep-example.database.region.databricks.com" # Your compute endpoint hostname
port = 5432
database = "databricks_postgres"
# Create connection pool with custom connection class
pool = ConnectionPool(
conninfo=f"dbname={database} user={username} host={host} sslmode=require",
connection_class=CustomConnection,
min_size=1,
max_size=10,
open=True
)
# Use the connection pool
with pool.connection() as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT version()")
for record in cursor:
print(record)
Python: SQLAlchemy
W tym przykładzie użyto puli połączeń SQLAlchemy z odbiornikiem zdarzeń, który automatycznie odświeża token OAuth co 15 minut. Odbiornik zdarzeń sprawdza wiek tokenu przed utworzeniem każdego nowego połączenia z puli, zapewniając, że aplikacja zawsze ma prawidłowy token bez ręcznej interwencji.
%pip install sqlalchemy==1.4 psycopg[binary]
from databricks.sdk import WorkspaceClient
import time
from sqlalchemy import create_engine, text, event
w = WorkspaceClient()
# Configure connection parameters (get these from the Connect dialog in the LakeBase App)
endpoint = "projects/<project-id>/branches/<branch-id>/endpoints/<endpoint-id>"
username = "your.email@company.com" # Your DB identity
host = "ep-example.database.region.databricks.com" # Your compute endpoint hostname
port = 5432
database = "databricks_postgres"
# Create SQLAlchemy engine
connection_pool = create_engine(f"postgresql+psycopg2://{username}:@{host}:{port}/{database}?sslmode=require")
# Global variables for token management
postgres_password = None
last_password_refresh = time.time()
@event.listens_for(connection_pool, "do_connect")
def provide_token(dialect, conn_rec, cargs, cparams):
global postgres_password, last_password_refresh
# Refresh token if it's None or older than 15 minutes (900 seconds)
if postgres_password is None or time.time() - last_password_refresh > 900:
print("Refreshing PostgreSQL OAuth token")
credential = w.postgres.generate_database_credential(endpoint=endpoint)
postgres_password = credential.token
last_password_refresh = time.time()
cparams["password"] = postgres_password
# Use the connection pool
with connection_pool.connect() as conn:
result = conn.execute(text("SELECT version()"))
for row in result:
print(f"Connected to PostgreSQL database. Version: {row}")
Uwierzytelnianie za pomocą hasła postgres
Natywne uwierzytelnianie haseł postgres używa tradycyjnych ról Postgres z hasłami. W przeciwieństwie do tokenów OAuth te hasła nie wygasają po godzinie, co czyni je odpowiednimi dla aplikacji, które nie mogą obsługiwać częstej rotacji poświadczeń.
Kiedy należy używać haseł bazy danych Postgres
Użyj uwierzytelniania za pomocą hasła Postgres, gdy:
- Aplikacja lub narzędzie nie może odświeżać poświadczeń co godzinę
- Masz długotrwałe procesy, które wymagają stabilnych poświadczeń
- Biblioteka klienta nie obsługuje rotacji tokenów OAuth
- Aby uzyskać zgodność, potrzebujesz tradycyjnego uwierzytelniania bazy danych
Jak działają hasła postgres
- Okres istnienia hasła: hasła nie wygasają automatycznie
- Brak integracji obszaru roboczego: Uwierzytelnianie jest obsługiwane przez usługę Postgres, a nie uwierzytelnianie obszaru roboczego usługi Azure Databricks
- Ręczne zarządzanie: hasła muszą być ręcznie obracane i dystrybuowane do użytkowników
- Nadal obowiązują limity czasu połączenia: mimo że hasła nie wygasają, połączenia nadal podlegają 24-godzinnemu limitowi czasu bezczynności oraz maksymalnemu czasowi trwania połączenia wynoszącemu 7 dni.
Zagadnienia dotyczące zabezpieczeń
- Przechowywanie haseł: bezpieczne przechowywanie haseł przy użyciu zmiennych środowiskowych lub systemów zarządzania wpisami tajnymi
-
Wymagany protokół SSL: wszystkie połączenia muszą używać protokołu SSL (
sslmode=require)