Autentikasi terhadap sumber daya Azure dengan server berkemampuan Azure Arc

Aplikasi atau proses yang berjalan langsung di server berkemampuan Azure Arc dapat menggunakan identitas terkelola untuk mengakses sumber daya Azure lainnya yang mendukung autentikasi berbasis ID Microsoft Entra. Aplikasi dapat memperoleh token akses yang mewakili identitasnya, yang ditetapkan sistem untuk server yang didukung Azure Arc, dan menggunakannya sebagai token 'pembawa' untuk melakukan autentikasi sendiri ke layanan lain.

Lihat dokumentasi ringkasan identitas terkelola untuk mendapatkan deskripsi mendetail tentang identitas terkelola dan memahami perbedaan antara identitas yang ditetapkan sistem dan identitas yang ditetapkan pengguna.

Dalam artikel ini, kami menunjukkan kepada Anda bagaimana server dapat menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses Key VaultiAzure. Berfungsi sebagai bootstrap, Key Vault memungkinkan aplikasi klien Anda untuk kemudian menggunakan rahasia untuk mengakses sumber daya yang tidak diamankan oleh ID Microsoft Entra. Misalnya, sertifikat TLS/SSL yang digunakan oleh server web IIS Anda dapat disimpan di Azure Key Vault, dan dengan aman menggunakan sertifikat ke server Windows atau Linux di luar Azure.

Ikhtisar keamanan

Saat onboarding server Anda ke server yang diaktifkan Azure Arc, beberapa tindakan dilakukan untuk mengonfigurasi menggunakan identitas terkelola, mirip dengan apa yang dilakukan untuk VM Azure:

  • Azure Resource Manager menerima permintaan untuk mengaktifkan identitas terkelola yang ditetapkan sistem di server yang didukung Azure Arc.

  • Azure Resource Manager membuat perwakilan layanan di ID Microsoft Entra untuk identitas server. Perwakilan layanan dibuat di penyewa Microsoft Entra yang dipercaya oleh langganan.

  • Azure Resource Manager mengonfigurasi identitas pada server dengan memperbarui titik akhir identitas Azure Instance Metadata Service Azure (IMDS) untuk Windows atau Linux dengan ID Klien perwakilan layanan dan sertifikat. Titik akhir adalah titik akhir REST yang dapat diakses hanya dari dalam server menggunakan alamat IP yang terkenal dan tidak dapat diubah. Layanan ini menyediakan subset informasi metadata tentang server yang didukung Azure Arc untuk membantu mengelola dan mengonfigurasinya.

Lingkungan server yang didukung identitas terkelola akan dikonfigurasi dengan variabel berikut di server Windows yang didukung Azure Arc:

  • IMDS_ENDPOINT: Alamat IP titik akhir IMDS http://localhost:40342 untuk server yang didukung Azure Arc.

  • IDENTITY_ENDPOINT: titik akhir localhost yang sesuai dengan identitas terkelola layananhttp://localhost:40342/metadata/identity/oauth2/token.

Kode Anda yang berjalan di server dapat meminta token dari titik akhir layanan Metadata Instans Azure, yang hanya dapat diakses dari dalam server.

Variabel lingkungan sistem IDENTITY_ENDPOINT digunakan untuk menemukan titik akhir identitas berdasarkan aplikasi. Aplikasi harus mencoba mengambil nilai IDENTITY_ENDPOINTdan IMDS_ENDPOINTdan menggunakannya. Aplikasi dengan tingkat akses apa pun diizinkan untuk membuat permintaan ke titik akhir. Respons metadata ditangani seperti biasa dan diberikan ke proses apa pun pada mesin. Namun, ketika permintaan dibuat yang akan mengekspos token, kami mengharuskan klien untuk memberikan rahasia untuk membuktikan bahwa mereka hanya dapat mengakses data yang hanya tersedia untuk pengguna dengan hak istimewa yang lebih tinggi.

Prasyarat

  • Pemahaman tentang Identitas terkelola.

  • Di Windows, pemanggil harus menjadi anggota grup Administrator lokal atau grup Aplikasi Ekstensi Agen Hibrid.

  • Di Linux, Anda harus menjadi anggota grup himds.

  • Server yang terhubung dan terdaftar di server yang didukung Azure Arc.

  • Anda adalah anggota grup Pemilik dalam grup langganan atau sumber daya, untuk melakukan langkah-langkah pembuatan sumber daya dan manajemen peran yang diperlukan.

  • Azure Key Vault untuk menyimpan dan mengambil info masuk Anda, dan menetapkan akses identitas Azure Arc ke KeyVault.

Memperoleh token akses menggunakan REST API

Metode untuk mendapatkan dan menggunakan identitas terkelola yang ditetapkan sistem untuk mengautentikasi dengan sumber daya Azure mirip dengan cara kerjanya dengan Azure VM.

Untuk server Windows yang didukung Azure Arc, dengan PowerShell, Anda meminta permintaan web untuk mendapatkan token dari host lokal di port tertentu. Tentukan permintaan menggunakan alamat IP atau variabel lingkungan IDENTITY_ENDPOINT.

$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
    Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
    $wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
    if ($wwwAuthHeader -match "Basic realm=.+")
    {
        $secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
    }
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
    $token = (ConvertFrom-Json -InputObject $response.Content).access_token
    Write-Host "Access token: " $token
}

Respons berikut adalah contoh yang dikembalikan:

A successful retrieval of the access token using PowerShell.

Untuk server Linux yang didukung Azure Arc, dengan Bash, Anda meminta permintaan web untuk mendapatkan token dari host lokal di port tertentu. Tentukan permintaan berikut menggunakan alamat IP atau variabel lingkungan IDENTITY_ENDPOINT. Untuk menyelesaikan langkah ini, Anda memerlukan klien SSH.

CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
    echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
    curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi

Respons berikut adalah contoh yang dikembalikan:

A successful retrieval of the access token using Bash.

Respons mencakup token akses yang Anda butuhkan untuk mengakses sumber daya di Azure. Untuk menyelesaikan konfigurasi untuk mengautentikasi ke Azure Key Vault, lihat Mengakses Key Vault dengan Windows atauMengakses Key Vault dengan Linux.

Langkah berikutnya