REST API çağrılarını kullanarak Azure VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma

Azure kaynakları için yönetilen kimlikler, Microsoft Entra Id'nin bir özelliğidir. Azure kaynakları için yönetilen kimlikleri destekleyen Azure hizmetlerinin her biri kendi zaman çizelgesine tabidir. Başlamadan önce kaynağınıza yönelik yönetilen kimliklerin kullanılabilirlik durumunu ve bilinen sorunları gözden geçirdiğinizden emin olun.

Azure kaynakları için yönetilen kimlikler, Azure hizmetlerine Microsoft Entra Id'de otomatik olarak yönetilen bir sistem kimliği sağlar. Bu kimliği kullanarak, Microsoft Entra kimlik doğrulamasını destekleyen tüm hizmetlerde kodunuzda kimlik bilgileri bulunmasına gerek kalmadan kimlik doğrulaması yapabilirsiniz.

Azure Resource Manager REST uç noktasına çağrı yapmak için CURL'yi kullanarak bu makalede, azure vm'sinde Azure kaynakları işlemleri için aşağıdaki yönetilen kimlikleri gerçekleştirmeyi öğreneceksiniz:

  • Azure VM'de sistem tarafından atanan yönetilen kimliği etkinleştirme ve devre dışı bırakma
  • Azure VM'de kullanıcı tarafından atanan yönetilen kimliği ekleme ve kaldırma

Henüz bir Azure hesabınız yoksa, devam etmeden önce ücretsiz bir hesaba kaydolun.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Sistem tarafından atanan yönetilen kimlik

Bu bölümde, Azure Resource Manager REST uç noktasına çağrı yapmak için CURL kullanarak Azure VM'de sistem tarafından atanan yönetilen kimliği etkinleştirmeyi ve devre dışı bırakmayı öğreneceksiniz.

Azure VM oluşturulurken sistem tarafından atanan yönetilen kimliği etkinleştirme

Sistem tarafından atanan yönetilen kimliğin etkinleştirildiği bir Azure VM oluşturmak için hesabınızın Sanal Makine Katılımcısı rol ataması gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. VM'nizin ve onunla ilgili kaynakların kapsaması ve dağıtımı için, az group create komutunu kullanarak bir kaynak grubu oluşturun. Bunun yerine kullanmak istediğiniz bir kaynak grubunuz varsa, bu adımı atlayabilirsiniz:

    az group create --name myResourceGroup --location westus
    
  2. VM'niz için bir ağ arabirimi oluşturun:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  4. Azure Cloud Shell'i kullanarak AZURE Resource Manager REST uç noktasını çağırmak için CURL kullanarak bir VM oluşturun. Aşağıdaki örnek, istek gövdesinde değerine "identity":{"type":"SystemAssigned"}göre tanımlanarak sistem tarafından atanan yönetilen kimliğe sahip myVM adlı bir VM oluşturur. değerini bir Taşıyıcı erişim belirteci istediğinizde önceki adımda aldığınız değerle ve <SUBSCRIPTION ID> ortamınız için uygun değerle değiştirin<ACCESS TOKEN>.

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

Mevcut bir Azure VM'de sistem tarafından atanan kimliği etkinleştirme

Sistem tarafından atanan yönetilen kimliği başlangıçta bu olmadan sağlanan bir VM'de etkinleştirmek için hesabınıza Sanal Makine Katkıda Bulunanı rol ataması gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  2. İstek gövdesinde myVM adlı bir VM'nin değeriyle {"identity":{"type":"SystemAssigned"} tanımlanan şekilde VM'nizde sistem tarafından atanan yönetilen kimliği etkinleştirmek üzere Azure Resource Manager REST uç noktasını çağırmak için aşağıdaki CURL komutunu kullanın. değerini bir Taşıyıcı erişim belirteci istediğinizde önceki adımda aldığınız değerle ve <SUBSCRIPTION ID> ortamınız için uygun değerle değiştirin<ACCESS TOKEN>.

    Önemli

    VM'ye atanan mevcut kullanıcı tarafından atanan yönetilen kimlikleri silmediğinizden emin olmak için şu CURL komutunu kullanarak kullanıcı tarafından atanan yönetilen kimlikleri listelemeniz gerekir: 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>". Yanıttaki değerde identity tanımlanan şekilde VM'ye kullanıcı tarafından atanan yönetilen kimlikleriniz varsa, vm'nizde sistem tarafından atanan yönetilen kimliği etkinleştirirken kullanıcı tarafından atanan yönetilen kimlikleri nasıl tutabileceğinizi gösteren 3. adıma geçin.

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

     {  
        "identity":{  
           "type":"SystemAssigned"
        }
     }
    
  3. Kullanıcı tarafından atanan mevcut yönetilen kimliklere sahip bir VM'de sistem tarafından atanan yönetilen kimliği etkinleştirmek için değere type eklemeniz SystemAssigned gerekir.

    Örneğin, VM'nizde kullanıcı tarafından atanan yönetilen kimlikler ID1 varsa ve ID2 vm'ye sistem tarafından atanan yönetilen kimlik eklemek istiyorsanız aşağıdaki CURL çağrısını kullanın. ve <SUBSCRIPTION ID> değerlerini ortamınıza uygun değerlerle değiştirin<ACCESS TOKEN>.

    API sürümü2018-06-01, kullanıcı tarafından atanan yönetilen kimlikleriuserAssignedIdentities, API sürümünde 2017-12-01kullanılan dizi biçimindeki değerden identityIds farklı olarak sözlük biçiminde depolar.

    API SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

     {  
        "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 SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

Azure VM'den sistem tarafından atanan yönetilen kimliği devre dışı bırakma

Vm'de sistem tarafından atanan yönetilen kimliği devre dışı bırakmak için hesabınıza Sanal Makine Katılımcısı rol ataması gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  2. Sistem tarafından atanan yönetilen kimliği devre dışı bırakmak üzere Azure Resource Manager REST uç noktasını çağırmak için CURL kullanarak VM'yi güncelleştirin. Aşağıdaki örnek, istek gövdesinde myVM adlı bir VM'den alınan değerle {"identity":{"type":"None"}} tanımlanan sistem tarafından atanan yönetilen kimliği devre dışı bırakır. değerini bir Taşıyıcı erişim belirteci istediğinizde önceki adımda aldığınız değerle ve <SUBSCRIPTION ID> ortamınız için uygun değerle değiştirin<ACCESS TOKEN>.

    Önemli

    VM'ye atanan mevcut kullanıcı tarafından atanan yönetilen kimlikleri silmediğinizden emin olmak için şu CURL komutunu kullanarak kullanıcı tarafından atanan yönetilen kimlikleri listelemeniz gerekir: 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>". Yanıttaki değerde identity tanımlanan şekilde VM'ye kullanıcı tarafından atanmış yönetilen kimlikleriniz varsa, vm'nizde sistem tarafından atanan yönetilen kimliği devre dışı bırakırken kullanıcı tarafından atanan yönetilen kimlikleri nasıl tutabileceğinizi gösteren 3. adıma geçin.

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

    Kullanıcı tarafından atanan yönetilen kimlikleri olan bir sanal makineden sistem tarafından atanan yönetilen kimliği kaldırmak için, API sürüm 2018-06-01 kullanıyorsanız değeri ve userAssignedIdentities sözlük değerlerini koruyarak UserAssigned değerden {"identity":{"type:" "}} kaldırınSystemAssigned. API 2017-12-01 veya önceki bir sürümünü kullanıyorsanız diziyi identityIds koruyun.

Kullanıcı tarafından atanan yönetilen kimlik

Bu bölümde, Azure Resource Manager REST uç noktasına çağrı yapmak için CURL kullanarak Azure VM'de kullanıcı tarafından atanan yönetilen kimliği eklemeyi ve kaldırmayı öğreneceksiniz.

Azure VM oluşturulurken kullanıcı tarafından atanan yönetilen kimlik atama

Vm'ye kullanıcı tarafından atanan bir kimlik atamak için hesabınıza Sanal Makine Katkıda Bulunanı ve Yönetilen Kimlik Operatörü rol atamaları gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  2. VM'niz için bir ağ arabirimi oluşturun:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  4. Burada bulunan yönergeleri kullanarak kullanıcı tarafından atanan bir yönetilen kimlik oluşturun: Kullanıcı tarafından atanan yönetilen kimlik oluşturma.

  5. Azure Resource Manager REST uç noktasını çağırmak için CURL kullanarak bir VM oluşturun. Aşağıdaki örnek, kullanıcı tarafından atanan yönetilen kimliğine ID1sahip myResourceGroup kaynak grubunda, istek gövdesinde değerine "identity":{"type":"UserAssigned"}göre tanımlanan myVM adlı bir VM oluşturur. değerini bir Taşıyıcı erişim belirteci istediğinizde önceki adımda aldığınız değerle ve <SUBSCRIPTION ID> ortamınız için uygun değerle değiştirin<ACCESS TOKEN>.

    API SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

     {  
        "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 SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

Mevcut Azure VM'sine kullanıcı tarafından atanan yönetilen kimlik atama

Vm'ye kullanıcı tarafından atanan bir kimlik atamak için hesabınıza Sanal Makine Katkıda Bulunanı ve Yönetilen Kimlik Operatörü rol atamaları gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  2. Burada bulunan Kullanıcı tarafından atanan yönetilen kimlik oluşturma yönergelerini kullanarak kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.

  3. VM'ye atanan mevcut kullanıcı veya sistem tarafından atanan yönetilen kimlikleri silmediğinizden emin olmak için aşağıdaki CURL komutunu kullanarak VM'ye atanan kimlik türlerini listelemeniz gerekir. Sanal makine ölçek kümesine atanmış yönetilen kimlikleriniz varsa, bunlar değerinin identity altında listelenir.

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    Yanıttaki değerde identity tanımlanan şekilde VM'ye atanmış kullanıcı veya sistem tarafından atanmış yönetilen kimlikleriniz varsa, vm'nize kullanıcı tarafından atanan yönetilen kimliği eklerken sistem tarafından atanan yönetilen kimliği nasıl tutabileceğinizi gösteren 5. adıma geçin.

  4. VM'nize kullanıcı tarafından atanmış yönetilen kimlikleriniz yoksa, vm'ye kullanıcı tarafından atanan ilk yönetilen kimliği atamak üzere Azure Resource Manager REST uç noktasını çağırmak için aşağıdaki CURL komutunu kullanın.

    Aşağıdaki örnek, ID1 myResourceGroup kaynak grubundaki myVM adlı vm'ye kullanıcı tarafından atanan bir yönetilen kimlik atar. değerini bir Taşıyıcı erişim belirteci istediğinizde önceki adımda aldığınız değerle ve <SUBSCRIPTION ID> ortamınız için uygun değerle değiştirin<ACCESS TOKEN>.

    API SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

    API SÜRÜM 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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

     {
        "identity":{
           "type":"userAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    
  5. VM'nize kullanıcı tarafından atanmış veya sistem tarafından atanmış yönetilen bir kimliğiniz varsa:

    API SÜRÜM 2018-06-01

    Kullanıcı tarafından atanan yönetilen kimliği userAssignedIdentities sözlük değerine ekleyin.

    Örneğin, sistem tarafından atanan yönetilen kimliğiniz ve şu anda VM'nize atanmış olan kullanıcı tarafından atanan yönetilen kimliğiniz ID1 varsa ve kullanıcı tarafından atanan yönetilen kimliği ID2 buna eklemek istiyorsanız:

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

     {
        "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 SÜRÜM 2017-12-01

    Kullanıcı tarafından atanan yeni yönetilen kimliği eklerken dizi değerinde tutmak istediğiniz kullanıcı tarafından atanan yönetilen kimlikleri koruyun identityIds .

    Örneğin, sistem tarafından atanan yönetilen kimliğiniz ve şu anda VM'nize atanmış olan kullanıcı tarafından atanan yönetilen kimliğiniz ID1 varsa ve kullanıcı tarafından atanan yönetilen kimliği ID2 buna eklemek istiyorsanız:

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

Azure VM'den kullanıcı tarafından atanan yönetilen kimliği kaldırma

Vm'ye kullanıcı tarafından atanan bir kimliği kaldırmak için hesabınıza Sanal Makine Katılımcısı rol ataması gerekir.

  1. Vm'nizi sistem tarafından atanan yönetilen kimlikle oluşturmak için Yetkilendirme üst bilgisindeki bir sonraki adımda kullanacağınız Taşıyıcı erişim belirtecini alın.

    az account get-access-token
    
  2. VM'ye atanmış olarak tutmak veya sistem tarafından atanan yönetilen kimliği kaldırmak istediğiniz mevcut kullanıcı tarafından atanan yönetilen kimlikleri silmediğinizden emin olmak için, aşağıdaki CURL komutunu kullanarak yönetilen kimlikleri listelemeniz gerekir:

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    VM'ye atanmış yönetilen kimlikleriniz varsa, bunlar yanıtta değerde identity listelenir.

    Örneğin, kullanıcı tarafından atanan yönetilen kimlikleriniz ID1 varsa ve ID2 VM'nize atanmışsa ve yalnızca sistem tarafından atanan kimliğin atanmasını ve korunmasını istiyorsanız ID1 :

    API SÜRÜM 2018-06-01

    Kaldırmak istediğiniz kullanıcı tarafından atanan yönetilen kimliğe ekleyin null :

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

    API SÜRÜM 2017-12-01

    Yalnızca dizide tutmak istediğiniz kullanıcı tarafından atanan yönetilen kimlikleri identityIds koruyun:

    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
    

    İstek üst bilgileri

    İstek üst bilgisi Açıklama
    İçerik Türü Gerekli. application/json olarak ayarlayın.
    Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

    İstek gövdesi

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

VM'nizde hem sistem tarafından atanan hem de kullanıcı tarafından atanan yönetilen kimlikler varsa, aşağıdaki komutu kullanarak yalnızca sistem tarafından atanan yönetilen kimliği kullanmaya geçerek kullanıcı tarafından atanan tüm yönetilen kimlikleri kaldırabilirsiniz:

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

İstek üst bilgileri

İstek üst bilgisi Açıklama
İçerik Türü Gerekli. application/json olarak ayarlayın.
Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

İstek gövdesi

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

VM'nizde yalnızca kullanıcı tarafından atanan yönetilen kimlikler varsa ve bunların tümünü kaldırmak istiyorsanız aşağıdaki komutu kullanın:

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

İstek üst bilgileri

İstek üst bilgisi Açıklama
İçerik Türü Gerekli. application/json olarak ayarlayın.
Yetkilendirme Gerekli. Geçerli Bearer bir erişim belirteci olarak ayarlayın.

İstek gövdesi

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

Sonraki adımlar

REST kullanarak kullanıcı tarafından atanan yönetilen kimlikleri oluşturma, listeleme veya silme hakkında bilgi için bkz: