Aracılığıyla paylaş


Veritabanı örneğinde kimlik doğrulaması

Önemli

Bu özellik şu bölgelerde Genel Önizleme aşamasındadır: westus, westus2, eastus, , eastus2, centralus, , southcentralus, northeurope, westeuropeaustraliaeast, brazilsouth, canadacentral, centralindia, southeastasia, . uksouth

Bu sayfada, bir Lakebase veritabanı örneğinde kimlik doğrulamasının nasıl yapılacağını açıklanmaktadır. Kimlik doğrulaması yapmanın iki yolu vardır:

  1. Bir OAuth belirteci alın ve Azure Databricks kimliklerini kullanarak kimlik doğrulaması yapın.
  2. Parolalarla yerel Postgres rollerini kullanın.

Azure Databricks kimlikleriyle kimlik doğrulaması

Azure Databricks kimliği olarak kimlik doğrulaması yaptığınızda, Postgres'e bağlanırken bir OAuth belirteci oluşturmanız ve bunu parola olarak kullanmanız gerekir.

Başlamadan önce dikkat edilmesi gerekenler

  • OAuth belirteçlerinin süresi bir saat sonra dolar, ancak süre sonu yalnızca oturum açma sırasında uygulanır. Belirtecin süresi dolsa bile açık bağlantılar etkin kalır. Ancak, kimlik doğrulaması gerektiren herhangi bir PostgreSQL komutu, belirtecin süresi dolduysa başarısız olur.

  • Postgres kimlik doğrulaması için kullanılan OAuth belirteçleri çalışma alanı kapsamındadır ve veritabanı örneğinin sahibi olan çalışma alanına ait olmalıdır. Çalışma alanları arası belirteç kimlik doğrulaması desteklenmez. Kimlik doğrulaması hakkında daha fazla bilgi edinmek için bkz. Databricks CLI için kimlik doğrulaması.

  • Belirteç tabanlı kimlik doğrulaması düz metin parolası gerektirdiği için yalnızca SSL bağlantılarına izin verilir. Belirteç tabanlı kimlik doğrulamasıyla Postgres'e erişmek için kullandığınız istemci kitaplığının SSL bağlantısı kuracak şekilde yapılandırıldığından emin olun.

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

Veritabanı sahibi, yönetici veya Azure Databricks kimliğiniz veritabanı örneği için karşılık gelen bir Postgres rolüne sahipse kullanıcı arabiriminden, Databricks CLI'dan veya Databricks SDK'larından birinden bir OAuth belirteci alabilirsiniz. Databricks CLI kullanarak belirtecin kapsamını uygun şekilde kısıtlayabilirsiniz.

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)

Veritabanı örneğinizin DurumuKullanılabilir olduğunda, OAuth belirteci almak için Azure Databricks kullanıcı arabirimini kullanın:

  1. Çalışma alanı kenar çubuğunda Compute üzerine tıklayın ve Lakebase Tahsis Edildi sekmesine tıklayın.
  2. OAuth belirtecini almak istediğiniz veritabanı örneğinin adını bulun ve tıklayın.
  3. Bağlantı ayrıntıları sekmesine tıklayın.
  4. OAuth Belirteci Al'a tıklayın. Belirtecin ne zaman oluşturulduğunu gösteren bayrak.
  5. Belirteci panonuza kopyalamak için OAuthToken'ı Kopyala'ya tıklayın.

CLI

Veritabanı örneğinizin DurumuKullanılabilir olduğunda, OAuth belirteci almak için Databricks CLI v0.256.0 ve üzerini kullanın:

  1. Belirteç getirmek için aşağıdaki komutu kullanın.
     databricks database generate-database-credential \
       --request-id $(uuidgen) \
       --json '{
         "instance_names": ["db-instance-name"]
       }'
    
  2. Bu, aşağıdaki biçimde bir yanıt oluşturur. Yanıttaki token öğesini kopyalayın.
    {
      "expiration_time": "2025-08-24T14:15:22Z",
      "token": "<string>"
    }
    

Databricks CLI kullanarak OAuth belirteci alma hakkında daha fazla bilgi için bkz. OAuth kullanıcıdan makineye (U2M) kimlik doğrulaması.

Python SDK'sı

Python için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz. Azure Databricks SDK bağlamaları, Python sürümü v0.56.0 için Databricks SDK'sında kullanılabilir.

SDK'nın eski bir sürümüyle çalışıyorsanız, önce bu komutları çalıştırın.

%pip install --upgrade databricks-sdk
%restart_python

Python için Databricks SDK'sı, credveritabanı örneğiniz için güvenli bir OAuth belirteci oluşturur. Gerektiğinde kimlik bilgilerinizi girin.

from databricks.sdk import WorkspaceClient
import uuid

w = WorkspaceClient()

instance_name = "<YOUR INSTANCE>"

cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])

Java SDK'sı

Java için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz. Veritabanı SDK bağlamaları, Java sürüm v0.53.0 veya üzeri için Databricks SDK'sında kullanılabilir. SDK'nın eski bir sürümüyle çalışıyorsanız, içeri aktarılan SDK'yı yenilemeniz gerekebilir. Daha fazla bilgi için buraya bakın.

%scala

import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID

val w = new WorkspaceClient()

val instanceName = "<YOUR INSTANCE>"

// Generate database credential
val cred = w.database().generateDatabaseCredential(
    new GenerateDatabaseCredentialRequest()
        .setRequestId(UUID.randomUUID().toString())
        .setInstanceNames(Collections.singletonList(instanceName))
)

// Print out credential details
System.out.println("Credential: " + cred.getToken())

Makineden makineye akışta OAuth belirteci alma

Veritabanı örneğine 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

    Veritabanı örneğinizin DurumuKullanılabilir olduğunda, OAuth belirteci almak için Databricks CLI v0.256.0 ve üzerini kullanın:

    1. Belirteç getirmek için aşağıdaki komutu kullanın.

        databricks database generate-database-credential \
          --request-id $(uuidgen) \
          --json '{
            "instance_names": ["db-instance-name"]
          }'
      
    2. Bu, aşağıdaki biçimde bir yanıt oluşturur. Yanıttaki token öğesini kopyalayın.

      {
        "expiration_time": "2025-08-24T14:15:22Z",
        "token": "<string>"
      }
      

    Python SDK'sı

    Python için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz. Azure Databricks SDK bağlamaları, Python sürümü v0.56.0 için Databricks SDK'sında kullanılabilir.

    SDK'nın eski bir sürümüyle çalışıyorsanız, önce bu komutları çalıştırın.

    %pip install --upgrade databricks-sdk
    %restart_python
    

    Python için Databricks SDK'sı, credveritabanı örneğiniz için güvenli bir OAuth belirteci oluşturur. Gerektiğinde veritabanı örneğinizin adını girin.

    from databricks.sdk import WorkspaceClient
    import uuid
    
    w = WorkspaceClient(
      host          = "https://<YOUR WORKSPACE URL>/",
      client_id     = "<YOUR SERVICE PRINCIPAL ID>",
      client_secret = "REDACTED"
    )
    
    instance_name = "<YOUR INSTANCE>"
    
    cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
    

    Java SDK'sı

    Java için Databricks SDK'sını kullanarak bir OAuth belirteci oluşturabilirsiniz. Veritabanı SDK bağlamaları, Java sürüm v0.53.0 veya üzeri için Databricks SDK'sında kullanılabilir. SDK'nın eski bir sürümüyle çalışıyorsanız, daha yeni bir SDK'ya güncelleştirmeniz gerekebilir. Daha fazla bilgi için buraya bakın.

    %scala
    
    import com.databricks.sdk.WorkspaceClient
    import com.databricks.sdk.core.DatabricksConfig
    import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
    import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
    import com.databricks.sdk.service.database.DatabaseInstance
    import com.databricks.sdk.service.database.DatabaseCredential
    import java.util.Collections
    import java.util.UUID
    
    val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication
    val w = new WorkspaceClient(config)
    
    val instanceName = "<YOUR INSTANCE>"
    
    // Generate database credential
    val cred = w.database().generateDatabaseCredential(
        new GenerateDatabaseCredentialRequest()
            .setRequestId(UUID.randomUUID().toString())
            .setInstanceNames(Collections.singletonList(instanceName))
    )
    
    // Print out credential details
    System.out.println("Credential: " + cred.getToken())
    

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ç tanımlama sorunlarını çözme

Belirtecinizin kimliği güvenlik etiketiyle eşleşmiyorsa aşağıdaki gibi bir hata iletisi alabilirsiniz.

A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.

Hangi Azure Databricks kimliğinin döndürüldüğünü kontrol etmek için aşağıdaki komutu çalıştırın.

CLI

databricks current-user me

Python SDK'sı

w.current_user.me().user_name

Java SDK'sı

w.currentUser.me().getUserName()

Beklenen kimlik döndürülmezse, çalışma alanı istemcisi başlatılırken doğru kimlik bilgilerinin kullanıldığını doğrulayın.

Microsoft Entra Kimliği ile kimlik doğrulaması

Azure Databricks için Microsoft Entra Id kimlikleri ve belirteçleri, Azure Databricks API'lerinde kimlik doğrulaması yapmak için de kullanılabilir. Postgres'de kimlik doğrulaması yapmak üzere bir belirteç almak için bu API'leri kullanın.

Azure Databricks'te Microsoft Entra ID yönetilen kimliklerini yönetme hakkında bilgi için bkz. Kullanıcıları, hizmet sorumlularını ve grupları yönetme. Microsoft Entra Id'den kullanıcılar, gruplar ve hizmet sorumluları Azure Databricks'te oluşturulabilir. Bu kimlikler Azure Databricks'e eklendikten sonra Postgres rollerini yönetme bölümünde açıklandığı gibi bunları veritabanı örneğine ekleyebilirsiniz.

Microsoft Entra Id belirteçlerini almak için aşağıdakilere bakın:

Azure Databricks grubu olarak kimlik doğrulaması

Gruplar ve grup üyelikleri Azure Databricks'ten Postgres'e eşitlenmez ve Unity Kataloğu izinleri de eşitlenmez. Ancak Postgres'e bir Azure Databricks grubu eklendikten sonra, gruptaki tüm Azure Databricks kullanıcıları kullanıcının parolasını kullanarak grup olarak oturum açabilir. Bu, Postgres'te grup düzeyinde izinleri yönetmenize olanak tanır. Azure Databricks grup kimliğinin herhangi bir doğrudan veya dolaylı üyesi (kullanıcı veya hizmet sorumlusu) Postgres'te kimlik doğrulaması yapabilir ve Azure Databricks grubu Postgres rolü olarak oturum açabilir.

Kullanıcı veya hizmet sorumlusu belirteci kullanarak grup kimliği ile kimlik doğrulaması yapılırken, grup üyeliği yalnızca kimlik doğrulaması sırasında doğrulanır. Bir grup üyesi belirteci ile yapılan tüm açık bağlantılar, üye kimlik doğrulamasından sonra gruptan kaldırılırsa açık kalır. Kaldırılan bir grup üyesinden gelen tüm yeni bağlantı istekleri kimlik doğrulaması sırasında reddedilir.

export PGPASSWORD='<OAuth token of a group member>'
export GROUPROLENAME=<pg-case-sensitive-group-role-name>

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUPROLENAME

Grup tabanlı Postgres oturum açma bilgileri için yalnızca veritabanı örneğinin Azure Databricks çalışma alanına atanan gruplar desteklenir. Çalışma alanına grup atamayı öğrenmek için bkz. Çalışma alanına grup atama.

Postgres rolleri ve parolalarıyla kimlik doğrulaması

Bir saat sonra kimlik bilgisi döndürmeyi desteklemeyen istemcileriniz varsa, parolalarla yerel Postgres rolleri oluşturabilirsiniz:

  1. Çalışma alanı kenar çubuğunda İşlem'e tıklayın.

  2. Veritabanı örnekleri sekmesine tıklayın.

  3. Güncelleştirmek istediğiniz veritabanı örneğini seçin.

  4. Sağ üstteki Düzenle'ye tıklayın.

  5. Postgres Yerel Rolü Oturum Açmayı Etkinleştir'i açın.

  6. Kaydet'e tıklayın.

  7. Parolayla rol oluşturmak için Postgres'de oturum açın veya SQL Düzenleyicisi'ni kullanın.

    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
    
  8. Yeni role ek Postgres izinleri verin. Bkz. PostgreSQL kullanarak Postgres rollerine ayrıcalık verme.

Sonraki Adımlar

Bir kimlik bilgisi (OAuth belirteci veya parola) aldıktan sonra veritabanı örneğinize bağlanabilirsiniz: