Tutorial: Gunakan identitas terkelola yang ditetapkan sistem komputer virtual Windows untuk mengakses Microsoft Azure SQL

Tutorial ini memperlihatkan cara menggunakan identitas yang ditetapkan sistem untuk komputer virtual (VM) Windows untuk mengakses Microsoft Azure SQL Database. Identitas Layanan Terkelola dikelola secara otomatis oleh Azure dan memungkinkan Anda mengautentikasi ke layanan yang mendukung autentikasi Microsoft Entra, tanpa perlu menyisipkan kredensial ke dalam kode Anda. Anda akan mempelajari cara untuk:

  • Memberikan akses komputer virtual Anda ke Microsoft Azure SQL Database
  • Mengaktifkan autentikasi Microsoft Entra
  • Membuat pengguna yang terkandung dalam database yang mewakili identitas yang ditetapkan sistem komputer virtual
  • Mendapatkan token akses menggunakan identitas komputer virtual dan menggunakannya untuk meminta Microsoft Azure SQL Database

Prasyarat

Aktifkan

Mengaktifkan identitas terkelola yang ditetapkan sistem adalah pengalaman sekali klik. Anda dapat mengaktifkannya selama pembuatan VM atau di properti VM yang sudah ada.

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

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada VM baru:

  1. Masuk ke portal Azure

  2. Membuat mesin virtual dengan identitas yang ditetapkan sistem yang diaktifkan

Memberikan akses

Untuk memberikan akses komputer virtual Anda ke database di Microsoft Azure SQL Database, Anda bisa menggunakan server SQL logis yang sudah ada atau membuat yang baru. Untuk membuat server dan database baru menggunakan portal Microsoft Azure, ikuti mulai cepat Microsoft Azure SQL ini. Ada juga mulai cepat yang menggunakan Microsoft Azure CLI dan Microsoft Azure PowerShell di dokumentasi Microsoft Azure SQL.

Ada dua langkah untuk memberikan akses komputer virtual Anda ke database:

  1. Aktifkan autentikasi Microsoft Entra untuk server.
  2. Buat pengguna yang terkandung dalam database yang mewakili identitas yang ditetapkan sistem komputer virtual.

Mengaktifkan autentikasi Microsoft Entra

Untuk mengonfigurasi autentikasi Microsoft Entra:

  1. Di portal Microsoft Azure, pilih server SQL dari navigasi sebelah kiri.
  2. Pilih server SQL yang akan diaktifkan untuk autentikasi Microsoft Entra.
  3. Di bagian Pengaturan bilah, klik admin Direktori Aktif.
  4. Di bilah perintah, klik Atur admin.
  5. Pilih akun pengguna Microsoft Entra untuk dijadikan administrator server, dan klik Pilih.
  6. Di bilah perintah, klik Simpan.

Membuat pengguna yang terkandung

Bagian ini memperlihatkan cara membuat pengguna yang terkandung dalam database yang mewakili identitas yang ditetapkan sistem komputer virtual. Untuk langkah ini, Anda memerlukan Microsoft SQL Server Management Studio (SSMS). Sebelum memulai, mungkin juga berguna untuk meninjau artikel berikut untuk latar belakang integrasi Microsoft Entra:

SQL DB memerlukan nama tampilan ID Microsoft Entra yang unik. Dengan ini, akun Microsoft Entra seperti pengguna, grup, dan Perwakilan Layanan (aplikasi), dan nama VM yang diaktifkan untuk identitas terkelola harus ditentukan secara unik dalam ID Microsoft Entra mengenai nama tampilan mereka. SQL DB memeriksa nama tampilan ID Microsoft Entra selama pembuatan T-SQL pengguna tersebut dan jika tidak unik, perintah gagal meminta untuk memberikan nama tampilan ID Microsoft Entra yang unik untuk akun tertentu.

Untuk membuat pengguna yang terkandung:

  1. Mulailah SQL Server Management Studio.

  2. Dalam dialog Sambungkan ke Server, Masukkan nama server Anda di bidang Nama server.

  3. Di bidang Autentikasi, pilih Direktori Aktif - Universal dengan dukungan MFA.

  4. Di bidang Nama pengguna, masukkan nama akun Microsoft Entra yang Anda tetapkan sebagai administrator server, misalnya,helen@woodgroveonline.com

  5. Klik Opsi.

  6. Di bidang Sambungkan ke database, masukkan nama database non-sistem yang ingin Anda konfigurasi.

  7. Klik Sambungkan. Selesaikan proses masuk.

  8. Di Object Explorer, perluas folder Database.

  9. Klik kanan pada database pengguna dan pilih Kueri baru.

  10. Di jendela kueri, masukkan baris berikut, dan klik Jalankan di bar alat:

    Catatan

    VMName dalam perintah berikut adalah nama komputer virtual tempat Anda mengaktifkan identitas yang ditetapkan sistem di bagian prasyarat.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Perintah harus berhasil diselesaikan, membuat pengguna yang terkandung untuk identitas yang ditetapkan sistem komputer virtual.

  11. Kosongkan jendela kueri, masukkan baris berikut, dan klik Jalankan di bar alat:

    Catatan

    VMName dalam perintah berikut adalah nama VM tempat Anda mengaktifkan identitas yang ditetapkan sistem di bagian prasyarat.

    Jika Anda mengalami kesalahan "Prinsipal VMName memiliki nama tampilan duplikat", tambahkan pernyataan CREATE USER dengan WITH OBJECT_ID='xxx'.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Perintah harus berhasil diselesaikan, memberikan pengguna yang terkandung kemampuan untuk membaca seluruh database.

Kode yang berjalan di komputer virtual sekarang bisa mendapatkan token menggunakan identitas terkelola yang ditetapkan sistem dan menggunakan token untuk mengautentikasi ke server.

Mengakses data

Bagian ini memperlihatkan cara mendapatkan token akses menggunakan identitas terkelola yang ditetapkan sistem komputer virtual dan menggunakannya untuk memanggil Microsoft Azure SQL. Azure SQL secara asli mendukung autentikasi Microsoft Entra, sehingga dapat langsung menerima token akses yang diperoleh menggunakan identitas terkelola untuk sumber daya Azure. Metode ini tidak memerlukan penyediaan kredensial pada string koneksi.

Berikut adalah contoh kode .NET untuk membuka koneksi ke SQL menggunakan autentikasi Identitas Terkelola Direktori Aktif. Kode harus berjalan pada komputer virtual untuk dapat mengakses titik akhir identitas terkelola yang ditetapkan sistem komputer virtual. .NET Framework 4.6.2 atau lebih tinggi atau .NET Core 3.1 atau yang lebih tinggi diperlukan untuk menggunakan metode ini. Ganti nilai AZURE-SQL-SERVERNAME dan DATABASE yang sesuai dan tambahkan referensi NuGet ke pustaka Microsoft.Data.SqlClient.

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();

Catatan

Anda dapat menggunakan identitas terkelola saat bekerja dengan opsi pemrograman lain dengan menggunakan SDK.

Atau, cara cepat untuk menguji penyiapan end to end tanpa harus menulis dan menyebarkan aplikasi di mesin virtual menggunakan PowerShell.

  1. Di portal, navigasikan ke Komputer Virtual dan buka komputer virtual Windows Anda dan di Gambaran Umum, klik Sambungkan.

  2. Masukkan kredensial admin VM yang Anda tambahkan saat membuat VM Windows.

  3. Setelah membuat Koneksi Desktop Jarak Jauh dengan komputer virtual, buka PowerShell di sesi jarak jauh.

  4. Menggunakan Invoke-WebRequest PowerShell, membuat permintaan ke titik akhir identitas terkelola lokal untuk mendapatkan token akses untuk Microsoft Azure SQL.

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

    Mengonversi respons dari objek JSON menjadi objek PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Mengekstrak token akses dari respons.

    $AccessToken = $content.access_token
    
  5. Buka sambungan ke server. Ingat agar mengganti nilai untuk AZURE-SQL-SERVERNAME dan DATABASE.

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

    Selanjutnya, buat dan kirimkan permintaan ke server. Ingatlah untuk mengganti nilai untuk TABLE.

    $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)
    

Periksa nilai $DataSet.Tables[0] untuk menampilkan hasil kueri.

Nonaktifkan

Untuk menonaktifkan identitas yang ditetapkan sistem pada komputer virtual Anda, tetapkan status identitas yang ditetapkan sistem ke Nonaktif.

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

Langkah berikutnya

Dalam tutorial ini, Anda mempelajari cara menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses Microsoft Azure SQL Database. Untuk mempelajari Azure SQL Database selengkapnya, lihat: