Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Automatické škálování LakeBase je v beta verzích v následujících oblastech: eastus2, westeurope, westus.
Automatické škálování LakeBase je nejnovější verze LakeBase s automatickým škálováním výpočetních prostředků, škálováním na nulu, větvení a okamžitým obnovením. Porovnání funkcí se službou Lakebase Provisioned najdete v tématu Volba mezi verzemi.
Zjistěte, jak ověřovat připojení databáze k Lakebase Postgres. Podrobné pokyny k připojení najdete v rychlém startu.
Přehled
Lakebase podporuje dvě metody ověřování, které jsou navržené pro různé případy použití:
Ověřování tokenu OAuth: Používá identity Azure Databricks s časově omezenými tokeny OAuth. Nejvhodnější pro:
- Interaktivní relace, ve kterých můžete aktualizovat tokeny
- Pracovní postupy integrované do pracovního prostoru
- Aplikace, které můžou implementovat obměnu tokenů
- Kdy chcete ověřování spravovat pomocí Azure Databricks
Nativní ověřování hesla Postgres: Používá tradiční role Postgres s hesly. Nejvhodnější pro:
- Aplikace, které nemůžou aktualizovat přihlašovací údaje každou hodinu
- Dlouhotrvající procesy
- Nástroje, které nepodporují obměnu tokenů
Poznámka:
Správa platforem vs. přístup k databázi: Tato stránka se zaměřuje na ověřování databáze (tokeny OAuth a hesla Postgres pro připojení k databázi). Informace o ověřování správy platforem (vytváření projektů, větví, výpočetních prostředků) najdete v tématu Oprávnění projectu.
Vypršení časových limitů připojení
Všechna připojení k databázi podléhají následujícím omezením bez ohledu na metodu ověřování:
- Časový limit nečinnosti 24 hodin: Připojení bez aktivity po dobu 24 hodin se automaticky zavře.
- 3denní maximální životnost připojení: Připojení, která byla naživu déle než 3 dny, mohou být uzavřena bez ohledu na aktivitu.
Navrhněte aplikace tak, aby správně zpracovávaly časové limity připojení implementací logiky opakování připojení s odpovídajícím nastavením časového limitu.
Ověřování tokenů OAuth
Ověřování pomocí tokenu OAuth umožňuje připojení pomocí identity Azure Databricks. Vygenerujete časově omezený token OAuth z uživatelského rozhraní Lakebase a použijete ho jako heslo při připojování k Postgresu.
Role OAuth vlastníka projektu se vytvoří automaticky. Pokud chcete povolit ověřování OAuth pro jiné identity Azure Databricks, musíte pomocí rozšíření a SQL vytvořit jejich role databricks_auth Postgres. Viz Vytvoření role OAuth pro identitu databáze pomocí SQL.
Jak fungují tokeny OAuth
- Životnost tokenu: Platnost tokenů OAuth vyprší po jedné hodině.
- Vynucení vypršení platnosti: Vypršení platnosti tokenu se vynucuje pouze při přihlášení. Otevřená připojení zůstávají aktivní i po vypršení platnosti tokenu.
- Opětovné ověřování: Jakýkoli dotaz nebo příkaz Postgres selže, pokud vypršela platnost tokenu.
- Aktualizace tokenu: V případě interaktivních relací vygenerujte v případě potřeby nový token z uživatelského rozhraní. U aplikací s dlouhotrvajícími připojeními implementujte obměně tokenů pro automatickou aktualizaci přihlašovacích údajů.
Požadavky a omezení
-
Vyžaduje se odpovídající role Postgres: Vaše identita Azure Databricks musí mít odpovídající roli Postgres. Role vlastníka projektu se vytvoří automaticky. V případě jiných identit Azure Databricks vytvořte jejich role pomocí rozšíření
databricks_auth. - Rozsah pracovního prostoru: Tokeny OAuth jsou omezeny na pracovní prostor a musí být součástí stejného pracovního prostoru, který vlastní projekt. Ověřování tokenů mezi pracovními prostory se nepodporuje.
-
Vyžaduje se protokol SSL: Ověřování na základě tokenů vyžaduje připojení SSL. Všichni klienti musí být nakonfigurováni tak, aby používali
sslmode=requireprotokol SSL (obvykle).
Získání tokenu OAuth v toku user-to-machine
Pokud jste vlastník databáze, správce nebo vaše identita Azure Databricks má pro databázi odpovídající roli Postgres, můžete získat token OAuth z uživatelského rozhraní, rozhraní API Databricks, rozhraní příkazového řádku nebo některé ze sad SDK Databricks.
Další uživatelé identit Azure Databricks, podívejte se na Autorizace přístupu uživatelů k Azure Databricks pomocí OAuth pro pokyny k autorizaci na úrovni pracovního prostoru, abyste získali tokeny OAuth.
uživatelské rozhraní
Pokud používáte klienty SQL, jako je psql nebo DBeaver, vygenerujte tokeny pomocí uživatelského rozhraní Lakebase:
- Přejděte k projektu v aplikaci Lakebase.
- Vyberte větev a výpočetní prostředky, ke které se chcete připojit.
- Klikněte na Připojit a podle pokynů vygenerujte token OAuth.
Úplné pokyny najdete v tématu Připojení s 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
Odpověď:
{
"token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
"expire_time": "2026-01-22T17:07:00Z"
}
token Při připojování k databázi použijte hodnotu jako heslo.
Python SDK
OAuth token můžete vygenerovat pomocí Databricks SDK pro 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 můžete vygenerovat pomocí sady Databricks SDK pro Javu.
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());
Získání tokenu OAuth v toku počítače do počítače
Pokud chcete povolit zabezpečený automatizovaný přístup (stroj-počítač) k databázi, musíte získat token OAuth pomocí instančního objektu Azure Databricks. Tento proces zahrnuje konfiguraci instančního objektu, generování přihlašovacích údajů a vytváření tokenů OAuth pro ověřování.
Nakonfigurujte instanční objekt s neomezenou životností přihlašovacích údajů. Pokyny najdete v tématu Autorizace přístupu instančního objektu k Azure Databricks pomocí OAuth.
Vytvořte nové OAuth tokeny jako hlavní službu.
CLI
# Generate OAuth token for database connection (1-hour expiration) databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output jsonOdpověď:
{ "token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...", "expire_time": "2026-01-22T17:07:00Z" }tokenPři připojování k databázi použijte hodnotu jako heslo.Python SDK
OAuth token můžete vygenerovat pomocí Databricks SDK pro 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 můžete vygenerovat pomocí sady Databricks SDK pro Javu.
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());
Poznámka:
Obměňte tokeny OAuth před hodinovým vypršením.
- Zkontrolujte čas vypršení platnosti tokenu OAuth při každém použití a v případě potřeby aktualizujte.
- Případně můžete nastavit vlákno na pozadí pro pravidelné aktualizace aktuálního tokenu OAuth.
Příklady obměně tokenů
Vzhledem k tomu, že platnost tokenů OAuth vyprší po jedné hodině, musí aplikace, které udržují dlouhotrvající databázová připojení, implementovat obměnu tokenů, aby se přihlašovací údaje pravidelně aktualizovaly. Následující příklady ukazují, jak automaticky otáčet tokeny v kódu aplikace.
Poznámka:
Požadavky pro tyto příklady:
- Musíte být přihlášeni do pracovního prostoru, který vlastní projekt. Přihlašovací údaje pracovního prostoru OAuth se používají k vygenerování tokenů databáze
WorkspaceClient(). - Vaše identita Azure Databricks musí být členem pracovního prostoru, ve kterém byl projekt vytvořen.
- Z dialogového okna Připojit v aplikaci Lakebase získejte parametry připojení (hostitel, databáze, koncový bod). Podrobnosti najdete v rychlém startu .
- Parametr
endpointpoužívá formát:projects/{project-id}/branches/{branch-id}/endpoints/{endpoint-id}
Nastavení ověřování pracovního prostoru najdete v tématu Autorizace přístupu uživatelů k Azure Databricks pomocí OAuth nebo autorizace přístupu instančního objektu k Azure Databricks pomocí OAuth.
Python: psycopg3
Tento příklad používá fond připojení psycopg3 s vlastní třídou připojení, která při každém vytvoření nového připojení vygeneruje nový token OAuth. Tento přístup zajišťuje, že každé připojení z fondu má vždy platný aktuální 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
Tento příklad používá fond připojení SQLAlchemy s posluchačem událostí, který automaticky aktualizuje token OAuth každých 15 minut. Posluchač událostí zkontroluje stáří tokenu před vytvořením každého nového připojení z fondu připojení a zajišťuje, že vaše aplikace bude mít vždy platný token bez ručního zásahu.
%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}")
Ověřování hesla Postgres
Nativní ověřování hesel Postgres používá tradiční role Postgres s hesly. Na rozdíl od OAuth tokenů tyto hesla nevyprší po jedné hodině, takže jsou vhodná pro aplikace, které nedokážou často měnit přihlašovací údaje.
Kdy použít hesla Postgres
Ověřování hesla Postgres použijte v případech:
- Vaše aplikace nebo nástroj nemůže aktualizovat přihlašovací údaje každou hodinu
- Máte dlouhotrvající procesy, které potřebují stabilní přihlašovací údaje.
- Vaše klientská knihovna nepodporuje obměnu tokenů OAuth.
- K zajištění kompatibility potřebujete tradiční ověřování databáze.
Jak fungují hesla Postgres
- Životnost hesla: Platnost hesel nevyprší automaticky
- Žádná integrace pracovního prostoru: Ověřování zpracovává Postgres, ne ověřování pracovního prostoru Azure Databricks
- Ruční správa: Hesla musí být ručně otočena a distribuována uživatelům.
- Stále platí vypršení časového limitu připojení: I když nevyprší platnost hesel, stále platí 24hodinový časový limit nečinnosti a 7denní maximální životnost připojení.
Bezpečnostní aspekty
- Úložiště hesel: Bezpečné ukládání hesel pomocí proměnných prostředí nebo systémů pro správu tajných kódů
-
Vyžaduje se protokol SSL: Všechna připojení musí používat protokol SSL (
sslmode=require).