Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Lakebase Autoscaling bevindt zich in de bètaversie van de volgende regio's: eastus2, , westeuropewestus.
Lakebase Autoscaling is de nieuwste versie van Lakebase met automatisch schalen van rekenkracht, schalen naar nul, vertakkingen en direct herstellen. Voor een vergelijking van functies met Lakebase Ingericht, zie het kiezen tussen de versies.
Meer informatie over het verifiëren van databaseverbindingen met Lakebase Postgres. Zie quickstart voor stapsgewijze instructies voor de verbinding.
Overzicht
Lakebase ondersteunt twee verificatiemethoden, die elk zijn ontworpen voor verschillende gebruiksvoorbeelden:
OAuth-tokenverificatie: Maakt gebruik van Azure Databricks-identiteiten met beperkte OAuth-tokens. Geschikt voor:
- Interactieve sessies waar u tokens kunt vernieuwen
- Met werkruimte geïntegreerde werkstromen
- Toepassingen die tokenrotatie kunnen implementeren
- Wanneer u verificatie wilt beheren door Azure Databricks
Systeemeigen Postgres-wachtwoordverificatie: Gebruikt traditionele Postgres-rollen met wachtwoorden. Geschikt voor:
- Toepassingen die inloggegevens niet ieder uur kunnen vernieuwen
- Langlopende processen
- Tools die geen ondersteuning bieden voor tokenrotatie
Opmerking
Platformbeheer versus databasetoegang: deze pagina is gericht op databaseverificatie (OAuth-tokens en Postgres-wachtwoorden voor het maken van verbinding met uw database). Zie Project-machtigingen voor verificatie voor platformbeheer (projecten, vertakkingen, berekeningen).
Verbindingstime-outs
Alle databaseverbindingen gelden voor de volgende limieten, ongeacht de verificatiemethode:
- Time-out voor inactiviteit van 24 uur: Verbindingen zonder activiteit gedurende 24 uur worden automatisch gesloten.
- Maximale verbindingsduur van 3 dagen: Verbindingen die langer dan 3 dagen actief zijn, kunnen worden gesloten, ongeacht de activiteit.
Ontwerp uw toepassingen om verbindingstime-outs correct te verwerken door verbindingslogica voor opnieuw proberen te implementeren met de juiste time-outinstellingen.
OAuth-tokenverificatie
Met OAuth-tokenverificatie kunt u verbinding maken met behulp van uw Azure Databricks-identiteit. U genereert een OAuth-token met een tijdslimiet van de Gebruikersinterface van Lakebase en gebruikt dit als wachtwoord bij het maken van verbinding met Postgres.
De OAuth-rol van de projecteigenaar wordt automatisch gemaakt. Als u OAuth-verificatie wilt inschakelen voor andere Azure Databricks-identiteiten, moet u hun Postgres-rollen maken met behulp van de databricks_auth extensie en SQL. Zie Een OAuth-rol maken voor een DB-identiteit met behulp van SQL.
Hoe OAuth-tokens werken
- Levensduur van token: OAuth-tokens verlopen na één uur.
- Vervaldatum afdwingen: Het verlopen van tokens wordt alleen afgedwongen bij aanmelding. Open verbindingen blijven actief, zelfs nadat het token is verlopen.
- Verificatie opnieuw: Een Postgres-query of -opdracht mislukt als het token is verlopen.
- Token vernieuwen: Genereer zo nodig een nieuw token uit de gebruikersinterface voor interactieve sessies. Voor toepassingen met langdurige verbindingen implementeert u tokenrotatie om referenties automatisch te vernieuwen.
Vereisten en beperkingen
-
De bijbehorende Postgres-rol is vereist: uw Azure Databricks-identiteit moet een bijbehorende Postgres-rol hebben. De rol van de projecteigenaar wordt automatisch gemaakt. Maak voor andere Azure Databricks-identiteiten hun rollen met behulp van de
databricks_authextensie. - Werkruimte-afbakening: OAuth-tokens zijn afgebakend binnen de werkruimte en moeten tot dezelfde werkruimte behoren die eigenaar is van het project. Tokenverificatie tussen werkruimten wordt niet ondersteund.
-
SSL vereist: verificatie op basis van tokens vereist SSL-verbindingen. Alle clients moeten worden geconfigureerd voor het gebruik van SSL (meestal
sslmode=require).
Een OAuth-token verkrijgen in een gebruikers-naar-machine-stroom
Als u een database-eigenaar, beheerder of uw Azure Databricks-identiteit bent met een bijbehorende Postgres-rol voor de database, kunt u een OAuth-token verkrijgen via de gebruikersinterface, de Databricks-API, CLI of een van de Databricks SDK's.
Zie Gebruikerstoegang tot Azure Databricks autoriseren met OAuth voor de autorisatie-instructies op werkruimteniveau voor het verkrijgen van OAuth-tokens voor andere Azure Databricks-identiteiten.
UI (Gebruikersinterface)
Wanneer u SQL-clients zoals psql of DBeaver gebruikt, gebruikt u de Lakebase-gebruikersinterface om tokens te genereren:
- Navigeer naar uw project in de Lakebase-app.
- Selecteer de vertakking en rekenkracht waarmee u verbinding wilt maken.
- Klik op Verbinden en volg de instructies om een OAuth-token te genereren.
Zie Verbinding maken met een OAuth-rol voor volledige instructies.
CLI (Command Line Interface)
# Generate OAuth token for database connection (1-hour expiration)
databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output json
Antwoord:
{
"token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
"expire_time": "2026-01-22T17:07:00Z"
}
Gebruik de token waarde als het wachtwoord wanneer u verbinding maakt met uw database.
Python SDK
U kunt een OAuth-token genereren met behulp van de Databricks SDK voor 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
U kunt een OAuth-token genereren met behulp van de Databricks SDK voor 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());
Een OAuth-token verkrijgen in een machine-naar-machine-proces
Als u beveiligde, geautomatiseerde (machine-naar-machine) toegang tot de database wilt inschakelen, moet u een OAuth-token verkrijgen met behulp van een Azure Databricks-service-principal. Dit proces omvat het configureren van de service-principal, het genereren van referenties en het instellen van OAuth-tokens voor verificatie.
- Configureer een serviceprincipal met referenties voor onbepaalde tijd. Voor instructies, zie Service-principal toegang autoriseren tot Azure Databricks met behulp van OAuth.
- Aanmaken nieuwe OAuth-tokens als de service-principeel.
Opmerking: Databasereferentietokens zijn binnen het bereik van de werkruimte. Hoewel de endpoint parameter is vereist, heeft het geretourneerde token toegang tot elke database of elk project in de werkruimte waarvoor de service-principal machtigingen heeft.
CLI (Command Line Interface)
# Generate OAuth token for database connection (1-hour expiration)
databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output json
Antwoord:
{
"token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
"expire_time": "2026-01-22T17:07:00Z"
}
Gebruik de token waarde als het wachtwoord wanneer u verbinding maakt met uw database.
Python SDK
U kunt een OAuth-token genereren met behulp van de Databricks SDK voor 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
U kunt een OAuth-token genereren met behulp van de Databricks SDK voor 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());
Opmerking
OAuth-tokens draaien vóór de vervaldatum per uur:
- Controleer de verlooptijd van het OAuth-token voor elk gebruik en vernieuw indien nodig.
- U kunt ook een achtergrondthread instellen om het huidige OAuth-token periodiek te vernieuwen.
Voorbeelden van tokenrotatie
Omdat OAuth-tokens na één uur verlopen, moeten toepassingen die langlopende databaseverbindingen onderhouden, tokenrotatie implementeren om referenties periodiek te vernieuwen. In de volgende voorbeelden ziet u hoe u tokens automatisch kunt roteren in uw toepassingscode.
Opmerking
Vereisten voor deze voorbeelden:
- U moet zich authentiseren in de werkruimte die eigenaar is van het project. De
WorkspaceClient()gebruikt je werkruimte OAuth-referenties om databasetokens te genereren. - Uw Azure Databricks-identiteit moet lid zijn van de werkruimte waarin het project is gemaakt.
- Haal uw verbindingsparameters (host, database, eindpunt) op in het dialoogvenster Verbinding maken in de Lakebase-app. Zie quickstart voor meer informatie.
- De
endpointparameter maakt gebruik van de indeling:projects/{project-id}/branches/{branch-id}/endpoints/{endpoint-id}
Zie Gebruikerstoegang tot Azure Databricks autoriseren met OAuth of service-principal toegang verlenen tot Azure Databricks met OAuth voor het instellen van werkruimteverificatie.
Python: psycopg3
In dit voorbeeld wordt de verbindingsgroep van psycopg3 gebruikt met een aangepaste verbindingsklasse waarmee telkens wanneer een nieuwe verbinding wordt gemaakt een nieuw OAuth-token wordt gegenereerd. Deze methode zorgt ervoor dat elke verbinding van de pool altijd een geldig, actueel token heeft.
%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
In dit voorbeeld wordt de verbindingsgroep van SQLAlchemy gebruikt met een gebeurtenislistener waarmee het OAuth-token elke 15 minuten automatisch wordt vernieuwd. De gebeurtenislistener controleert de tokenleeftijd voordat elke nieuwe verbinding wordt gemaakt vanuit de pool, zodat uw toepassing altijd een geldig token heeft zonder handmatige tussenkomst.
%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}")
Postgres-wachtwoordverificatie
Systeemeigen Postgres-wachtwoordverificatie maakt gebruik van traditionele Postgres-rollen met wachtwoorden. In tegenstelling tot OAuth-tokens verlopen deze wachtwoorden na één uur niet, waardoor ze geschikt zijn voor toepassingen die niet regelmatig referenties kunnen rouleren.
Wanneer gebruikt u Postgres-wachtwoorden?
Gebruik Postgres-wachtwoordverificatie wanneer:
- Uw toepassing of hulpprogramma kan referenties niet elk uur vernieuwen
- U hebt langlopende processen die stabiele referenties nodig hebben
- Uw clientbibliotheek biedt geen ondersteuning voor OAuth-tokenrotatie
- U hebt traditionele databaseverificatie nodig voor compatibiliteit
Hoe Postgres-wachtwoorden werken
- Levensduur van wachtwoord: wachtwoorden verlopen niet automatisch
- Geen werkruimte-integratie: verificatie wordt verwerkt door Postgres, niet door verificatie van de Azure Databricks-werkruimte
- Handmatig beheer: wachtwoorden moeten handmatig worden gedraaid en gedistribueerd naar gebruikers
- Verbindingstime-outs zijn nog steeds van toepassing: Hoewel wachtwoorden niet verlopen, zijn verbindingen nog steeds onderhevig aan time-outs voor inactiviteit van 24 uur en een maximale verbindingsduur van 7 dagen
Beveiligingsoverwegingen
- Wachtwoordopslag: wachtwoorden veilig opslaan met behulp van omgevingsvariabelen of geheimenbeheersystemen
-
SSL vereist: alle verbindingen moeten GEBRUIKMAKEN van SSL (
sslmode=require)