Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı ile kimlik doğrulaması için Microsoft Entra Id kullanma

Bu makalede, PostgreSQL için Azure Veritabanı ile kimlik doğrulaması için Microsoft Entra ID erişimini yapılandıracaksınız. PostgreSQL için Azure Veritabanı esnek sunucu örneğiyle Microsoft Entra belirtecini kullanmayı da öğrenirsiniz.

PostgreSQL için Azure Veritabanı esnek sunucu örneği için Microsoft Entra kimlik doğrulamasını sunucu sağlama sırasında veya daha sonra yapılandırabilirsiniz. Yalnızca Microsoft Entra yönetici kullanıcıları, Microsoft Entra ID tabanlı kimlik doğrulaması için kullanıcı oluşturabilir veya etkinleştirebilir. Bu rol yükseltilmiş kullanıcı izinlerine (örneğin, CREATEDB) sahip olduğundan, normal veritabanı işlemleri için Microsoft Entra yöneticisini kullanmayın.

PostgreSQL için Azure Veritabanı ile birden çok Microsoft Entra yönetici kullanıcınız olabilir. Microsoft Entra yönetici kullanıcıları bir kullanıcı, grup veya hizmet sorumlusu olabilir.

Önkoşullar

Ağ gereksinimlerini yapılandırma

Microsoft Entra Id çok kiracılı bir uygulamadır. Microsoft Entra yönetici gruplarını ekleme gibi işlemler için giden bağlantı gerekir.

Ağ gereksinimleri topolojiye göre farklılık gösterir:

  • Genel erişim (izin verilen IP adresleri): Ek giden kural gerekli değildir.
  • Özel erişim (sanal ağ tümleştirmesi):
    • Yalnızca AzureActiveDirectory hizmet etiketine ait trafiğe izin veren bir giden NSG kuralı ekleyin.
    • Yol tablosu kullanıyorsanız, hedef AzureActiveDirectory ve sonraki atlama Internetile bir yol ekleyin.
    • Ara sunucu kullanıyorsanız AzureActiveDirectory hizmet etiketine yalnızca HTTPS bağlantısına izin verin.
  • Özel DNS:
    • Bu konak adlarının herkese açık olarak çözümlenmesi gerektiğine emin olmanız: login.microsoftonline.com (kimlik doğrulaması) ve graph.microsoft.com (Microsoft Graph API).
    • Çözüm başarısız olursa, yönetici ataması ve belirteç alma işlemleri başarısız olur.

Sunucu sağlama sırasında Microsoft Entra yöneticisini ayarlamak için şu adımları izleyin:

  1. Azure portalında sunucu sağlama sırasında , kimlik doğrulama yöntemi olarak PostgreSQL ve Microsoft Entra kimlik doğrulaması veya Yalnızca Microsoft Entra kimlik doğrulaması'nı seçin.
  2. Yöneticiyi ayarla sekmesinde, müşteri kiracısında geçerli bir Microsoft Entra kullanıcısı, grubu, hizmet sorumlusu veya yönetilen kimliği seçerek Microsoft Entra yöneticisi olun.

PostgreSQL ve Microsoft Entra kimlik doğrulama yöntemini kullanmayı tercih ediyorsanız isteğe bağlı olarak yerel bir PostgreSQL yönetici hesabı ekleyebilirsiniz.

Uyarı

Sunucu sağlama sırasında yalnızca bir Microsoft Entra yöneticisi ekleyebilirsiniz. Sunucu oluşturulduktan sonra birden çok Microsoft Entra yönetici kullanıcısı ekleyebilirsiniz.

Sunucu oluşturulduktan sonra Microsoft Entra yöneticisini ayarlamak için şu adımları izleyin:

  1. Azure portalında, Microsoft Entra Id için etkinleştirmek istediğiniz PostgreSQL için Azure Veritabanı esnek sunucusu örneğini seçin.
  2. Güvenlik'in altında Kimlik Doğrulaması'yı seçin. Ardından gereksinimlerinize bağlı olarak postgreSQL ve Microsoft Entra kimlik doğrulaması veya yalnızca Microsoft Entra kimlik doğrulamasını kimlik doğrulama yöntemi olarak seçin.
  3. Microsoft Entra Admins Ekle'yi seçin. Ardından müşteri kiracısında geçerli bir Microsoft Entra kullanıcısı, grubu, hizmet sorumlusu veya yönetilen kimliği seçerek Microsoft Entra yöneticisi olun.
  4. Kaydetseçeneğini seçin.

Önemli

Yöneticiyi ayarlarken, tam yönetici izinleriyle PostgreSQL için Azure Veritabanı esnek sunucu örneğine yeni bir kullanıcı eklenir.

Microsoft Entra Id kullanarak PostgreSQL için Azure Veritabanı'na bağlanma

Microsoft Entra tümleştirmesi, Microsoft Entra'nın farkında olmayan ve yalnızca PostgreSQL'e bağlanırken kullanıcı adı ve parola belirtmeyi destekleyen psql gibi standart PostgreSQL araçlarıyla çalışır.

Aşağıdaki istemcileri test ettik:

  • psql komut satırı: Belirteci geçirmek için değişkenini kullanın PGPASSWORD .
  • Azure Data Studio: PostgreSQL uzantısını kullanın.
  • 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 Şimdi bağlan'ı temizleyin.

Microsoft Entra Kimliği ile kimlik doğrulaması

PostgreSQL için Azure Veritabanı esnek sunucu örneği kullanıcısı olarak Microsoft Entra Id ile kimlik doğrulaması yapmak için aşağıdaki yordamları kullanın.

Aşağıdakini kullanarak takip edebilirsiniz:

  • Azure Cloud Shell
  • Azure sanal makinesi
  • Yerel makineniz

Azure'a Giriş Yap

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 kimlik doğrulama sayfasına bir tarayıcı penceresi açar. Microsoft Entra kullanıcı kimliğinizi ve parolanızı vermeniz gerekir.

Microsoft Entra erişim belirtecini alma

Microsoft Entra kimliği doğrulanmış kullanıcının PostgreSQL için Azure Veritabanı'na erişmesi için bir erişim belirteci almak için Azure CLI'yi kullanın. Genel bulut örneği aşağıda verilmişti:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Yukarıdaki kaynak değeri gösterildiği gibi belirtilmelidir. Diğer bulutlar için aşağıdaki komutu kullanarak kaynak değerini arayabilirsiniz:

az cloud show

Azure CLI sürüm 2.0.71 ve üzeri için komutu tüm bulutlar için aşağıdaki uygun sürümde belirtebilirsiniz:

az account get-access-token --resource-type oss-rdbms

Kimlik doğrulaması başarılı olduktan sonra Microsoft Entra Id bir erişim belirteci döndürür:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Belirteç bir Base64 dizesidir. Kimliği doğrulanmış kullanıcı hakkındaki tüm bilgileri kodlar ve PostgreSQL için Azure Veritabanı hizmetini hedefler.

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

Bağlanırken, PostgreSQL kullanıcı parolası olarak erişim belirtecini kullanın.

psql komut satırı istemcisini kullandığınızda, erişim belirtecini ortam değişkeni aracılığıyla PGPASSWORD geçirmeniz gerekir. Erişim belirteci, psql'nin doğrudan kabul edebildiği parola uzunluğundan daha uzundur.

İşte bir Windows örneği:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

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

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Ayrıca, komut değişimini kullanarak 2. ve 3. adımı birleştirebilirsiniz. Belirteç alma işlemini bir değişkene ekleyebilir ve ortam değişkeninin PGPASSWORD değeri olarak doğrudan geçirebilirsiniz:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Şimdi PostgreSQL için Azure Veritabanı'na bağlanın:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

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

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

  1. PgAdmin'i açın ve Sunucu Kaydet>'i seçin.
  2. Genel sekmesinde bir bağlantı adı girin ve Şimdi bağlan'ın işaretini kaldırın.
  3. Bağlantı sekmesinde konak ayrıntılarını girin. Kullanıcı Adını Microsoft Entra UPN'nize ayarlayın (örneğin, user@tenant.onmicrosoft.com). Kaydet.
  4. Ağaçta sunucuyu seçin ve Sunucuya Bağlan'ı seçin.
  5. İstendiğinde, erişim belirtecini parola olarak yapıştırın.

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

  • user@tenant.onmicrosoft.com , Microsoft Entra kullanıcısının userPrincipalName değeridir.

  • Azure kullanıcısının tam olarak yazıldığını kullandığınızdan emin olun. Microsoft Entra 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. Oturum açmış kullanıcıyı almak ve ortam değişkeninin değerini ayarlamak için PGUSER Azure CLI'yı kullanabilirsiniz:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Erişim belirtecinin geçerliliği 5 dakika ile 60 dakika arasındadır. PostgreSQL için Azure Veritabanı'nda oturum açma işlemini başlatmadan önce erişim belirtecini almanız gerekir.

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

Grup üyesi olarak Microsoft Entra Kimliği ile kimlik doğrulaması

Bu bölümde, Bir Microsoft Entra grubu kullanarak nasıl bağlandığınız gösterilmektedir. Grubun bir üyesi olmanız ve grubun veritabanında oluşturulması (eşlenmesi) gerekir.

Grup sorumlusu oluşturma

Veritabanında grup sorumlusu (rol) oluşturun (görünen adı gerektiği gibi değiştirin):

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Grup eşitleme devre dışı bırakılırsa, üyeler erişim belirteçlerini kullanarak oturum açabilir ve grup adını kullanıcı adı olarak belirtebilir.

Grup eşitleme etkinleştirildiyse (pgaadauth.enable_group_sync sunucu parametresi "ON" olarak ayarlandıysa), üyeler tek tek Entra Id kimlik bilgileriyle oturum açmalıdır, ancak yine de kullanıcı adı olarak grup adıyla oturum açabilirler.

  • Grup oturum açma işlemleri uyumluluk nedeniyle kullanılabilir durumda kalır ancak aşağıdakilerle devre dışı bırakılabilir: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • Eşitlemeyi sürdürmek için grup rolü silinmemelidir.

  • Gruplar her 30 dakikada bir otomatik olarak eşitlenir.

  • El ile eşitleme şu şekilde tetiklenebilir: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync param "ON" olmalıdır").

  • Grup meta verisinde grup adı gibi değişiklikler eşitlenmiyor

  • Grup üyeliği değişiklikleri senkronize edildi

    Uyarı

    Yönetilen kimlikler ve hizmet sorumluları grup üyeleri olarak desteklenir.

Azure'a Giriş Yap

Azure CLI'yi kullanarak Microsoft Entra Kimliği ile kimlik doğrulaması yapın. Bu adım Azure Cloud Shell'de gerekli değildir. Kullanıcının Microsoft Entra grubunun bir üyesi olması gerekir.

az login

Microsoft Entra erişim belirtecini alma

Microsoft Entra kimliği doğrulanmış kullanıcının PostgreSQL için Azure Veritabanı'na erişmesi için bir erişim belirteci almak için Azure CLI'yi kullanın. Genel bulut örneği aşağıda verilmişti:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

İlk kaynak değerini tam olarak gösterildiği gibi belirtmeniz gerekir. Diğer bulutlar için aşağıdaki komutu kullanarak kaynak değerini arayabilirsiniz:

az cloud show

Azure CLI sürüm 2.0.71 ve üzeri için komutu tüm bulutlar için aşağıdaki uygun sürümde belirtebilirsiniz:

az account get-access-token --resource-type oss-rdbms

Kimlik doğrulaması başarılı olduktan sonra Microsoft Entra Id bir erişim belirteci döndürür:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

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

Grup üyesi olarak bağlanırken bu önemli noktalar önemlidir:

  • Grup adı, Microsoft Entra grubu görüntüleme adıyla (büyük/küçük harfe duyarlı) tam olarak eşleşmelidir.
  • Üye takma adını değil, yalnızca grup adını kullanın.
  • Gerektiğinde kaçış alanları (örneğin, Prod\ DB\ Readonly).
  • Belirteç geçerliliği 5-60 dakikadır. Bağlanmadan hemen önce edinin; belirteçleri betiklerde depolamayın.

Tavsiye

Kimlik doğrulaması başarısız olursa, veritabanı rolünün mevcut olduğunu doğrulamak için örneğin \du ile kontrol edin ve pgaadauth.enable_group_sync ayarını onaylayın.

Artık Microsoft Entra kimlik doğrulaması aracılığıyla PostgreSQL sunucunuzda kimliğiniz doğrulandı.