Aracılığıyla paylaş


Kimlik doğrulaması hakkında

Önemli

Lakebase Otomatik Ölçeklendirme, otomatik ölçeklendirme işlemi, sıfıra ölçeklendirme, dallanma ve anında geri yükleme ile Lakebase'in en son sürümüdür. Desteklenen bölgeler için bkz . Bölge kullanılabilirliği. Lakebase Tedarik Edilmiş bir kullanıcıysanız, bkz. Lakebase Tedarik Edilmiş.

Lakebase Postgres'e veritabanı bağlantılarının kimliğini doğrulamayı öğrenin. Adım adım bağlantı yönergeleri için bkz. Hızlı Başlangıç.

Genel Bakış

Lakebase, her birinde farklı kullanım örnekleri için tasarlanmış iki kimlik doğrulama yöntemini destekler:

OAuth belirteci kimlik doğrulaması: Süre sınırlı OAuth belirteçleri ile Azure Databricks kimliklerini kullanır. En uygunu:

  • Belirteçleri yenileyebileceğiniz etkileşimli oturumlar
  • Çalışma alanıyla tümleşik iş akışları
  • Belirteç döndürme uygulayabilen uygulamalar
  • Kimlik doğrulamasının Azure Databricks tarafından yönetilmesini istediğinizde

Yerel Postgres parola kimlik doğrulaması: Parolalarla geleneksel Postgres rollerini kullanır. En uygunu:

  • Kimlik bilgilerini saatlik olarak yenileyemeyen uygulamalar
  • Uzun süre çalışan işlemler
  • Belirteç döndürmeyi desteklemeyen araçlar

Uyarı

Platform yönetimi ve veritabanı erişimi: Bu sayfa, veritabanı kimlik doğrulamasına (veritabanınıza bağlanmak için OAuth belirteçleri ve Postgres parolaları) odaklanır. Platform yönetimi kimlik doğrulaması (proje, dal, işlem oluşturma) için bkz. Proje izinleri.

Bağlantı zaman aşımları

Kimlik doğrulama yöntemi ne olursa olsun tüm veritabanı bağlantıları aşağıdaki sınırlara tabidir:

  • 24 saatlik boşta kalma zaman aşımı: 24 saat boyunca etkinlik olmayan bağlantılar otomatik olarak kapatılır.
  • 3 günlük maksimum bağlantı ömrü: 3 günden uzun süredir etkin olan bağlantılar, etkinlikten bağımsız olarak kapatılabilir.

Uygun zaman aşımı ayarlarıyla bağlantı yeniden deneme mantığı uygulayarak uygulamalarınızı bağlantı zaman aşımlarını düzgün bir şekilde işleyecek şekilde tasarlar.

OAuth erişim belirteci kimlik doğrulaması

OAuth belirteci kimlik doğrulaması, Azure Databricks kimliğinizi kullanarak bağlanmanızı sağlar. Zaman sınırlı bir OAuth belirteci oluşturur ve Postgres'e bağlanırken parola olarak kullanırsınız.

Proje sahibinin OAuth rolü otomatik olarak oluşturulur. Diğer Azure Databricks kimliklerinde OAuth kimlik doğrulamasını etkinleştirmek için uzantıyı ve SQL'i databricks_auth kullanarak Postgres rollerini oluşturmanız gerekir. Bkz. SQL kullanarak veritabanı kimliği için OAuth rolü oluşturma.

OAuth belirteçleri nasıl çalışır?

  • Belirteç ömrü: OAuth belirteçlerinin süresi bir saat sonra dolar.
  • Süre sonu uygulanması: Jeton süre sonu yalnızca oturum açma sırasında uygulanır. Açık bağlantılar, belirtecin süresi dolduktan sonra bile etkin kalır.
  • Belirteç yenileme: Etkileşimli oturumlar için gerektiğinde yeni bir belirteç oluşturun. Uzun süre çalışan bağlantılara sahip uygulamalar için kimlik bilgilerini otomatik olarak yenilemek için belirteç döndürmeyi uygulayın.

Gereksinimler ve sınırlamalar

  • İlgili Postgres rolü gerekli: Azure Databricks kimliğinizin eşleşen bir Postgres rolüne sahip olması gerekmektedir. Proje sahibinin rolü otomatik olarak oluşturulur. Diğer Azure Databricks kimlikleri için uzantıyı databricks_auth kullanarak rollerini oluşturun.
  • Çalışma alanı kapsamı: OAuth belirteçleri çalışma alanı kapsamındadır ve projenin sahibi olan çalışma alanına ait olmalıdır. Çalışma alanları arası belirteç kimlik doğrulaması desteklenmez.
  • SSL gerekli: Belirteç tabanlı kimlik doğrulaması ssl bağlantıları gerektirir. Tüm istemcilerin SSL kullanacak şekilde yapılandırılması gerekir (genellikle sslmode=require).

Kullanıcıdan makineye akışta OAuth belirteci alma

Veritabanı sahibi, yönetici veya Azure Databricks kimliğiniz veritabanı için karşılık gelen bir Postgres rolüne sahipse kullanıcı arabiriminden, Databricks API'sinden, CLI'dan veya Databricks SDK'larından birinden OAuth belirteci alabilirsiniz.

Diğer Azure Databricks kimlik kullanıcıları için, OAuth belirteçlerini almak için çalışma alanı düzeyinde yetkilendirme yönergeleri için bkz. OAuth ile Azure Databricks'e kullanıcı erişimini yetkilendirme.

Kullanıcı Arayüzü (UI)

psql veya DBeaver gibi SQL istemcilerini kullanırken belirteç oluşturmak için Lakebase kullanıcı arabirimini kullanın:

  1. Lakebase Uygulamasında projenize gidin.
  2. Bağlanmak istediğiniz şubeyi ve bilgisayarı seçin.
  3. Bağlan'a tıklayın ve yönergeleri izleyerek OAuth belirteci oluşturun.

Tüm yönergeler için bkz. OAuth rolüyle bağlanma .

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

Yanıt:

{
  "token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
  "expire_time": "2026-01-22T17:07:00Z"
}

token Veritabanınıza bağlanırken parola olarak değerini kullanın.

Python SDK'sı

Python için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz.

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="databricks_postgres",
    user="your.email@company.com",
    password=credential.token,
    sslmode="require"
)

Java SDK'sı

Java için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz.

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

Makineden makineye akışta OAuth belirteci alma

Veritabanına güvenli, otomatik (makineden makineye) erişimi etkinleştirmek için Azure Databricks hizmet sorumlusu kullanarak bir OAuth belirteci edinmeniz gerekir. Bu işlem hizmet sorumlusunu yapılandırmayı, kimlik bilgileri oluşturmayı ve kimlik doğrulaması için OAuth belirteçlerini hazırlamayı içerir.

  1. Süresiz geçerli kimlik bilgileriyle bir hizmet ilkesi yapılandırın. Yönergeler için bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.
  2. Hizmet sorumlusu olarak yeni OAuth belirteçleri oluşturun.

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

Yanıt:

{
  "token": "eyJraWQiOiI1NDdkNjFjNzQ2YTk3M2Q3M2ViNjM2YWRiMWY2Nz...",
  "expire_time": "2026-01-22T17:07:00Z"
}

token Veritabanınıza bağlanırken parola olarak değerini kullanın.

Python SDK'sı

Python için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz.

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'sı

Java için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz.

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

Uyarı

OAuth belirteçlerini saatlik süre dolmadan önce döndürün:

  • Her kullanımda OAuth belirtecinin süre sonunu denetleyin ve gerektiğinde yenileyin.
  • Alternatif olarak, geçerli OAuth belirtecini düzenli aralıklarla yenilemek için bir arka plan iş parçacığı ayarlayın.

Belirteç döndürme örnekleri

OAuth belirteçlerinin süresi bir saat sonra dolduğundan, uzun süre çalışan veritabanı bağlantılarını koruyan uygulamaların kimlik bilgilerini düzenli aralıklarla yenilemek için belirteç döndürmesi uygulaması gerekir. Aşağıdaki örneklerde uygulama kodunuzda belirteçleri otomatik olarak döndürme gösterilmektedir.

Uyarı

Bu örnekler için gereksinimler:

  • Projenin sahibi olan çalışma alanında kimlik doğrulaması yapmanız gerekir. , WorkspaceClient() veritabanı belirteçleri oluşturmak için çalışma alanınızın OAuth kimlik bilgilerini kullanır.
  • Azure Databricks kimliğiniz, projenin oluşturulduğu çalışma alanının bir üyesi olmalıdır.
  • Lakebase Uygulamasının Bağlan iletişim kutusundan bağlantı parametrelerinizi (konak, veritabanı, uç nokta) alın. Ayrıntılar için bkz. Hızlı Başlangıç .
  • endpoint parametresi şu biçimi kullanır:projects/{project-id}/branches/{branch-id}/endpoints/{endpoint-id}

Çalışma alanı kimlik doğrulaması kurulumu için bkz. OAuth ile Azure Databricks'e kullanıcı erişiminiyetkilendirme veya OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.

Python: psycopg3

Bu örnekte, her yeni bağlantı oluşturulduğunda yeni bir OAuth belirteci oluşturan özel bir bağlantı sınıfıyla psycopg3'ün bağlantı havuzu kullanılır. Bu yaklaşım, havuzdaki her bağlantının her zaman geçerli ve güncel bir belirteci olmasını sağlar.

%pip install "psycopg[binary,pool]"
from databricks.sdk import WorkspaceClient

import psycopg
from psycopg_pool import ConnectionPool

w = WorkspaceClient()

class CustomConnection(psycopg.Connection):
    @classmethod
    def connect(cls, conninfo='', **kwargs):
        # Generate a fresh OAuth token for each new connection
        endpoint = "projects/<project-id>/branches/<branch-id>/endpoints/<endpoint-id>"
        credential = w.postgres.generate_database_credential(endpoint=endpoint)
        kwargs['password'] = credential.token
        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

Bu örnekte SQLAlchemy'nin bağlantı havuzu, süresi dolmadan önce OAuth belirtecini otomatik olarak yenileyen bir olay dinleyicisi ile birlikte kullanılır. Olay dinleyicisi, havuzdan her yeni fiziksel bağlantı oluşturulmadan önce tetiklenir ve süresi dolmasına 2 dakika kala belirteci yenileyerek, uygulamanızın her zaman geçerli bir belirtece sahip olmasını sağlar, böylelikle manuel müdahaleye gerek kalmaz.

%pip install sqlalchemy psycopg2-binary databricks-sdk
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
token_expiry = 0.0  # Unix timestamp when the current token expires

@event.listens_for(connection_pool, "do_connect")
def provide_token(dialect, conn_rec, cargs, cparams):
    global postgres_password, token_expiry

    # Refresh token if None or expiring within 2 minutes
    if postgres_password is None or time.time() >= token_expiry - 120:
        print("Refreshing PostgreSQL OAuth token")
        credential = w.postgres.generate_database_credential(endpoint=endpoint)
        postgres_password = credential.token
        token_expiry = credential.expire_time.seconds

    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 parola kimlik doğrulaması

Yerel Postgres parola kimlik doğrulaması, parolalarla geleneksel Postgres rollerini kullanır. OAuth belirteçlerinden farklı olarak, bu parolaların süresi bir saat sonra dolmaz ve bu da sık kimlik bilgisi döndürmeyi işleyemeyen uygulamalar için uygun hale getirir.

Postgres parolaları ne zaman kullanılır?

Aşağıdaki durumlarda Postgres parola kimlik doğrulamasını kullanın:

  • Uygulamanız veya aracınız kimlik bilgilerini saatte bir yenileyemez
  • Kararlı kimlik bilgilerine ihtiyaç duyan uzun süre çalışan işlemleriniz var
  • İstemci kitaplığınız OAuth belirteci döndürmeyi desteklemiyor
  • Uyumluluk için geleneksel veritabanı kimlik doğrulamasına ihtiyacınız var

Postgres parolaları nasıl çalışır?

  • Parola ömrü: Parolaların süresi otomatik olarak dolmuyor
  • Çalışma alanı tümleştirmesi yok: Kimlik doğrulaması Azure Databricks çalışma alanı kimlik doğrulaması tarafından değil Postgres tarafından işlenir
  • El ile yönetim: Parolalar el ile döndürülmeli ve kullanıcılara dağıtılmalıdır
  • Bağlantı zaman aşımları hala geçerli: Parolaların süresi dolmasa da, bağlantılar yine de 24 saatlik boşta kalma zaman aşımına ve 7 günlük maksimum bağlantı ömrüne tabidir

Güvenlikle ilgili dikkat edilmesi gerekenler

  • Parola depolama: Ortam değişkenlerini veya gizli dizi yönetim sistemlerini kullanarak parolaları güvenli bir şekilde depolama
  • SSL gerekli: Tüm bağlantılar SSL kullanmalıdır (sslmode=require)

Sonraki Adımlar