Bagikan melalui


Menetapkan peran aplikasi ke identitas terkelola menggunakan Azure CLI

Identitas terkelola untuk sumber daya Azure menyediakan layanan Azure dengan identitas di ID Microsoft Entra. Mereka bekerja tanpa membutuhkan kredensial dalam kode Anda. Layanan Azure menggunakan identitas ini untuk mengautentikasi ke layanan yang mendukung autentikasi Microsoft Entra. Peran aplikasi menyediakan bentuk kontrol akses berbasis peran dan memungkinkan layanan untuk mengimplementasikan aturan otorisasi.

Nota

Token yang diterima aplikasi Anda di-cache oleh infrastruktur yang mendasar. Ini berarti bahwa setiap perubahan pada peran identitas terkelola dapat memakan waktu yang signifikan untuk diproses. Untuk informasi selengkapnya, lihat Batasan penggunaan identitas terkelola untuk otorisasi.

Dalam artikel ini, Anda akan mempelajari cara menetapkan identitas terkelola ke peran aplikasi yang diekspos oleh aplikasi lain menggunakan Microsoft Graph PowerShell SDK atau Azure CLI.

Prasyarat

Menetapkan akses identitas terkelola ke peran aplikasi aplikasi lain menggunakan CLI

  1. Aktifkan identitas terkelola pada sumber daya Azure, seperti komputer virtual Azure.

  2. Temukan ID objek dari perwakilan layanan identitas terkelola.

    • Untuk identitas terkelola yang ditetapkan sistem, Anda dapat menemukan ID objek di portal Microsoft Azure di halaman Identitas sumber daya. Anda juga dapat menggunakan skrip berikut untuk menemukan ID objek. Anda akan memerlukan ID dari sumber daya yang Anda buat di langkah sebelumnya, yang tersedia di portal Azure pada halaman Properti sumber daya.

      resourceIdWithManagedIdentity="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}"
      
      oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]')
      echo "object id for managed identity is: $oidForMI"
      
    • Untuk identitas terkelola yang ditetapkan pengguna, Anda dapat menemukan ID objek identitas terkelola di portal Microsoft Azure di halaman Gambaran Umum sumber daya. Anda juga dapat menggunakan skrip berikut untuk menemukan ID objek. Anda memerlukan ID sumber daya identitas terkelola yang ditetapkan pengguna.

      userManagedIdentityResourceId="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}"
      
      oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]')
      echo "object id for managed identity is: $oidForMI"
      
  3. Buat pendaftaran aplikasi baru untuk mewakili layanan tempat identitas terkelola Anda mengirim permintaan.

    • Jika API atau layanan yang mengekspos pemberian peran aplikasi ke identitas terkelola sudah memiliki perwakilan layanan di penyewa Microsoft Entra Anda, lewati langkah ini.
  4. Temukan ID objek dari prinsipal layanan aplikasi. Anda dapat menemukan ini menggunakan pusat admin Microsoft Entra .

    1. Masuk ke pusat admin Microsoft Entra.

    2. Di bilah navigasi kiri, pilih Entra ID>Aplikasi Enterprise. Kemudian temukan aplikasi dan cari ID Objek.

    3. Anda juga dapat menemukan ID objek prinsipal layanan berdasarkan nama tampilannya menggunakan skrip berikut:

      appName="{name for your application}"
      serverSPOID=$(az ad sp list --filter "displayName eq '$appName'" --query '[0].id' -o tsv | tr -d '[:space:]')
      echo "object id for server service principal is: $serverSPOID"
      

      Nota

      Nama tampilan untuk aplikasi tidak unik, jadi Anda harus memverifikasi bahwa Anda mendapatkan perwakilan layanan aplikasi yang benar.

    4. Atau Anda dapat menemukan ID Objek dengan ID Aplikasi unik untuk pendaftaran aplikasi Anda:

      appID="{application id for your application}"
      serverSPOID=$(az ad sp list --filter "appId eq '$appID'" --query '[0].id' -o tsv | tr -d '[:space:]')
      echo "object id for server service principal is: $serverSPOID"
      
  5. Tambahkan peran aplikasi ke aplikasi yang Anda buat di langkah sebelumnya. Anda dapat membuat peran menggunakan portal Microsoft Azure atau menggunakan Microsoft Graph. Misalnya, Anda dapat menambahkan peran aplikasi seperti ini:

    {
        "allowedMemberTypes": [
            "Application"
        ],
        "displayName": "Read data from MyApi",
        "id": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "isEnabled": true,
        "description": "Allow the application to read data as itself.",
        "value": "MyApi.Read.All"
    }
    
  6. Tetapkan peran aplikasi ke identitas terkelola. Anda memerlukan informasi berikut untuk menetapkan peran aplikasi:

    • managedIdentityObjectId: ID objek dari perwakilan layanan identitas terkelola, yang Anda temukan di langkah 2.
    • serverServicePrincipalObjectId: ID objek dari prinsipal layanan aplikasi server, yang Anda temukan di langkah 4.
    • appRoleId: ID dari peran aplikasi yang diekspos oleh aplikasi server, yang Anda buat di langkah 5 - dalam contoh, ID peran aplikasinya adalah 00000000-0000-0000-0000-000000000000.
  7. Jalankan skrip berikut untuk menambahkan penetapan peran. Fungsionalitas ini tidak secara langsung diekspos pada Azure CLI dan bahwa perintah REST digunakan di sini sebagai gantinya:

    roleguid="00000000-0000-0000-0000-000000000000"
    az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"
    

Langkah selanjutnya