Aracılığıyla paylaş


PostgreSQL için Azure Cosmos DB ile kimlik doğrulaması için Microsoft Entra Id ve yerel PostgreSQL rollerini kullanma

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Cosmos DB (PostgreSQL'e citus veritabanı uzantısıyla desteklenir)

Bu makalede PostgreSQL için Azure Cosmos DB kimlik doğrulama yöntemlerini yapılandıracaksınız. PostgreSQL için Azure Cosmos DB ile kimlik doğrulaması için Microsoft Entra ID yönetici kullanıcılarını ve yerel PostgreSQL rollerini yönetirsiniz. PostgreSQL için Azure Cosmos DB ile Microsoft Entra ID belirtecini kullanmayı da öğreneceksiniz.

PostgreSQL için Azure Cosmos DB kümesi, 'citus' adlı yerleşik bir yerel PostgreSQL rolüyle oluşturulur. Küme sağlama tamamlandıktan sonra daha fazla yerel PostgreSQL rolü ekleyebilirsiniz.

PostgreSQL için Azure Cosmos DB için Microsoft Entra Id (eski adıyla Azure Active Directory) kimlik doğrulamasını da yapılandırabilirsiniz. Kümenizdeki yerel PostgreSQL kimlik doğrulaması yerine veya ek olarak Microsoft Entra Id kimlik doğrulamasını etkinleştirebilirsiniz. Küme sağlandıktan sonra herhangi bir noktada kümede etkinleştirilen kimlik doğrulama yöntemlerini değiştirebilirsiniz. Microsoft Entra Id kimlik doğrulaması etkinleştirildiğinde, PostgreSQL için Azure Cosmos DB kümesine birden çok Microsoft Entra ID kullanıcısı ekleyebilir ve bunlardan herhangi birini yönetici yapabilirsiniz. Microsoft Entra Id kullanıcısı bir kullanıcı veya hizmet sorumlusu olabilir.

Kimlik doğrulama yöntemini seçme

PostgreSQL için Azure Cosmos DB kümesinde kimlik doğrulama yöntemlerini yapılandırmak için Azure portalını kullanmanız gerekir.

Microsoft Entra ID kimlik doğrulamasını ve yerel PostgreSQL kimlik doğrulamasını etkinleştirmek veya devre dışı bırakmak için PostgreSQL için Azure Cosmos DB kümenizde aşağıdaki öğeleri tamamlayın.

  1. Kimlik doğrulama yönetimi seçeneklerini açmak için küme sayfasındaki Küme yönetimi başlığının altında Kimlik Doğrulaması'nı seçin.
  2. Kimlik doğrulama yöntemleri bölümünde, gereksinimlerinize göre kimlik doğrulama yöntemi olarak Yalnızca PostgreSQL kimlik doğrulaması, Microsoft Entra Id kimlik doğrulaması veya PostgreSQL ve Microsoft Entra Id kimlik doğrulaması'nı seçin.

İşlem tamamlandıktan sonra Microsoft Entra ID kimlik doğrulamasını yapılandırmaya veya aynı Kimlik Doğrulaması sayfasına yerel PostgreSQL rolleri eklemeye devam edin.

Microsoft Entra Id kimlik doğrulamayı yapılandırma

Önkoşullar

Kullanıcıların Microsoft Entra Id kiracısında PostgreSQL için Azure Cosmos DB'de oturum açmasına izin verilmelidir. PostgreSQL kümeleri için Azure Cosmos DB'de kimlik doğrulaması için kullanılacak microsoft Entra ID kiracısı için bu adımlar bir kez gerçekleştirilmelidir.

Önemli

Değişikliği yapmak için Microsoft Entra Id kiracı yöneticisi izinleri gereklidir. Sorun giderme izinleri için yönergelere bakın.

  1. Azure portalında 'Microsoft Entra Id' araması yapın.
  2. 'Microsoft Entra Id' hizmetini açın.
  3. Genel Bakış bölümündeki Microsoft Entra ID hizmetinin Genel Bakış sayfasında 'b4fa09d8-5da5-4352-83d9-05c2a44cf431' uygulama kimliğini arayın.
  4. Arama sonuçlarında 'PostgreSQL için Azure Cosmos DB AAD Kimlik Doğrulaması' kurumsal uygulamasını seçin.
  5. PostgreSQL için Azure Cosmos DB AAD Kimlik Doğrulaması kurumsal uygulamasında Özellikler sayfasını seçin.
  6. Kullanıcıların oturum açması için etkinleştirildi mi? seçeneğini Evet olarak ayarlayın ve değişikliği kaydedin.

Not

Kurumsal uygulamanın 'Kullanıcıların oturum açması için etkinleştirildi' gibi özelliklerini düzenlemek için Genel Yönetici, Bulut Uygulaması Yöneticisi veya Uygulama Yöneticisi rollerine izin verilmesi gerekir. Yerleşik Microsoft Entra rolleri listesine bakın.

PostgreSQL için Azure Cosmos DB kümesine Microsoft Entra ID yöneticileri ekleme

Kümede Microsoft Entra Id rollerini eklemek veya kaldırmak için Kimlik Doğrulaması sayfasında şu adımları izleyin:

  1. Microsoft Entra Id kimlik doğrulaması bölümünde Microsoft Entra ID yöneticileri ekle'yi seçin.
  2. PostgreSQL için Azure Cosmos DB kümenizde Microsoft Entra ID yöneticisi olmak için, Microsoft Entra ID Yöneticilerini Seçin panelinde geçerli AD kiracısında bir veya daha fazla geçerli Microsoft Entra ID kullanıcısı veya kurumsal uygulaması seçin.
  3. Seçiminizi onaylamak için Seç'i kullanın.
  4. Kimlik Doğrulaması sayfasında, değişiklikleri kaydetmek veya yerel PostgreSQL rolleri eklemeye devam etmek için araç çubuğunda Kaydet'i seçin.

Yerel PostgreSQL kimlik doğrulamayı yapılandırma

Kümeye Postgres rolleri eklemek için Kimlik Doğrulaması sayfasında şu adımları izleyin:

  1. PostgreSQL kimlik doğrulaması bölümünde PostgreSQL rolü ekle'yi seçin.
  2. Rol adını ve parolayı girin. Kaydet'i seçin.
  3. Kimlik Doğrulaması sayfasında, değişiklikleri kaydetmek veya Microsoft Entra ID yönetici kullanıcıları eklemeye devam etmek için araç çubuğunda Kaydet'i seçin.

Yerel PostgreSQL kullanıcısı kümenin koordinatör düğümünde oluşturulur ve tüm çalışan düğümlerine yayılır. Azure portalı aracılığıyla oluşturulan roller LOGIN özniteliğine sahiptir ve bu da veritabanında oturum açabilen gerçek kullanıcılar olduğu anlamına gelir.

Microsoft Entra ID kimlik doğrulamasını kullanarak PostgreSQL için Azure Cosmos'a bağlanma

Microsoft Entra Id tümleştirmesi psql gibi standart PostgreSQL istemci araçlarıyla çalışır. Bu araçlar Microsoft Entra ID'yi tanımaz ve yalnızca PostgreSQL'e bağlanırken kullanıcı adı ve parola belirtmeyi destekler. Bu gibi durumlarda Parola olarak Microsoft Entra Id belirteci geçirilir.

Aşağıdaki istemcileri test ettik:

  • psql komut satırı: Belirteci geçirmek için değişkenini kullanın PGPASSWORD .
  • Diğer libpq tabanlı istemciler: Örnek olarak yaygın uygulama çerçeveleri ve nesne ilişkisel eşleyiciler (ORM' ler) verilebilir.
  • pgAdmin: Sunucu oluşturma sırasında Bağlan'ı şimdi temizleyin.

PostgreSQL için Azure Cosmos DB kullanıcısı olarak Microsoft Entra Kimliği ile kimlik doğrulaması yapmak için aşağıdaki yordamları kullanın. Azure Cloud Shell'de, azure sanal makinesinde veya yerel makinenizde takip edebilirsiniz.

Kullanıcının Azure aboneliğinde oturum açma

Azure CLI'yi kullanarak Microsoft Entra Id ile kimlik doğrulaması yaparak başlayın. Bu adım Azure Cloud Shell'de gerekli değildir.

az login

Komut, Microsoft Entra Id kimlik doğrulaması sayfasına bir tarayıcı penceresi açar. Microsoft Entra Id kullanıcı adınızı ve parolanızı vermeniz gerekir.

Kimlik doğrulaması için kullandığınız kullanıcı hesabı adı (örneğin, user@tenant.onmicrosoft.com) bir sonraki adımda erişim belirtecinin oluşturulacağı addır.

Microsoft Entra Id erişim belirtecini alma

Microsoft Entra Kimliği doğrulanmış kullanıcının PostgreSQL için Azure Cosmos'a erişmesi için bir erişim belirteci almak için Azure CLI'yi kullanın. Bir örnek aşağıda verilmiştir:

az account get-access-token --resource https://token.postgres.cosmos.azure.com

Kimlik doğrulaması başarılı olduktan sonra, Microsoft Entra Id geçerli Azure aboneliği için bir erişim belirteci döndürür:

{
  "accessToken": "[TOKEN]",
  "expiresOn": "[expiration_date_and_time]",
  "subscription": "[subscription_id]",
  "tenant": "[tenant_id]",
  "tokenType": "Bearer"
}

TOKEN bir Base64 dizesidir. Kimliği doğrulanmış kullanıcı hakkındaki tüm bilgileri kodlar ve PostgreSQL için Azure Cosmos DB hizmetiyle ilişkilendirilir. Belirteç en fazla 90 dakika ile en az 5 dakika geçerlidir. expiresOn, gerçek belirteç süre sonu süresini tanımlar.

İstemci psql ile oturum açmak için parola olarak belirteç kullanma

Bağlanırken, en iyisi erişim belirtecini PostgreSQL kullanıcı parolası olarak kullanmaktır.

psql komut satırı istemcisi kullanılırken erişim belirtecinin ortam değişkeni üzerinden PGPASSWORD geçirilmesi gerekir. Bunun nedeni, erişim belirtecinin psql'nin doğrudan kabul edebildiği parola uzunluğunu aşmasıdır.

İşte bir Windows örneği:

set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

İşte bir Linux/macOS örneği:

export PGPASSWORD=<TOKEN value from the previous step>

Ayrıca, komut değişimini kullanarak önceki iki adımı birleştirebilirsiniz. Belirteç alma işlemi bir değişkene kapsüllenebilir ve ortam değişkeni için PGPASSWORD doğrudan bir değer olarak geçirilebilir:

export PGPASSWORD=$(az account get-access-token --resource https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)

Not

PGPASSWORD değişkeninin Microsoft Entra Id kimlik doğrulaması aboneliğiniz için Microsoft Entra ID erişim belirtecine ayarlandığından emin olun. Aynı oturumdan Postgres rol kimlik doğrulaması yapmanız gerekiyorsa, PGPASSWORD'u Postgres rol parolasına ayarlayabilir veya parolayı etkileşimli olarak girmek için PGPASSWORD değişken değerini temizleyebilirsiniz. Kimlik doğrulaması PGPASSWORD'da yanlış değerle başarısız olur.

Artık, erişim belirtecinin oluşturulduğu Microsoft Entra ID kullanıcı hesabını kullanarak PostgreSQL için Azure Cosmos DB ile bağlantı başlatabilirsiniz. Bunu genellikle kullanıcı hesabıyla kullanıcı olarak ve komut satırında 'password' parametresi olmadan yaptığınız gibi yaparsınız:

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"

PgAdmin ile oturum açmak için parola olarak belirteç kullanma

PgAdmin ile bir Microsoft Entra ID belirteci kullanarak bağlanmak için şu adımları izleyin:

  1. Sunucu oluşturma sırasında Şimdi bağlan seçeneğini temizleyin.
  2. Bağlantı sekmesine sunucu ayrıntılarınızı girin ve kaydedin.
    1. Kullanıcı adı'nda geçerli bir Microsoft Entra ID kullanıcı belirtildiğinden emin olun.
  3. pgAdmin Nesnesi menüsünden Sunucuya Bağlan'ı seçin.
  4. İstendiğinde Microsoft Entra Id belirteci parolasını girin.

Bağlanırken dikkat edilmesi gereken bazı önemli noktalar şunlardır:

  • user@tenant.onmicrosoft.com , Microsoft Entra ID kullanıcısının adıdır.
  • Azure kullanıcısının tam olarak yazıldığını kullandığınızdan emin olun. Microsoft Entra Id kullanıcı ve grup adları büyük/küçük harfe duyarlıdır.
  • Ad boşluk içeriyorsa, her boşluktan kaçmak için önce bir ters eğik çizgi (\) kullanın.
  • Erişim belirtecinin geçerliliği 5 dakika ile 90 dakika arasındadır. PostgreSQL için Azure Cosmos'ta oturum açma işlemini başlatmadan önce erişim belirtecini almanız gerekir.

Artık Microsoft Entra Id kimlik doğrulaması aracılığıyla PostgreSQL için Azure Cosmos sunucunuzda kimliğiniz doğrulandı.

Yerel PostgreSQL rollerini yönetme

Kümede yerel PostgreSQL kimlik doğrulaması etkinleştirildiğinde, yerleşik 'citus' rolüne ek olarak Postgres rollerini ekleyebilir ve silebilirsiniz. Ayrıca parolayı sıfırlayabilir ve yerel roller için Postgres ayrıcalıklarını değiştirebilirsiniz.

Yerel bir PostgreSQL kullanıcı rolünü silme veya parolasını değiştirme

Bir kullanıcıyı güncelleştirmek için kümenizin Kimlik Doğrulama sayfasını ziyaret edin ve kullanıcının yanındaki üç noktayı ... seçin. Üç nokta, kullanıcıyı silmek veya parolasını sıfırlamak için bir menü açar.

Rol citus ayrıcalıklıdır ve silinemez. Ancak küme citus için 'Yalnızca Microsoft Entra Id kimlik doğrulaması' kimlik doğrulama yöntemi seçilirse rol devre dışı bırakılır.

Kullanıcı rolleri için ayrıcalıkları değiştirme

Yeni kullanıcı rolleri genellikle kısıtlı ayrıcalıklarla veritabanı erişimi sağlamak için kullanılır. Kullanıcı ayrıcalıklarını değiştirmek için PgAdmin veya psql gibi bir araç kullanarak standart PostgreSQL komutlarını kullanın. Daha fazla bilgi için bkz . Kümeye bağlanma.

Örneğin, PostgreSQL'in db_user okumasına mytableizin vermek için şu izni verin:

GRANT SELECT ON mytable TO db_user;

Microsoft Entra Id rolüne user@tenant.onmicrosoft.com aynı izinleri vermek için aşağıdaki komutu kullanın:

GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";

PostgreSQL için Azure Cosmos DB tek tablolu GRANT deyimlerini tüm kümeye yayarak tüm çalışan düğümlerine uygular. Ayrıca sistem genelindeki GRANT'leri de yayılır (örneğin, bir şemadaki tüm tablolar için):

-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;

Veya Microsoft Entra Id rolü için

-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";

Sonraki adımlar