Share via


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

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Tek Sunucu

Önemli

PostgreSQL için Azure Veritabanı - Tek Sunucu kullanımdan kaldırma yolundadır. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya yükseltmenizi kesinlikle öneririz. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya geçiş hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı Tek Sunucuya ne oluyor?.

Bu makalede, PostgreSQL için Azure Veritabanı ile Microsoft Entra Id erişimini yapılandırma ve Microsoft Entra belirteci kullanarak bağlanma adımları boyunca size yol gösterilir.

Microsoft Entra Yönetici kullanıcısını ayarlama

Yalnızca Microsoft Entra yönetici kullanıcıları, Microsoft Entra Id tabanlı kimlik doğrulaması için kullanıcı oluşturabilir/etkinleştirebilir. Yükseltilmiş kullanıcı izinlerine (ör. CREATEDB) sahip olduğundan, normal veritabanı işlemleri için Microsoft Entra yöneticisini kullanmamanızı öneririz.

Microsoft Entra yöneticisini ayarlamak için (bir kullanıcı veya grup kullanabilirsiniz), lütfen aşağıdaki adımları izleyin

  1. Azure portalında, Microsoft Entra Id için etkinleştirmek istediğiniz PostgreSQL için Azure Veritabanı örneğini seçin.
  2. Ayarlar altında Active Directory Yönetici'ı seçin:

Microsoft Entra yöneticisini ayarlama

  1. Microsoft Entra yöneticisi olmak için müşteri kiracısında geçerli bir Microsoft Entra kullanıcısı seçin.

Önemli

Yöneticiyi ayarlarken, tam yönetici izinleriyle PostgreSQL için Azure Veritabanı sunucusuna yeni bir kullanıcı eklenir. PostgreSQL için Azure Veritabanı'daki Microsoft Entra Yönetici kullanıcısı rolüne azure_ad_adminsahip olur. PostgreSQL sunucusu başına yalnızca bir Microsoft Entra yöneticisi oluşturulabilir ve başka bir yöneticinin seçilmesi, sunucu için yapılandırılan mevcut Microsoft Entra yöneticisinin üzerine yazılır. Birden çok yöneticiye sahip olmak için tek bir kullanıcı yerine bir Microsoft Entra grubu belirtebilirsiniz.

PostgreSQL sunucusu başına yalnızca bir Microsoft Entra yöneticisi oluşturulabilir ve başka bir yöneticinin seçilmesi, sunucu için yapılandırılan mevcut Microsoft Entra yöneticisinin üzerine yazılır. Birden çok yöneticiye sahip olmak için tek bir kullanıcı yerine bir Microsoft Entra grubu belirtebilirsiniz. Daha sonra yönetim amacıyla grup adıyla oturum açabileceğinizi unutmayın.

Microsoft Entra Id kullanarak PostgreSQL için Azure Veritabanı Bağlan

Aşağıdaki üst düzey diyagram, PostgreSQL için Azure Veritabanı ile Microsoft Entra kimlik doğrulamasını kullanma iş akışını özetler:

kimlik doğrulama akışı

Microsoft Entra tümleştirmesini, Microsoft Entra kullanmayan ve yalnızca PostgreSQL'e bağlanırken kullanıcı adı ve parola belirtmeyi destekleyen psql gibi yaygın PostgreSQL araçlarıyla çalışacak şekilde tasarladık. Microsoft Entra belirtecini yukarıdaki resimde gösterildiği gibi parola olarak geçiririz.

Şu anda aşağıdaki istemcileri test ettik:

  • psql komut satırı (belirteci geçirmek için PGPASSWORD değişkenini kullanın, daha fazla bilgi için 3. adıma bakın)
  • Azure Data Studio (PostgreSQL uzantısını kullanarak)
  • Diğer libpq tabanlı istemciler (örn. ortak uygulama çerçeveleri ve ORM'ler)
  • Pg Yönetici (Sunucu oluşturma sırasında şimdi bağlan seçeneğinin işaretini kaldırın. Daha fazla bilgi için 4. adıma bakın)

Aşağıda açıklanan Microsoft Entra Id ile bir kullanıcının/uygulamanın kimlik doğrulaması yapması gereken adımlar şunlardır:

Önkoşullar

Azure Cloud Shell'de, bir Azure VM'sinde veya yerel makinenizde takip edebilirsiniz. Azure CLI'nın yüklü olduğundan emin olun.

Microsoft Entra Id ile tek bir kullanıcı olarak kimlik doğrulaması

1. Adım: Kullanıcının Azure aboneliğinde oturum açma

Azure CLI aracını 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.

2. Adım: Microsoft Entra erişim belirtecini alma

PostgreSQL için Azure Veritabanı erişmek üzere 1. adımdaki Microsoft Entra kimliği doğrulanmış kullanıcı için bir erişim belirteci almak için Azure CLI aracını çağırın.

Örnek (Genel Bulut için):

az account get-access-token --resource https://server-name.database.windows.net

Yukarıdaki kaynak değeri tam olarak gösterildiği gibi belirtilmelidir. Diğer bulutlar için kaynak değeri şu şekilde aranabilir:

az cloud show

Azure CLI sürüm 2.0.71 ve üzeri için komut, tüm bulutlar için aşağıdaki daha uygun sürümde belirtilebilir:

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ç, kimliği doğrulanmış kullanıcı hakkındaki tüm bilgileri kodlayan ve PostgreSQL için Azure Veritabanı hizmetini hedefleyen bir Temel 64 dizesidir.

3. Adım: İstemci psql ile oturum açmak için parola olarak belirteci kullanma

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

Komut satırı istemcisi kullanılırkenpsql, erişim belirteci doğrudan kabul edilebilen parola uzunluğunu psql aştığından erişim belirtecinin ortam değişkeni üzerinden PGPASSWORD geçirilmesi gerekir:

Windows Örneği:

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

Linux/macOS Örneği:

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

Artık normalde yaptığınız gibi PostgreSQL için Azure Veritabanı ile bağlantı başlatabilirsiniz:

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

4. Adım: Pg ile oturum açmak için parola olarak belirteci kullanın Yönetici

pg ile Microsoft Entra belirtecini kullanarak bağlanmak için Yönetici sonraki adımları izlemeniz gerekir:

  1. Sunucu oluşturma sırasında Şimdi bağlan seçeneğinin işaretini kaldırın.
  2. Bağlantı sekmesine sunucu ayrıntılarınızı girin ve kaydedin.
  3. Tarayıcı menüsünden PostgreSQL için Azure Veritabanı sunucusuna bağlan'ı seçin
  4. İstendiğinde AD belirteci parolasını girin.

Bağlanırken dikkat edilmesi gereken önemli noktalar:

  • user@tenant.onmicrosoft.com Microsoft Entra kullanıcısının adıdır
  • Microsoft Entra kullanıcı ve grup adları büyük/küçük harfe duyarlı olduğundan, Azure kullanıcısının tam olarak yazıldığını kullandığınızdan emin olun.
  • Ad boşluk içeriyorsa, \ her boşluktan önce kullanarak bu boşluktan kaçın.
  • Erişim belirteci geçerliliği 5 dakika ile 60 dakika arasında bir yerdedir. PostgreSQL için Azure Veritabanı oturum açma işlemini başlatmadan hemen önce erişim belirtecini almanızı öneririz.

Artık Microsoft Entra kimlik doğrulaması kullanılarak PostgreSQL için Azure Veritabanı sunucunuzda kimliğiniz doğrulanır.

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

1. Adım: PostgreSQL için Azure Veritabanı'de Microsoft Entra grupları oluşturma

Bir Microsoft Entra grubunu veritabanınıza erişim için etkinleştirmek için kullanıcılarla aynı mekanizmayı kullanın, bunun yerine grup adını belirtin:

Örnek:

CREATE USER <new_user> IN ROLE azure_ad_user;

Oturum açarken, grubun üyeleri kişisel erişim belirteçlerini kullanır, ancak kullanıcı adı olarak belirtilen grup adıyla oturum açar.

2. Adım: Kullanıcının Azure Aboneliğinde oturum açın

Azure CLI aracını 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 üyesi olması gerekir.

az login

3. Adım: Microsoft Entra erişim belirtecini alma

PostgreSQL için Azure Veritabanı erişmek üzere 2. adımdaki Microsoft Entra kimliği doğrulanmış kullanıcı için bir erişim belirteci almak için Azure CLI aracını çağırın.

Örnek (Genel Bulut için):

az account get-access-token --resource https://server-name.database.windows.net

Yukarıdaki kaynak değeri tam olarak gösterildiği gibi belirtilmelidir. Diğer bulutlar için kaynak değeri şu şekilde aranabilir:

az cloud show

Azure CLI sürüm 2.0.71 ve üzeri için komut, tüm bulutlar için aşağıdaki daha uygun sürümde belirtilebilir:

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"
}

4. Adım: Psql veya Pg ile oturum açmak için parola olarak belirteci kullanın Yönetici (kullanıcı bağlantısı için yukarıdaki adımlara bakın)

Grup üyesi olarak bağlanırken dikkat edilmesi gereken önemli noktalar:

  • groupname@mydb, bağlanmaya çalıştığınız Microsoft Entra grubunun adıdır
  • Sunucu adını her zaman Microsoft Entra kullanıcı/grup adının sonuna ekleyin (ör. @mydb)
  • Microsoft Entra grup adı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
  • Grup olarak bağlanırken, grup üyesinin diğer adını değil yalnızca grup adını (örneğin GroupName@mydb) kullanın.
  • Ad boşluk içeriyorsa kaçış için her boşluktan önce \ kullanın.
  • Erişim belirteci geçerliliği 5 dakika ile 60 dakika arasında bir yerdedir. PostgreSQL için Azure Veritabanı oturum açma işlemini başlatmadan hemen önce erişim belirtecini almanızı öneririz.

Artık Microsoft Entra kimlik doğrulamasını kullanarak PostgreSQL sunucunuzda kimliğiniz doğrulanır.

PostgreSQL için Azure Veritabanı'da Microsoft Entra kullanıcıları oluşturma

PostgreSQL için Azure Veritabanı veritabanınıza bir Microsoft Entra kullanıcısı eklemek için, bağlandıktan sonra aşağıdaki adımları gerçekleştirin (bağlanmayla ilgili sonraki bölüme bakın):

  1. İlk olarak Microsoft Entra kullanıcısının <user>@yourtenant.onmicrosoft.com Microsoft Entra kiracısında geçerli bir kullanıcı olduğundan emin olun.
  2. PostgreSQL için Azure Veritabanı örneğinizde Microsoft Entra Yönetici kullanıcısı olarak oturum açın.
  3. PostgreSQL için Azure Veritabanı'de rol <user>@yourtenant.onmicrosoft.com oluşturun.
  4. Rol azure_ad_user üyesi olun <user>@yourtenant.onmicrosoft.com . Bu yalnızca Microsoft Entra kullanıcılarına verilmelidir.

Örnek:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Not

Microsoft Entra Id aracılığıyla kullanıcının kimliğini doğrulamak, kullanıcıya PostgreSQL için Azure Veritabanı veritabanındaki nesnelere erişim izni vermez. Kullanıcıya gerekli izinleri el ile vermelisiniz.

Belirteç Doğrulama

PostgreSQL için Azure Veritabanı'deki Microsoft Entra kimlik doğrulaması, kullanıcının PostgreSQL sunucusunda var olmasını sağlar ve belirtecin içeriğini doğrulayarak belirtecin geçerliliğini denetler. Aşağıdaki belirteç doğrulama adımları gerçekleştirilir:

  • Belirteç Microsoft Entra Kimliği tarafından imzalanmış ve üzerinde oynanmamış
  • Belirteç, sunucuyla ilişkilendirilmiş kiracı için Microsoft Entra Id tarafından verildi
  • Belirtecin süresi dolmadı
  • Belirteç PostgreSQL için Azure Veritabanı kaynağı içindir (başka bir Azure kaynağı için değil)

Mevcut PostgreSQL kullanıcılarını Microsoft Entra ID tabanlı kimlik doğrulamasına geçirme

Mevcut kullanıcılar için Microsoft Entra kimlik doğrulamasını etkinleştirebilirsiniz. Dikkate alınması gereken iki durum vardır:

Olay 1: PostgreSQL kullanıcı adı Microsoft Entra kullanıcı asıl adıyla eşleşir

Mevcut kullanıcılarınızın Microsoft Entra kullanıcı adlarına zaten uyması olası olmayan durumlarda, microsoft Entra kimlik doğrulaması için etkinleştirmek üzere rolü onlara vekleyebilirsiniz azure_ad_user :

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

Artık daha önce yapılandırılmış PostgreSQL kullanıcı parolalarını kullanmak yerine Microsoft Entra kimlik bilgileriyle oturum açabilecekler.

Olay 2: PostgreSQL kullanıcı adı, Microsoft Entra kullanıcı asıl adından farklıdır

PostgreSQL kullanıcısı Microsoft Entra Kimliği'nde yoksa veya farklı bir kullanıcı adına sahipse, bu PostgreSQL kullanıcısı olarak kimlik doğrulaması yapmak için Microsoft Entra gruplarını kullanabilirsiniz. PostgreSQL kullanıcısıyla eşleşen bir ada sahip bir Microsoft Entra grubu oluşturup mevcut PostgreSQL kullanıcısına rol azure_ad_user vererek mevcut PostgreSQL için Azure Veritabanı kullanıcılarını Microsoft Entra Id'ye geçirebilirsiniz:

GRANT azure_ad_user TO <new_user>;

Bu, Microsoft Entra Kimliğinizde bir "DBReadUser" grubu oluşturduğunuzu varsayar. Bu gruba ait kullanıcılar artık veritabanında bu kullanıcı olarak oturum açabilecek.

Sonraki adımlar