Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PostgreSQL için Azure Veritabanı esnek sunucu örneğinde kimlik doğrulaması yapmak için hem sistem tarafından atanan hem de kullanıcı tarafından atanan yönetilen kimlikleri kullanabilirsiniz. Bu makalede, PostgreSQL için Azure Veritabanı esnek sunucu örneğine erişmek üzere Azure Sanal Makinesi (VM) için sistem tarafından atanan yönetilen kimliğin nasıl kullanılacağı gösterilmektedir. Yönetilen Kimlikler Azure tarafından otomatik olarak yönetilir ve kodunuza kimlik bilgileri eklemeye gerek kalmadan Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmanıza olanak tanır.
Şunları yapmayı öğreneceksiniz:
- Vm'nize PostgreSQL için Azure Veritabanı esnek sunucu örneğine erişim izni verin.
- Veritabanında VM'nin sistem tarafından atanan kimliğini temsil eden bir kullanıcı oluşturun.
- VM kimliğini kullanarak bir erişim belirteci alın ve bunu kullanarak PostgreSQL için Azure Veritabanı esnek sunucu örneğini sorgulayın.
- C# örnek uygulamasında belirteç alma işlemini uygulayın.
Önkoşullar
- Azure kaynakları için yönetilen kimlikler özelliğini bilmiyorsanız bu genel bakışa bakın. Azure hesabınız yoksa devam etmeden önce ücretsiz bir hesaba kaydolun .
- Gerekli kaynak oluşturma ve rol yönetimini yapmak için hesabınızın uygun kapsamda (aboneliğiniz veya kaynak grubunuz) "Sahip" izinlerine sahip olması gerekir. Rol ataması konusunda yardıma ihtiyacınız varsa bkz. Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.
- Yönetilen Kimlik kullanarak veritabanınıza erişmek için kullanmak istediğiniz bir Azure VM'sine (örneğin, Ubuntu Linux çalıştıran) ihtiyacınız var
- Microsoft Entra kimlik doğrulaması yapılandırılmış postgreSQL için Azure Veritabanı esnek sunucu örneğine ihtiyacınız var
- C# örneğini izlemek için önce C# ile bağlanma kılavuzunu tamamlayın
VM'niz için sistem tarafından atanan yönetilen kimlik oluşturma
az vm identity assign komutunu kullanarak identity assign mevcut bir VM'ye sistem tarafından atanan kimliği etkinleştirir:
az vm identity assign -g myResourceGroup -n myVm
Sistem tarafından atanan yönetilen kimliğin uygulama kimliğini alın ve sonraki birkaç adımda ihtiyacınız olacak:
# Get the client ID (application ID) of the system-assigned managed identity
az ad sp list --display-name vm-name --query [*].appId --out tsv
Yönetilen Kimliğiniz için Azure PostgreSQL Veritabanı Kullanıcısı Oluşturma
Şimdi PostgreSQL için Azure Veritabanı esnek sunucu veritabanınıza Microsoft Entra yönetici kullanıcısı olarak bağlanın ve aşağıdaki SQL deyimlerini çalıştırın ve yerine <identity_name> sistem tarafından atanan yönetilen kimliği oluşturduğunuz kaynakların adını yazın:
Not pgaadauth_create_principal Postgres veritabanında çalıştırılmalıdır.
select * from pgaadauth_create_principal('<identity_name>', false, false);
Başarı şöyle görünür:
pgaadauth_create_principal
-----------------------------------
Created role for "<identity_name>"
(1 row)
Microsoft Entra ID özellikli veritabanı rollerini yönetme hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı'nda Microsoft Entra rollerini yönetme.
Yönetilen kimliğin artık kimlik adı rol adı ve Microsoft Entra belirtecini parola olarak kimlik doğrulaması yaparken erişimi vardır.
Uyarı
Yönetilen kimlik geçerli değilse bir hata döndürülür: ERROR: Could not validate AAD user <ObjectId> because its name is not found in the tenant. [...].
"İşlev eşleşmiyor..." gibi bir hata görürseniz, oluşturduğunuz farklı bir veritabanına değil veritabanına bağlandığınızdan postgres emin olun.
Azure Örnek Meta Verileri hizmetinden erişim belirtecini alma
Uygulamanız artık Azure Instance Metadata hizmetinden bir erişim belirteci alabilir ve veritabanında kimlik doğrulaması için kullanabilir.
Bu belirteç alma işlemi, bir istekte HTTP bulunup http://169.254.169.254/metadata/identity/oauth2/token aşağıdaki parametreleri geçirerek gerçekleştirilir:
api-version=2018-02-01resource=https://ossrdbms-aad.database.windows.net-
client_id=CLIENT_ID(daha önce aldığınız)
Alan içeren access_token bir JSON sonucu alırsınız. Bu uzun metin değeri, veritabanına bağlanırken parola olarak kullanmanız gereken Yönetilen Kimlik erişim belirtecidir.
Test amacıyla kabuğunuzda aşağıdaki komutları çalıştırabilirsiniz.
Uyarı
, ve curlistemcisinin jq yüklü olması gerektiğini psqlunutmayın.
# Retrieve the access token
export PGPASSWORD=`curl -s 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fossrdbms-aad.database.windows.net&client_id=CLIENT_ID' -H Metadata:true | jq -r .access_token`
# Connect to the database
psql -h SERVER --user USER DBNAME
Şimdi daha önce yapılandırdığınız veritabanına bağlısınız.
Yönetilen Kimlik kullanarak bağlanma
Bu bölümde, VM'nin kullanıcı tarafından atanan yönetilen kimliğini kullanarak erişim belirtecinin nasıl alındığı ve postgreSQL için Azure Veritabanı esnek sunucu örneğini çağırmak için nasıl kullanılacağı gösterilmektedir. PostgreSQL için Azure Veritabanı, Microsoft Entra kimlik doğrulamasını yerel olarak desteklediği için Azure kaynakları için yönetilen kimlikler kullanılarak elde edilen erişim belirteçlerini doğrudan kabul edebilir. PostgreSQL için Azure Veritabanı'na bağlantı oluştururken, erişim belirtecini parola alanına geçirirsiniz.
Python'da Yönetilen Kimlik kullanarak bağlanma
Python kodu örneği için Hızlı Başlangıç: PostgreSQL için Azure Veritabanı'na bağlanmak ve verileri sorgulamak için Python kullanma bölümüne bakın
Java'da Yönetilen Kimlik kullanarak bağlanma
Java kodu örneği için Hızlı Başlangıç: PostgreSQL için Azure Veritabanı ile Java ve JDBC kullanma bölümüne bakın
C'de Yönetilen Kimlik kullanarak bağlanma#
Aşağıda, bir erişim belirteci kullanarak PostgreSQL için Azure Veritabanı esnek sunucu örneğine bağlantı açmaya yönelik bir .NET kod örneği verilmiştir. Bu kod, Microsoft Entra Kimliği'nden erişim belirteci almak için sistem tarafından atanan yönetilen kimliği kullanmak için VM'de çalıştırılmalıdır. HOST, USER (ile <identity_name>) ve DATABASEdeğerlerini değiştirin.
using Azure.Identity;
using Npgsql;
using System;
class Program
{
static void Main(string[] args)
{
try
{
// Obtain an access token using the system-assigned managed identity
var tokenCredential = new DefaultAzureCredential();
var accessToken = tokenCredential.GetToken(
new Azure.Core.TokenRequestContext(new[] { "https://ossrdbms-aad.database.windows.net/.default" })
);
// Build the connection string
string host = "your-server-name.postgres.database.azure.com"; // Replace with your flexible server's host
string database = "your-database-name"; // Replace with your database name
string user = "<identity_name>"; // Replace with your identity name (e.g., "myManagedIdentity")
var connectionString = $"Host={host};Database={database};Username={user};Password={accessToken.Token};SSL Mode=Require;Trust Server Certificate=true";
// Open a connection to the database
using var connection = new NpgsqlConnection(connectionString);
connection.Open();
Console.WriteLine("Connection successful!");
// Optional: Perform a simple query
using var command = new NpgsqlCommand("SELECT version();", connection);
using var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"PostgreSQL version: {reader.GetString(0)}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}
Aşağıdaki yer tutucuları doldurmanız gerekir:
- HOST: your-server-name.postgres.database.azure.com yerine örneğinizin ana bilgisayar adını yazın.
- KULLANICI: identity_name< yönetilen kimliğinizin adıyla değiştirin>.
-
DATABASE: veritabanınızın-adını PostgreSQL için Azure Veritabanı örneğinizin adıyla değiştirin. - Microsoft Entra Kimlik Doğrulaması: Kod, Microsoft Entra Kimliği'nden erişim belirteci getirmek için VM'nin sistem tarafından atanan yönetilen kimliğini kullanır.
Bu komut çalıştırıldığında şuna benzer bir çıkış verir:
Getting access token from Azure AD...
Opening connection using access token...
Connected!
Postgres version: PostgreSQL 11.11, compiled by Visual C++ build 1800, 64-bit