Öğretici: Azure SQL hizmetine erişmek için Windows VM sistem tarafından atanan yönetilen kimlik kullanma

Bu öğreticide, Azure SQL Veritabanı erişmek üzere Windows sanal makinesi (VM) için sistem tarafından atanan kimliğin nasıl kullanılacağı gösterilmektedir. Yönetilen Hizmet Kimlikleri Azure tarafından otomatik olarak yönetilir ve kodunuza kimlik bilgileri eklemenize gerek kalmadan Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmanıza olanak tanır. Şunları yapmayı öğreneceksiniz:

  • VM'nize Azure SQL Veritabanı erişimi verme
  • Microsoft Entra kimlik doğrulamasını etkinleştirme
  • VM’nin sistem tarafından atanan kimliğini temsil eden veritabanında içerilen kullanıcı oluşturma
  • VM kimliğini kullanarak erişim belirteci alma ve Azure SQL Veritabanı sorgulamak için bu belirteci kullanma

Önkoşullar

  • Azure kaynakları için yönetilen kimlikler özelliği hakkında bilgi sahibi değilseniz bu genel bakışı inceleyin.
  • Azure hesabınız yoksa, devam etmeden önce ücretsiz bir hesaba kaydolun.
  • Gerekli kaynak oluşturma ve rol yönetimini gerçekleştirmek için hesabınız uygun kapsamda (aboneliğiniz veya kaynak grubunuz) "Sahip" izinlerini gerektiriyor. Rol atama konusunda yardıma ihtiyacınız varsa bkz . Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.

Etkinleştirme

Sistem tarafından atanan yönetilen kimliği etkinleştirmek tek tıklamayla yapılan bir deneyimdir. Vm oluşturulurken veya mevcut bir VM'nin özelliklerinde etkinleştirebilirsiniz.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

Sistem tarafından atanan yönetilen kimliği yeni bir VM'de etkinleştirmek için:

  1. Azure portalda oturum açma

  2. Sistem tarafından atanan kimliğin etkin olduğu bir sanal makine oluşturma

Erişim verme

VM'nize Azure SQL Veritabanı'daki bir veritabanına erişim vermek için mevcut bir mantıksal SQL sunucusunu kullanabilir veya yeni bir tane oluşturabilirsiniz. Azure portalını kullanarak yeni sunucu ve veritabanı oluşturmak için bu Azure SQL hızlı başlangıcını izleyin. Azure SQL belgeleri arasında Azure CLI'nin ve Azure PowerShell'in kullanıldığı hızlı başlangıçlar da vardır.

VM'nize veritabanı erişimi verme işleminin iki adımı vardır:

  1. Sunucu için Microsoft Entra kimlik doğrulamasını etkinleştirin.
  2. VM’nin sistem tarafından atanan kimliğini temsil eden veritabanında bir içerilen kullanıcı oluşturun.

Microsoft Entra kimlik doğrulamasını etkinleştirme

Microsoft Entra kimlik doğrulamasını yapılandırmak için:

  1. Azure portalında, sol gezintiden SQL sunucuları'nı seçin.
  2. Microsoft Entra kimlik doğrulaması için etkinleştirilecek SQL sunucusunu seçin.
  3. Dikey pencerenin Ayarlar bölümünde Active Directory yöneticisi'ne tıklayın.
  4. Komut çubuğunda Yönetici ayarla'ya tıklayın.
  5. Sunucunun yöneticisi olacak bir Microsoft Entra kullanıcı hesabı seçin ve Seç'e tıklayın .
  6. Komut çubuğunda Kaydet'e tıklayın.

Kapsanan kullanıcı oluşturma

Bu bölümde, vm'nin sistem tarafından atanan kimliğini temsil eden veritabanında kapsanan bir kullanıcının nasıl oluşturulacağı gösterilmektedir. Bu adım için Microsoft SQL Server Management Studio (SSMS) gerekir. Başlamadan önce, Microsoft Entra tümleştirmesi hakkında arka plan için aşağıdaki makaleleri gözden geçirmek de yararlı olabilir:

SQL DB için benzersiz Microsoft Entra ID görünen adları gerekir. Bununla, kullanıcılar, gruplar ve Hizmet Sorumluları (uygulamalar) gibi Microsoft Entra hesapları ve yönetilen kimlik için etkinleştirilen VM adları, görünen adlarıyla ilgili olarak Microsoft Entra Kimliği'nde benzersiz olarak tanımlanmalıdır. SQL DB, bu tür kullanıcıların T-SQL oluşturması sırasında Microsoft Entra Id görünen adını denetler ve benzersiz değilse, komut belirli bir hesap için benzersiz bir Microsoft Entra ID görünen adı sağlama isteğinde başarısız olur.

Kapsanan kullanıcı oluşturmak için:

  1. SQL Server Management Studio'yu başlatın.

  2. Sunucuya Bağlan iletişim kutusunda Sunucu adı alanına sunucu adınızı girin.

  3. Kimlik Doğrulaması alanında, Active Directory - MFA ile Evrensel desteği'ni seçin.

  4. Kullanıcı adı alanına, sunucu yöneticisi olarak ayarladığınız Microsoft Entra hesabının adını girin, örneğin,helen@woodgroveonline.com

  5. Seçenekler'e tıklayın.

  6. Veritabanına bağlan alanında, yapılandırmak istediğiniz sistem dışı veritabanının adını girin.

  7. Bağlan'a tıklayın. Oturum açma işlemini tamamlayın.

  8. Nesne Gezgini'nde Veritabanları klasörünü genişletin.

  9. Kullanıcı veritabanına sağ tıklayın ve Yeni sorgu'yu seçin.

  10. Sorgu penceresinde, aşağıdaki satırı girin ve araç çubuğunda Yürüt'e tıklayın:

    Dekont

    Aşağıdaki komutta yer alan VMName, önkoşullar bölümünde sistem tarafından atanan kimliği etkinleştirdiğiniz VM’nin adıdır.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Komutun başarıyla tamamlanması ve VM’nin sistem tarafından atanan kimliği için içerilen kullanıcıyı oluşturması gerekir.

  11. Sorgu penceresini temizleyin, aşağıdaki satırı girin ve araç çubuğunda Yürüt'e tıklayın:

    Dekont

    VMName aşağıdaki komutta, önkoşullar bölümünde sistem tarafından atanan kimliği etkinleştirdiğiniz VM'nin adıdır.

    "Sorumlunun VMName görünen adı yinelenen" hatasıyla karşılaşırsanız, CREATE USER deyimini WITH OBJECT_ID='xxx' ile ekleyin.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Komutun başarıyla tamamlanması ve içerilen kullanıcıya veritabanının tamamını okuma erişimi vermesi gerekir.

VM'de çalışan kod artık sistem tarafından atanan yönetilen kimliğini kullanarak bir belirteç alabilir ve sunucuda kimlik doğrulaması yapmak için belirteci kullanabilir.

Verilere erişme

Bu bölümde, VM'nin sistem tarafından atanan yönetilen kimliğini kullanarak erişim belirtecinin nasıl alındığı ve Azure SQL'i çağırmak için nasıl kullanılacağı gösterilmektedir. Azure SQL, 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. Bu yöntem, bağlantı dizesi kimlik bilgileri sağlamayı gerektirmez.

Active Directory Yönetilen Kimlik kimlik doğrulamasını kullanarak SQL bağlantısı açmaya ilişkin bir .NET kod örneği aşağıda verilmişti. Vm'nin sistem tarafından atanan yönetilen kimliğin uç noktasına erişebilmek için kodun VM'de çalıştırılması gerekir. Bu yöntemi kullanmak için .NET Framework 4.6.2 veya üzeri ya da .NET Core 3.1 veya üzeri gereklidir. AZURE-SQL-SERVERNAME ve DATABASE değerlerini uygun şekilde değiştirin ve Microsoft.Data.SqlClient kitaplığına bir NuGet başvurusu ekleyin.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Alternatif olarak, VM'de uygulama yazmak ve dağıtmak zorunda kalmadan uçtan uca kurulumu test etmenin hızlı bir yolu PowerShell kullanmaktır.

  1. Portalda, Sanal Makineler'e ve Windows sanal makinenize gidin, ardından Genel Bakış'ta Bağlan'a tıklayın.

  2. Windows VM'yi oluştururken eklediğiniz VM yöneticisi kimlik bilgilerinizi girin.

  3. Artık sanal makineyle Uzak Masaüstü Bağlantısı'nı oluşturduğunuza göre, uzak oturumda PowerShell'i açın.

  4. PowerShell’in Invoke-WebRequest komutunu kullanarak, yerel yönetilen kimliğin uç noktasına Azure SQL için erişim belirteci alma isteğinde bulunun.

        $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Yanıtı JSON nesnesinden PowerShell nesnesine dönüştürün.

    $content = $response.Content | ConvertFrom-Json
    

    Yanıttan erişim belirtecini ayıklayın.

    $AccessToken = $content.access_token
    
  5. Sunucuya bir bağlantı açın. AZURE-SQL-SERVERNAME ve DATABASE değerlerini değiştirmeyi unutmayın.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Ardından, bir sorgu oluşturun ve sunucuya gönderin. TABLE değerini değiştirmeyi unutmayın.

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "SELECT * from <TABLE>;"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    

Sorgunun sonuçlarını görüntülemek için $DataSet.Tables[0] değerini inceleyin.

Devre Dışı Bırak

VM'nizde sistem tarafından atanan kimliği devre dışı bırakmak için sistem tarafından atanan kimliğin durumunu Kapalı olarak ayarlayın.

Screenshot shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

Sonraki adımlar

Bu öğreticide, Azure SQL Veritabanı erişmek için sistem tarafından atanan yönetilen kimliği kullanmayı öğrendiniz. Azure SQL Veritabanı hakkında daha fazla bilgi edinmek için bkz: