Mengonfigurasi Identitas terkelola untuk sumber daya Azure di komputer virtual Azure menggunakan panggilan REST API

Identitas terkelola untuk sumber daya Azure adalah fitur ID Microsoft Entra. Setiap layanan Azure yang mendukung identitas terkelola untuk sumber daya Azure tunduk pada garis waktu mereka masing-masing. Pastikan Anda meninjau status ketersediaan identitas terkelola untuk sumber daya dan masalah yang diketahui sebelum Anda memulai.

Identitas terkelola untuk sumber daya Azure menyediakan layanan Azure dengan identitas sistem yang dikelola secara otomatis di ID Microsoft Entra. Anda dapat menggunakan identitas ini untuk mengautentikasi tiap layanan yang mendukung autentikasi Microsoft Entra, tanpa memiliki kredensial dalam kode Anda.

Dalam artikel ini, menggunakan CURL untuk melakukan panggilan ke titik akhir REST Azure Resource Manager, Anda mempelajari cara menjalankan identitas terkelola berikut untuk operasi sumber daya Azure di komputer virtual Azure:

  • Mengaktifkan dan menonaktifkan identitas terkelola yang ditetapkan sistem di komputer virtual Azure
  • Menambahkan dan menghapus identitas terkelola yang ditetapkan pengguna di komputer virtual Azure

Jika Anda belum memiliki akun Azure, daftar untuk mendapatkan akun gratis sebelum melanjutkan.

Prasyarat

Identitas terkelola yang ditetapkan sistem

Di bagian ini, Anda mempelajari cara mengaktifkan dan menonaktifkan identitas terkelola yang ditetapkan sistem di komputer virtual Azure menggunakan CURL untuk melakukan panggilan ke titik akhir REST Azure Resource Manager.

Mengaktifkan identitas terkelola yang ditetapkan sistem selama pembuatan komputer virtual Azure

Untuk membuat komputer virtual Azure dengan identitas terkelola yang ditetapkan sistem yang diaktifkan, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Buat grup sumber daya untuk penahanan dan penyebaran komputer virtual Anda dan sumber daya terkaitnya, menggunakan az group create. Anda dapat melewati langkah ini jika Anda sudah memiliki grup sumber daya yang ingin Anda gunakan sebagai gantinya:

    az group create --name myResourceGroup --location westus
    
  2. Buat antarmuka jaringan untuk komputer virtual Anda:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  4. Dengan menggunakan Azure Cloud Shell, buat komputer virtual menggunakan CURL untuk memanggil titik akhir REST Azure Resource Manager. Contoh berikut membuat komputer virtual bernama myVM dengan identitas terkelola yang ditetapkan sistem, seperti yang diidentifikasi dalam isi permintaan berdasarkan nilai "identity":{"type":"SystemAssigned"}. Ganti <ACCESS TOKEN> dengan nilai yang Anda terima di langkah sebelumnya ketika Anda meminta token akses Pembawa dan nilai <SUBSCRIPTION ID> yang sesuai untuk lingkungan Anda.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PUT -d '{"location":"westus","name":"myVM","identity":{"type":"SystemAssigned"},"properties":{"hardwareProfile":{"vmSize":"Standard_D2_v2"},"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"name":"myVM3osdisk","createOption":"FromImage"},"dataDisks":[{"diskSizeGB":1023,"createOption":"Empty","lun":0},{"diskSizeGB":1023,"createOption":"Empty","lun":1}]},"osProfile":{"adminUsername":"azureuser","computerName":"myVM","adminPassword":"<SECURE PASSWORD STRING>"},"networkProfile":{"networkInterfaces":[{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic","properties":{"primary":true}}]}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

      {
        "location":"westus",
        "name":"myVM",
        "identity":{
           "type":"SystemAssigned"
        },
        "properties":{
           "hardwareProfile":{
              "vmSize":"Standard_D2_v2"
           },
           "storageProfile":{
              "imageReference":{
                 "sku":"2016-Datacenter",
                 "publisher":"MicrosoftWindowsServer",
                 "version":"latest",
                 "offer":"WindowsServer"
              },
              "osDisk":{
                 "caching":"ReadWrite",
                 "managedDisk":{
                    "storageAccountType":"StandardSSD_LRS"
                 },
                 "name":"myVM3osdisk",
                 "createOption":"FromImage"
              },
              "dataDisks":[
                 {
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":0
                 },
                 {
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":1
                 }
              ]
           },
           "osProfile":{
              "adminUsername":"azureuser",
              "computerName":"myVM",
              "adminPassword":"myPassword12"
           },
           "networkProfile":{
              "networkInterfaces":[
                 {
                    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic",
                    "properties":{
                       "primary":true
                    }
                 }
              ]
           }
        }
     }  
    

Mengaktifkan identitas terkelola yang ditetapkan sistem di komputer virtual yang ada

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual yang awalnya disediakan tanpa identitas tersebut, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  2. Gunakan perintah CURL berikut untuk memanggil titik akhir REST Azure Resource Manager untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual Anda seperti yang diidentifikasi dalam isi permintaan berdasarkan nilai {"identity":{"type":"SystemAssigned"} untuk komputer virtual bernama myVM. Ganti <ACCESS TOKEN> dengan nilai yang Anda terima di langkah sebelumnya ketika Anda meminta token akses Pembawa dan nilai <SUBSCRIPTION ID> yang sesuai untuk lingkungan Anda.

    Penting

    Untuk memastikan Anda tidak menghapus identitas terkelola yang ditetapkan pengguna apa pun yang ditetapkan ke komputer virtual, Anda perlu mencantumkan identitas terkelola yang ditetapkan pengguna menggunakan perintah CURL ini: curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>". Jika Anda memiliki identitas terkelola yang ditetapkan pengguna yang ditetapkan ke komputer virtual seperti yang diidentifikasi dalam nilai identity dalam respons, lewati ke langkah 3 yang memperlihatkan cara mempertahankan identitas terkelola yang ditetapkan pengguna sambil mengaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual Anda.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned"}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {  
        "identity":{  
           "type":"SystemAssigned"
        }
     }
    
  3. Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual dengan identitas terkelola yang ditetapkan pengguna yang ada, Anda perlu menambahkan SystemAssigned ke nilai type.

    Misalnya, jika komputer virtual Anda memiliki identitas terkelola yang ditetapkan pengguna ID1ID2 dan ditetapkan untuknya, dan Anda ingin menambahkan identitas terkelola yang ditetapkan sistem ke komputer virtual, gunakan panggilan CURL berikut. Ganti <ACCESS TOKEN> dan <SUBSCRIPTION ID> dengan nilai yang sesuai untuk lingkungan Anda.

    Versi API 2018-06-01 menyimpan identitas terkelola yang ditetapkan pengguna dalam nilai userAssignedIdentities dalam format kamus dibandingkan dengan nilai identityIds dalam format array yang digunakan dalam versi API 2017-12-01.

    API VERSION 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "userAssignedIdentities":{"/subscriptions/<<SUBSCRIPTION ID>>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{},"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{}}}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {  
        "identity":{  
           "type":"SystemAssigned, UserAssigned",
           "userAssignedIdentities":{  
              "/subscriptions/<<SUBSCRIPTION ID>>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{  
    
              },
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{  
    
              }
           }
        }
     }
    

    API VERSION 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "identityIds":["/subscriptions/<<SUBSCRIPTION ID>>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1","/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"]}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {  
        "identity":{  
           "type":"SystemAssigned, UserAssigned",
           "identityIds":[  
              "/subscriptions/<<SUBSCRIPTION ID>>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1",
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"
           ]
        }
     }
    

Menonaktifkan identitas terkelola yang ditetapkan sistem dari komputer virtual Azure

Untuk menonaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  2. Perbarui komputer virtual menggunakan CURL untuk memanggil titik akhir REST Azure Resource Manager untuk menonaktifkan identitas terkelola yang ditetapkan sistem. Contoh berikut menonaktifkan identitas terkelola yang ditetapkan sistem seperti yang diidentifikasi dalam isi permintaan berdasarkan nilai {"identity":{"type":"None"}} dari komputer virtual bernama myVM. Ganti <ACCESS TOKEN> dengan nilai yang Anda terima di langkah sebelumnya ketika Anda meminta token akses Pembawa dan nilai <SUBSCRIPTION ID> yang sesuai untuk lingkungan Anda.

    Penting

    Untuk memastikan Anda tidak menghapus identitas terkelola yang ditetapkan pengguna apa pun yang ditetapkan ke komputer virtual, Anda perlu mencantumkan identitas terkelola yang ditetapkan pengguna menggunakan perintah CURL ini: curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>". Jika Anda memiliki identitas terkelola yang ditetapkan pengguna yang ditetapkan ke komputer virtual seperti yang diidentifikasi dalam nilai identity dalam respons, lewati ke langkah 3 yang memperlihatkan cara mempertahankan identitas terkelola yang ditetapkan pengguna sambil menonaktifkan identitas terkelola yang ditetapkan sistem pada komputer virtual Anda.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"None"}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {  
        "identity":{  
           "type":"None"
        }
     }
    

    Untuk menghapus identitas terkelola yang ditetapkan sistem dari komputer virtual yang memiliki identitas terkelola yang ditetapkan pengguna, hapus SystemAssigned dari nilai {"identity":{"type:" "}} sambil mempertahankan nilai UserAssigned dan nilai kamus userAssignedIdentities jika Anda menggunakan versi API 2018-06-01. Jika Anda menggunakan versi API 2017-12-01 atau versi lebih lama, pertahankan array identityIds.

Identitas terkelola yang ditetapkan pengguna

Di bagian ini, Anda mempelajari cara menambahkan dan menghapus identitas terkelola yang ditetapkan pengguna di komputer virtual Azure menggunakan CURL untuk melakukan panggilan ke titik akhir REST Azure Resource Manager.

Menetapkan identitas terkelola yang ditetapkan pengguna selama pembuatan komputer virtual Azure

Untuk menetapkan identitas yang ditetapkan pengguna ke Komputer Virtual, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual dan Operator Identitas Terkelola. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  2. Buat antarmuka jaringan untuk komputer virtual Anda:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  4. Buat identitas terkelola yang ditetapkan pengguna menggunakan instruksi yang ditemukan di sini: Membuat identitas terkelola yang ditetapkan pengguna.

  5. Buat komputer virtual menggunakan CURL untuk memanggil titik akhir REST Azure Resource Manager. Contoh berikut membuat komputer virtual bernama myVM di grup sumber daya myResourceGroup dengan identitas terkelola yang ditetapkan pengguna ID1, seperti yang diidentifikasi dalam isi permintaan berdasarkan nilai "identity":{"type":"UserAssigned"}. Ganti <ACCESS TOKEN> dengan nilai yang Anda terima di langkah sebelumnya ketika Anda meminta token akses Pembawa dan nilai <SUBSCRIPTION ID> yang sesuai untuk lingkungan Anda.

    API VERSION 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PUT -d '{"location":"westus","name":"myVM","identity":{"type":"UserAssigned","identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]},"properties":{"hardwareProfile":{"vmSize":"Standard_D2_v2"},"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"name":"myVM3osdisk","createOption":"FromImage"},"dataDisks":[{"diskSizeGB":1023,"createOption":"Empty","lun":0},{"diskSizeGB":1023,"createOption":"Empty","lun":1}]},"osProfile":{"adminUsername":"azureuser","computerName":"myVM","adminPassword":"myPassword12"},"networkProfile":{"networkInterfaces":[{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic","properties":{"primary":true}}]}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {  
        "location":"westus",
        "name":"myVM",
        "identity":{  
           "type":"UserAssigned",
           "identityIds":[  
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        },
        "properties":{  
           "hardwareProfile":{  
              "vmSize":"Standard_D2_v2"
           },
           "storageProfile":{  
              "imageReference":{  
                 "sku":"2016-Datacenter",
                 "publisher":"MicrosoftWindowsServer",
                 "version":"latest",
                 "offer":"WindowsServer"
              },
              "osDisk":{  
                 "caching":"ReadWrite",
                 "managedDisk":{  
                    "storageAccountType":"StandardSSD_LRS"
                 },
                 "name":"myVM3osdisk",
                 "createOption":"FromImage"
              },
              "dataDisks":[  
                 {  
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":0
                 },
                 {  
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":1
                 }
              ]
           },
           "osProfile":{  
              "adminUsername":"azureuser",
              "computerName":"myVM",
              "adminPassword":"myPassword12"
           },
           "networkProfile":{  
              "networkInterfaces":[  
                 {  
                    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic",
                    "properties":{  
                       "primary":true
                    }
                 }
              ]
           }
        }
     }
    
    

    API VERSION 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01' -X PUT -d '{"location":"westus","name":"myVM","identity":{"type":"UserAssigned","identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]},"properties":{"hardwareProfile":{"vmSize":"Standard_D2_v2"},"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"name":"myVM3osdisk","createOption":"FromImage"},"dataDisks":[{"diskSizeGB":1023,"createOption":"Empty","lun":0},{"diskSizeGB":1023,"createOption":"Empty","lun":1}]},"osProfile":{"adminUsername":"azureuser","computerName":"myVM","adminPassword":"myPassword12"},"networkProfile":{"networkInterfaces":[{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic","properties":{"primary":true}}]}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "location":"westus",
        "name":"myVM",
        "identity":{
           "type":"UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        },
        "properties":{
           "hardwareProfile":{
              "vmSize":"Standard_D2_v2"
           },
           "storageProfile":{
              "imageReference":{
                 "sku":"2016-Datacenter",
                 "publisher":"MicrosoftWindowsServer",
                 "version":"latest",
                 "offer":"WindowsServer"
              },
              "osDisk":{
                 "caching":"ReadWrite",
                 "managedDisk":{
                    "storageAccountType":"StandardSSD_LRS"
                 },
                 "name":"myVM3osdisk",
                 "createOption":"FromImage"
              },
              "dataDisks":[
                 {
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":0
                 },
                 {
                    "diskSizeGB":1023,
                    "createOption":"Empty",
                    "lun":1
                 }
              ]
           },
           "osProfile":{
              "adminUsername":"azureuser",
              "computerName":"myVM",
              "adminPassword":"myPassword12"
           },
           "networkProfile":{
              "networkInterfaces":[
                 {
                    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic",
                    "properties":{
                       "primary":true
                    }
                 }
              ]
           }
        }
     }
    

Menetapkan identitas terkelola yang ditetapkan pengguna ke komputer virtual Azure yang sudah ada

Untuk menetapkan identitas yang ditetapkan pengguna ke Komputer Virtual, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual dan Operator Identitas Terkelola. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  2. Buat identitas terkelola yang ditetapkan pengguna menggunakan instruksi yang ditemukan di sini, Membuat identitas terkelola yang ditetapkan pengguna.

  3. Untuk memastikan Anda tidak menghapus identitas terkelola yang ditetapkan pengguna atau sistem yang ada yang ditetapkan ke komputer virtual, Anda perlu mencantumkan jenis identitas yang ditetapkan ke komputer virtual menggunakan perintah CURL berikut. Jika Anda sudah mengelola identitas yang ditetapkan ke kumpulan skala komputer virtual, identitas tersebut tercantum di bawah nilai identity.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>" 
    
    GET https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Jika Anda memiliki identitas terkelola yang ditetapkan pengguna atau sistem yang ditetapkan ke komputer virtual seperti yang diidentifikasi dalam nilai identity dalam respons, lewati ke langkah 5 yang memperlihatkan cara mempertahankan identitas terkelola yang ditetapkan sistem sambil menambahkan identitas terkelola yang ditetapkan pengguna ke komputer virtual Anda.

  4. Jika Anda tidak memiliki identitas terkelola yang ditetapkan pengguna apa pun yang ditetapkan ke komputer virtual Anda, gunakan perintah CURL berikut untuk memanggil titik akhir REST Azure Resource Manager untuk menetapkan identitas terkelola yang ditetapkan pengguna pertama ke komputer virtual.

    Contoh berikut menetapkan identitas terkelola yang ditetapkan pengguna, ID1 ke komputer virtual bernama myVM di grup sumber daya myResourceGroup. Ganti <ACCESS TOKEN> dengan nilai yang Anda terima di langkah sebelumnya ketika Anda meminta token akses Pembawa dan nilai <SUBSCRIPTION ID> yang sesuai untuk lingkungan Anda.

    API VERSION 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{}}}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
    
              }
           }
        }
     }
    

    API VERSION 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"userAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"userAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    
  5. Jika Anda memiliki identitas terkelola yang ditetapkan pengguna atau yang ditetapkan sistem yang ditetapkan untuk komputer virtual Anda:

    API VERSION 2018-06-01

    Tambahkan identitas terkelola yang ditetapkan pengguna ke nilai kamus userAssignedIdentities.

    Misalnya, jika Anda memiliki identitas terkelola yang ditetapkan sistem dan identitas terkelola yang ditetapkan pengguna ID1 yang saat ini ditetapkan ke komputer virtual Anda dan ingin menambahkan identitas terkelola yang ditetapkan pengguna ID2 ke identitas tersebut:

    curl  'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{},"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{}}}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
    
              },
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{
    
              }
           }
        }
     }
    

    API VERSION 2017-12-01

    Pertahankan identitas terkelola yang ditetapkan pengguna yang ingin Anda simpan dalam nilai array identityIds sambil menambahkan identitas terkelola yang ditetapkan pengguna baru.

    Misalnya, jika Anda memiliki identitas terkelola yang ditetapkan sistem dan identitas terkelola yang ditetapkan pengguna ID1 yang saat ini ditetapkan ke komputer virtual Anda dan ingin menambahkan identitas terkelola yang ditetapkan pengguna ID2 ke identitas tersebut:

    curl  'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned,UserAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1","/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"]}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"SystemAssigned,UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1",
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"
           ]
        }
     }
    

Menghapus identitas terkelola yang ditetapkan pengguna dari komputer virtual Azure

Untuk menghapus identitas yang ditetapkan pengguna ke komputer virtual, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual.

  1. Ambil token akses Pembawa, yang akan Anda gunakan pada langkah berikutnya di header Otorisasi untuk membuat komputer virtual Anda dengan identitas terkelola yang ditetapkan sistem.

    az account get-access-token
    
  2. Untuk memastikan Anda tidak menghapus identitas terkelola yang ditetapkan pengguna yang sudah ada yang tetap ingin Anda tetapkan ke komputer virtual atau menghapus identitas terkelola yang ditetapkan sistem, Anda perlu mencantumkan identitas terkelola dengan menggunakan perintah CURL berikut:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>"
    
    GET https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachines/<VM NAME>?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Jika Anda sudah mengelola identitas yang ditetapkan ke komputer virtual, identitas tersebut tercantum dalam respons dalam nilai identity.

    Misalnya, jika Anda memiliki identitas terkelola yang ditetapkan pengguna ID1 dan ID2 yang ditetapkan ke komputer virtual Anda, dan Anda hanya ingin tetap menetapkan ID1 dan mempertahankan identitas yang ditetapkan sistem:

    API VERSION 2018-06-01

    Tambahkan null ke identitas terkelola yang ditetapkan pengguna yang ingin Anda hapus:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":null}}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":null
           }
        }
     }
    

    API VERSION 2017-12-01

    Hanya pertahankan identitas terkelola yang ditetapkan pengguna yang ingin Anda simpan dalam array identityIds:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2017-12-01 HTTP/1.1
    

    Header permintaan

    Header permintaan Deskripsi
    Tipe-Konten Harus diisi. Atur ke application/json.
    Authorization Harus diisi. Atur ke token akses Bearer yang valid.

    Badan permintaan

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    

Jika komputer virtual Anda memiliki identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna, Anda dapat menghapus semua identitas terkelola yang ditetapkan pengguna dengan beralih untuk hanya menggunakan identitas terkelola yang ditetapkan sistem menggunakan perintah berikut:

curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned"}}' -H "Content-Type: application/json" -H "Authorization:Bearer <ACCESS TOKEN>"
PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1

Header permintaan

Header permintaan Deskripsi
Tipe-Konten Harus diisi. Atur ke application/json.
Authorization Harus diisi. Atur ke token akses Bearer yang valid.

Badan permintaan

{
   "identity":{
      "type":"SystemAssigned"
   }
}

Jika komputer virtual Anda hanya memiliki identitas terkelola yang ditetapkan pengguna dan Anda ingin menghapus semuanya, gunakan perintah berikut:

curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"None"}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM?api-version=2018-06-01 HTTP/1.1

Header permintaan

Header permintaan Deskripsi
Tipe-Konten Harus diisi. Atur ke application/json.
Authorization Harus diisi. Atur ke token akses Bearer yang valid.

Badan permintaan

{
   "identity":{
      "type":"None"
   }
}

Langkah berikutnya

Untuk informasi tentang cara membuat, mencantumkan, atau menghapus identitas terkelola yang ditetapkan pengguna menggunakan REST, lihat: