Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure przy użyciu wywołań interfejsu API REST

Tożsamości zarządzane dla zasobów platformy Azure to funkcja identyfikatora Entra firmy Microsoft. Każda usługa platformy Azure obsługująca tożsamości zarządzane dla zasobów platformy Azure ma własną oś czasu. Pamiętaj, aby przed rozpoczęciem sprawdzić stan dostępności tożsamości zarządzanych dla swojego zasobu i znane problemy.

Tożsamości zarządzane dla zasobów platformy Azure zapewniają usługom platformy Azure automatycznie zarządzaną tożsamość systemu w usłudze Microsoft Entra ID. Za pomocą tej tożsamości można uwierzytelnić się w dowolnej usłudze obsługującej uwierzytelnianie usługi Microsoft Entra bez konieczności przechowywania poświadczeń w kodzie.

W tym artykule, używając narzędzia CURL do wykonywania wywołań do punktu końcowego REST usługi Azure Resource Manager, dowiesz się, jak wykonywać następujące tożsamości zarządzane dla operacji zasobów platformy Azure na maszynie wirtualnej platformy Azure:

  • Włączanie i wyłączanie tożsamości zarządzanej przypisanej przez system na maszynie wirtualnej platformy Azure
  • Dodawanie i usuwanie tożsamości zarządzanej przypisanej przez użytkownika na maszynie wirtualnej platformy Azure

Jeśli nie masz jeszcze konta platformy Azure, utwórz bezpłatne konto przed kontynuowaniem.

Wymagania wstępne

Tożsamość zarządzana przypisana przez system

W tej sekcji dowiesz się, jak włączyć i wyłączyć tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej platformy Azure przy użyciu narzędzia CURL w celu wykonywania wywołań do punktu końcowego REST usługi Azure Resource Manager.

Włączanie tożsamości zarządzanej przypisanej przez system podczas tworzenia maszyny wirtualnej platformy Azure

Aby utworzyć maszynę wirtualną platformy Azure z włączoną tożsamością zarządzaną przypisaną przez system, twoje konto wymaga przypisania roli Współautor maszyny wirtualnej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Utwórz grupę zasobów w celu uwzględnienia i wdrożenia maszyny wirtualnej i jej powiązanych zasobów przy użyciu polecenia az group create. Ten krok możesz pominąć, jeśli masz już grupę zasobów, której chcesz użyć w zamian:

    az group create --name myResourceGroup --location westus
    
  2. Utwórz interfejs sieciowy dla maszyny wirtualnej:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  4. Za pomocą usługi Azure Cloud Shell utwórz maszynę wirtualną przy użyciu narzędzia CURL w celu wywołania punktu końcowego REST usługi Azure Resource Manager. Poniższy przykład tworzy maszynę wirtualną o nazwie myVM z tożsamością zarządzaną przypisaną przez system zgodnie z wartością "identity":{"type":"SystemAssigned"}w treści żądania. Zastąp <ACCESS TOKEN> ciąg wartością otrzymaną w poprzednim kroku, gdy zażądano tokenu dostępu elementu nośnego i <SUBSCRIPTION ID> wartość odpowiednią dla danego środowiska.

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

      {
        "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
                    }
                 }
              ]
           }
        }
     }  
    

Włączanie tożsamości przypisanej przez system na istniejącej maszynie wirtualnej platformy Azure

Aby włączyć tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej, która została pierwotnie aprowizowana bez niej, twoje konto wymaga przypisania roli Współautor maszyny wirtualnej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  2. Użyj następującego polecenia CURL, aby wywołać punkt końcowy REST usługi Azure Resource Manager, aby włączyć tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej zgodnie z opisem w treści żądania przez wartość {"identity":{"type":"SystemAssigned"} maszyny wirtualnej o nazwie myVM. Zastąp <ACCESS TOKEN> ciąg wartością otrzymaną w poprzednim kroku, gdy zażądano tokenu dostępu elementu nośnego i <SUBSCRIPTION ID> wartość odpowiednią dla danego środowiska.

    Ważne

    Aby upewnić się, że nie usuniesz żadnych istniejących tożsamości zarządzanych przypisanych przez użytkownika przypisanych do maszyny wirtualnej, musisz wyświetlić listę tożsamości zarządzanych przypisanych przez użytkownika przy użyciu tego polecenia CURL: 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>". Jeśli masz przypisane przez użytkownika tożsamości zarządzane przypisane do maszyny wirtualnej zgodnie z wartością w identity odpowiedzi, przejdź do kroku 3, który pokazuje, jak zachować tożsamości zarządzane przypisane przez użytkownika podczas włączania tożsamości zarządzanej przypisanej przez system na maszynie wirtualnej.

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {  
        "identity":{  
           "type":"SystemAssigned"
        }
     }
    
  3. Aby włączyć tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej z istniejącymi tożsamościami zarządzanymi przypisanymi przez użytkownika, należy dodać SystemAssignedtype wartość.

    Jeśli na przykład maszyna wirtualna ma przypisane przez użytkownika tożsamości ID1 zarządzane i ID2 do niej przypisane, i chcesz dodać tożsamość zarządzaną przypisaną przez system do maszyny wirtualnej, użyj następującego wywołania CURL. Zastąp <ACCESS TOKEN> wartości i <SUBSCRIPTION ID> odpowiednimi dla danego środowiska.

    Wersja 2018-06-01 interfejsu API przechowuje tożsamości zarządzane przypisane przez użytkownika w userAssignedIdentities wartości w formacie słownika, w przeciwieństwie do identityIds wartości w formacie tablicy używanym w wersji 2017-12-01interfejsu API .

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {  
        "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":{  
    
              }
           }
        }
     }
    

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {  
        "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"
           ]
        }
     }
    

Wyłączanie tożsamości zarządzanej przypisanej przez system z maszyny wirtualnej platformy Azure

Aby wyłączyć tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej, twoje konto wymaga przypisania roli Współautor maszyny wirtualnej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  2. Zaktualizuj maszynę wirtualną przy użyciu narzędzia CURL, aby wywołać punkt końcowy REST usługi Azure Resource Manager, aby wyłączyć tożsamość zarządzaną przypisaną przez system. Poniższy przykład wyłącza tożsamość zarządzaną przypisaną przez system zgodnie z opisem w treści żądania przez wartość {"identity":{"type":"None"}} z maszyny wirtualnej o nazwie myVM. Zastąp <ACCESS TOKEN> ciąg wartością otrzymaną w poprzednim kroku, gdy zażądano tokenu dostępu elementu nośnego i <SUBSCRIPTION ID> wartość odpowiednią dla danego środowiska.

    Ważne

    Aby upewnić się, że nie usuniesz żadnych istniejących tożsamości zarządzanych przypisanych przez użytkownika przypisanych do maszyny wirtualnej, musisz wyświetlić listę tożsamości zarządzanych przypisanych przez użytkownika przy użyciu tego polecenia CURL: 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>". Jeśli masz przypisane przez użytkownika tożsamości zarządzane przypisane do maszyny wirtualnej zgodnie z wartością w identity odpowiedzi, przejdź do kroku 3, który pokazuje, jak zachować tożsamości zarządzane przypisane przez użytkownika podczas wyłączania tożsamości zarządzanej przypisanej przez system na maszynie wirtualnej.

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

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

    Aby usunąć tożsamość zarządzaną przypisaną przez system z maszyny wirtualnej, która ma przypisane przez użytkownika tożsamości zarządzane, usuń SystemAssigned z wartości przy zachowaniu UserAssigned wartości i userAssignedIdentities wartości słownika, jeśli używasz interfejsu API w wersji 2018-06-01{"identity":{"type:" "}}. Jeśli używasz interfejsu API w wersji 2017-12-01 lub starszej, zachowaj tablicę identityIds .

Tożsamość zarządzana przypisana przez użytkownika

W tej sekcji dowiesz się, jak dodawać i usuwać tożsamość zarządzaną przypisaną przez użytkownika na maszynie wirtualnej platformy Azure przy użyciu narzędzia CURL w celu wykonywania wywołań do punktu końcowego REST usługi Azure Resource Manager.

Przypisywanie tożsamości zarządzanej przypisanej przez użytkownika podczas tworzenia maszyny wirtualnej platformy Azure

Aby przypisać tożsamość przypisaną przez użytkownika do maszyny wirtualnej, twoje konto wymaga przypisań ról Współautor maszyny wirtualnej i Operator tożsamości zarządzanej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  2. Utwórz interfejs sieciowy dla maszyny wirtualnej:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  4. Utwórz tożsamość zarządzaną przypisaną przez użytkownika, korzystając z instrukcji podanych tutaj: Tworzenie tożsamości zarządzanej przypisanej przez użytkownika.

  5. Utwórz maszynę wirtualną przy użyciu narzędzia CURL w celu wywołania punktu końcowego REST usługi Azure Resource Manager. W poniższym przykładzie utworzono maszynę wirtualną o nazwie myVM w grupie zasobów myResourceGroup z tożsamością zarządzaną przypisaną przez użytkownika, zgodnie z opisem ID1w treści żądania o wartości "identity":{"type":"UserAssigned"}. Zastąp <ACCESS TOKEN> ciąg wartością otrzymaną w poprzednim kroku, gdy zażądano tokenu dostępu elementu nośnego i <SUBSCRIPTION ID> wartość odpowiednią dla danego środowiska.

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {  
        "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
                    }
                 }
              ]
           }
        }
     }
    
    

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {
        "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
                    }
                 }
              ]
           }
        }
     }
    

Przypisywanie tożsamości zarządzanej przypisanej przez użytkownika do istniejącej maszyny wirtualnej platformy Azure

Aby przypisać tożsamość przypisaną przez użytkownika do maszyny wirtualnej, twoje konto wymaga przypisań ról Współautor maszyny wirtualnej i Operator tożsamości zarządzanej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  2. Utwórz tożsamość zarządzaną przypisaną przez użytkownika, korzystając z instrukcji podanych tutaj: Tworzenie tożsamości zarządzanej przypisanej przez użytkownika.

  3. Aby upewnić się, że nie usuniesz istniejących tożsamości zarządzanych przypisanych przez użytkownika ani przypisane przez system do maszyny wirtualnej, musisz wyświetlić listę typów tożsamości przypisanych do maszyny wirtualnej przy użyciu następującego polecenia CURL. Jeśli masz tożsamości zarządzane przypisane do zestawu skalowania maszyn wirtualnych, są one wymienione w obszarze w identity wartości .

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Jeśli masz tożsamości zarządzane przypisane przez użytkownika lub system przypisane do maszyny wirtualnej zgodnie identity z wartością w odpowiedzi, przejdź do kroku 5, który pokazuje, jak zachować tożsamość zarządzaną przypisaną przez system podczas dodawania tożsamości zarządzanej przypisanej przez użytkownika na maszynie wirtualnej.

  4. Jeśli nie masz przypisanych przez użytkownika tożsamości zarządzanych do maszyny wirtualnej, użyj następującego polecenia CURL, aby wywołać punkt końcowy REST usługi Azure Resource Manager, aby przypisać pierwszą tożsamość zarządzaną przypisaną przez użytkownika do maszyny wirtualnej.

    W poniższym przykładzie przypisano tożsamość ID1 zarządzaną przypisaną przez użytkownika do maszyny wirtualnej o nazwie myVM w grupie zasobów myResourceGroup. Zastąp <ACCESS TOKEN> ciąg wartością otrzymaną w poprzednim kroku, gdy zażądano tokenu dostępu elementu nośnego i <SUBSCRIPTION ID> wartość odpowiednią dla danego środowiska.

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

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

    INTERFEJS API W WERSJI 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {
        "identity":{
           "type":"userAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    
  5. Jeśli masz przypisaną przez użytkownika lub przypisaną przez system tożsamość zarządzaną przypisaną do maszyny wirtualnej:

    INTERFEJS API W WERSJI 2018-06-01

    Dodaj tożsamość zarządzaną przypisaną przez użytkownika do wartości słownika userAssignedIdentities .

    Jeśli na przykład masz tożsamość zarządzaną przypisaną przez system i tożsamość ID1 zarządzaną przypisaną przez użytkownika do maszyny wirtualnej i chcesz dodać do niej tożsamość ID2 zarządzaną przypisaną przez użytkownika:

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {
        "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":{
    
              }
           }
        }
     }
    

    INTERFEJS API W WERSJI 2017-12-01

    Zachowaj tożsamości zarządzane przypisane przez użytkownika, które chcesz zachować w identityIds wartości tablicy podczas dodawania nowej tożsamości zarządzanej przypisanej przez użytkownika.

    Jeśli na przykład masz tożsamość zarządzaną przypisaną przez system i tożsamość ID1 zarządzaną przypisaną przez użytkownika do maszyny wirtualnej i chcesz dodać do niej tożsamość ID2 zarządzaną przypisaną przez użytkownika:

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

     {
        "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"
           ]
        }
     }
    

Usuwanie tożsamości zarządzanej przypisanej przez użytkownika z maszyny wirtualnej platformy Azure

Aby usunąć tożsamość przypisaną przez użytkownika do maszyny wirtualnej, twoje konto wymaga przypisania roli Współautor maszyny wirtualnej.

  1. Pobierz token dostępu elementu nośnego, który zostanie użyty w następnym kroku w nagłówku Autoryzacja w celu utworzenia maszyny wirtualnej z tożsamością zarządzaną przypisaną przez system.

    az account get-access-token
    
  2. Aby upewnić się, że nie usuniesz żadnych istniejących tożsamości zarządzanych przypisanych przez użytkownika, które chcesz zachować przypisane do maszyny wirtualnej lub usuń tożsamość zarządzaną przypisaną przez system, musisz wyświetlić listę tożsamości zarządzanych przy użyciu następującego polecenia CURL:

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Jeśli masz tożsamości zarządzane przypisane do maszyny wirtualnej, są one wymienione w odpowiedzi w identity wartości .

    Jeśli na przykład masz przypisane przez użytkownika tożsamości ID1 zarządzane i ID2 przypisane do maszyny wirtualnej, a chcesz zachować ID1 przypisaną i zachowaną tożsamość przypisaną przez system:

    INTERFEJS API W WERSJI 2018-06-01

    Dodaj null do tożsamości zarządzanej przypisanej przez użytkownika, którą chcesz usunąć:

    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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

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

    INTERFEJS API W WERSJI 2017-12-01

    Zachowaj tylko tożsamości zarządzane przypisane przez użytkownika, które mają być przechowywane w tablicy 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
    

    Nagłówki żądań

    Nagłówek żądania opis
    Typ zawartości Wymagany. Ustaw wartość application/json.
    Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

    Treść żądania

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

Jeśli maszyna wirtualna ma tożsamości zarządzane przypisane przez system i przypisane przez użytkownika, możesz usunąć wszystkie tożsamości zarządzane przypisane przez użytkownika, przełączając się na użycie tylko przypisanej przez system tożsamości zarządzanej przy użyciu następującego polecenia:

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

Nagłówki żądań

Nagłówek żądania opis
Typ zawartości Wymagany. Ustaw wartość application/json.
Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

Treść żądania

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

Jeśli maszyna wirtualna ma tylko tożsamości zarządzane przypisane przez użytkownika i chcesz je usunąć, użyj następującego polecenia:

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

Nagłówki żądań

Nagłówek żądania opis
Typ zawartości Wymagany. Ustaw wartość application/json.
Autoryzacja Wymagany. Ustaw prawidłowy Bearer token dostępu.

Treść żądania

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

Następne kroki

Aby uzyskać informacje na temat tworzenia, wyświetlania listy lub usuwania tożsamości zarządzanych przypisanych przez użytkownika przy użyciu interfejsu REST, zobacz: