Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Lakebase Autoscaling berada di Beta di wilayah berikut: eastus2, , westeuropewestus.
Lakebase Autoscaling adalah versi terbaru Lakebase dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk perbandingan fitur dengan Lakebase Provisioned, lihat memilih antar versi.
Pelajari cara mengautentikasi koneksi database ke Lakebase Postgres. Untuk instruksi koneksi langkah demi langkah, lihat Mulai Cepat.
Gambaran Umum
Lakebase mendukung dua metode autentikasi, masing-masing dirancang untuk kasus penggunaan yang berbeda:
Autentikasi token OAuth: Menggunakan identitas Azure Databricks dengan token OAuth terbatas waktu. Terbaik untuk:
- Sesi interaktif tempat Anda dapat me-refresh token
- Alur kerja yang terintegrasi dalam ruang kerja
- Aplikasi yang dapat menerapkan rotasi token
- Saat Anda ingin autentikasi dikelola oleh Azure Databricks
Autentikasi kata sandi Postgres asli: Menggunakan peran Postgres tradisional dengan kata sandi. Terbaik untuk:
- Aplikasi yang tidak dapat menyegarkan kredensial per jam
- Proses yang berjalan lama
- Alat yang tidak mendukung rotasi token
Nota
Manajemen platform vs akses database: Halaman ini berfokus pada autentikasi database (token OAuth dan kata sandi Postgres untuk menyambungkan ke database Anda). Untuk autentikasi manajemen platform (membuat proyek, cabang, komputasi), lihat Izin proyek.
Waktu sambungan habis
Semua koneksi database tunduk pada batas berikut terlepas dari metode autentikasi:
- Batas waktu diam 24 jam: Koneksi tanpa aktivitas selama 24 jam secara otomatis ditutup.
- Masa pakai koneksi maksimum 3 hari: Koneksi yang telah hidup selama lebih dari 3 hari dapat ditutup terlepas dari aktivitas.
Rancang aplikasi Anda untuk menangani batas waktu koneksi dengan lancar dengan menerapkan logika coba lagi koneksi dengan pengaturan batas waktu yang sesuai.
Autentikasi token OAuth
Autentikasi token OAuth memungkinkan Anda terhubung menggunakan identitas Azure Databricks Anda. Anda menghasilkan token OAuth terbatas waktu dari UI Lakebase dan menggunakannya sebagai kata sandi saat menyambungkan ke Postgres.
Peran OAuth pemilik proyek dibuat secara otomatis. Untuk mengaktifkan autentikasi OAuth untuk identitas Azure Databricks lainnya, Anda harus membuat peran Postgres mereka menggunakan databricks_auth ekstensi dan SQL. Lihat Membuat peran OAuth untuk identitas DB menggunakan SQL.
Cara kerja token OAuth
- Masa pakai token: Token OAuth kedaluwarsa setelah satu jam.
- Penegakan kedaluwarsa: Kedaluwarsa token hanya diberlakukan saat masuk. Koneksi terbuka tetap aktif bahkan setelah token kedaluwarsa.
- Autentikasi ulang: Setiap kueri atau perintah Postgres gagal jika token telah kedaluwarsa.
- Perbarui Token: Untuk sesi interaktif, hasilkan token baru dari UI saat dibutuhkan. Untuk aplikasi dengan koneksi jangka panjang, terapkan rotasi token untuk menyegarkan kredensial secara otomatis.
Persyaratan dan batasan
-
Peran Postgres yang sesuai diperlukan: Identitas Azure Databricks Anda harus memiliki peran Postgres yang sesuai. Peran pemilik proyek dibuat secara otomatis. Untuk identitas Azure Databricks lainnya, buat peran mereka menggunakan
databricks_authekstensi. - Pembatasan ruang kerja: Token OAuth dibatasi oleh ruang kerja dan harus berada di ruang kerja yang sama dengan tempat proyek berada. Autentikasi token lintas ruang kerja tidak didukung.
-
SSL diperlukan: Autentikasi berbasis token memerlukan koneksi SSL. Semua klien harus dikonfigurasi untuk menggunakan SSL (biasanya
sslmode=require).
Mendapatkan token OAuth dalam alur pengguna-ke-komputer
Jika Anda adalah pemilik database, admin, atau identitas Azure Databricks Anda memiliki peran Postgres yang sesuai untuk database, Anda dapat memperoleh token OAuth dari UI, DATAbricks API, CLI, atau salah satu SDK Databricks.
Untuk pengguna identitas Azure Databricks lainnya, lihat Mengotorisasi akses pengguna ke Azure Databricks dengan OAuth untuk instruksi otorisasi tingkat ruang kerja untuk mendapatkan token OAuth.
Antarmuka Pengguna
Saat menggunakan klien SQL seperti psql atau DBeaver, gunakan UI Lakebase untuk menghasilkan token:
- Navigasikan ke proyek Anda di Aplikasi Lakebase.
- Pilih cabang dan komputasi yang ingin Anda sambungkan.
- Klik Sambungkan dan ikuti instruksi untuk menghasilkan token OAuth.
Lihat Menyambungkan dengan peran OAuth untuk instruksi lengkap.
antarmuka baris perintah (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
Jawaban:
{
"token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
"expire_time": "2026-01-22T17:07:00Z"
}
token Gunakan nilai sebagai kata sandi saat menyambungkan ke database Anda.
Python SDK
Anda dapat menghasilkan token OAuth menggunakan Databricks SDK untuk 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
Anda dapat menghasilkan token OAuth menggunakan Databricks SDK untuk 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());
Mendapatkan token OAuth dalam alur mesin-ke-mesin
Untuk mengaktifkan akses yang aman dan otomatis (komputer-ke-mesin) ke database, Anda harus mendapatkan token OAuth menggunakan perwakilan layanan Azure Databricks. Proses ini melibatkan konfigurasi perwakilan layanan, menghasilkan kredensial, dan menambang token OAuth untuk autentikasi.
Konfigurasikan perwakilan layanan dengan kredensial yang berlaku tanpa batas waktu. Untuk petunjuknya, lihat Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth.
Mencetak token OAuth baru sebagai prinsipal layanan.
antarmuka baris perintah (CLI)
# Generate OAuth token for database connection (1-hour expiration) databricks postgres generate-database-credential projects/my-project/branches/production/endpoints/my-compute --output jsonJawaban:
{ "token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...", "expire_time": "2026-01-22T17:07:00Z" }tokenGunakan nilai sebagai kata sandi saat menyambungkan ke database Anda.Python SDK
Anda dapat menghasilkan token OAuth menggunakan Databricks SDK untuk 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
Anda dapat menghasilkan token OAuth menggunakan Databricks SDK untuk 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());
Nota
Putar token OAuth sebelum habis waktu setiap jam.
- Periksa waktu kedaluwarsa token OAuth pada setiap penggunaan dan refresh saat diperlukan.
- Atau, siapkan utas latar belakang untuk menyegarkan token OAuth yang sedang digunakan secara berkala.
Contoh rotasi token
Karena token OAuth kedaluwarsa setelah satu jam, aplikasi yang mempertahankan koneksi database yang berjalan lama harus menerapkan rotasi token untuk menyegarkan kredensial secara berkala. Contoh berikut menunjukkan cara memutar token secara otomatis dalam kode aplikasi Anda.
Nota
Persyaratan untuk contoh-contoh ini:
- Anda harus diautentikasi ke ruang kerja yang memiliki proyek.
WorkspaceClient()menggunakan kredensial OAuth ruang kerja Anda untuk menghasilkan token database. - Identitas Azure Databricks Anda harus menjadi anggota ruang kerja tempat proyek dibuat.
- Dapatkan parameter koneksi Anda (host, database, titik akhir) dari dialog Sambungkan di Aplikasi Lakebase. Lihat Mulai Cepat untuk detailnya.
- Parameter
endpointmenggunakan format :projects/{project-id}/branches/{branch-id}/endpoints/{endpoint-id}
Untuk penyiapan autentikasi ruang kerja, lihat Mengotorisasi akses pengguna ke Azure Databricks dengan OAuth atau Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth.
Python: psycopg3
Contoh ini menggunakan kumpulan koneksi psycopg3 dengan kelas koneksi kustom yang menghasilkan token OAuth baru setiap kali koneksi baru dibuat. Pendekatan ini memastikan setiap koneksi dari kumpulan selalu memiliki token yang valid dan terkini.
%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
Contoh ini menggunakan kumpulan koneksi SQLAlchemy dengan pendengar peristiwa yang secara otomatis me-refresh token OAuth setiap 15 menit. Pendengar acara memeriksa usia token sebelum setiap koneksi baru dibuat dari kolam, memastikan aplikasi Anda selalu memiliki token yang valid tanpa intervensi manual.
%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}")
Autentikasi kata sandi Postgres
Autentikasi kata sandi Postgres asli menggunakan peran Postgres tradisional dengan kata sandi. Tidak seperti token OAuth, kata sandi ini tidak kedaluwarsa setelah satu jam, membuatnya cocok untuk aplikasi yang tidak dapat menangani rotasi kredensial yang sering.
Kapan menggunakan kata sandi Postgres
Gunakan autentikasi kata sandi Postgres saat:
- Aplikasi atau alat Anda tidak dapat menyegarkan kredensial setiap jam
- Anda memiliki proses jangka panjang yang memerlukan kredensial yang stabil
- Pustaka klien Anda tidak mendukung rotasi token OAuth
- Anda memerlukan autentikasi database tradisional untuk kompatibilitas
Cara kerja kata sandi Postgres
- Masa pakai kata sandi: Kata sandi tidak kedaluwarsa secara otomatis
- Tidak ada integrasi ruang kerja: Autentikasi ditangani oleh Postgres, bukan autentikasi ruang kerja Azure Databricks
- Manajemen manual: Kata sandi harus diputar dan didistribusikan secara manual kepada pengguna
- Batas waktu koneksi masih berlaku: Meskipun kata sandi tidak kedaluwarsa, koneksi masih tunduk pada batas waktu diam 24 jam dan masa pakai koneksi maksimum 7 hari
Pertimbangan keamanan
- Penyimpanan kata sandi: Menyimpan kata sandi dengan aman menggunakan variabel lingkungan atau sistem manajemen rahasia
-
SSL diperlukan: Semua koneksi harus menggunakan SSL (
sslmode=require)