Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Dane użytkownika dla maszyny wirtualnej platformy Azure

Dane użytkownika umożliwiają przekazywanie własnych skryptów lub metadanych do maszyny wirtualnej.

Co to są "dane użytkownika"

Dane użytkownika to zestaw skryptów lub innych metadanych wstawionych do maszyny wirtualnej platformy Azure w czasie aprowizacji. Każda aplikacja na maszynie wirtualnej może uzyskiwać dostęp do danych użytkownika z usługi Azure Instance Metadata Service (IMDS) po aprowizacji.

Dane użytkownika to nowa wersja danych niestandardowych i oferuje dodatkowe korzyści:

  • Dane użytkownika można pobrać z usługi Azure Instance Metadata Service (IMDS) po aprowizacji.

  • Dane użytkownika są trwałe. Będzie ona dostępna w okresie istnienia maszyny wirtualnej.

  • Dane użytkownika można aktualizować spoza maszyny wirtualnej bez zatrzymywania lub ponownego uruchamiania maszyny wirtualnej.

  • Dane użytkownika mogą być odpytywane za pośrednictwem interfejsu API GET vm/VMSS z opcją $expand.

Ponadto, jeśli dane użytkownika nie są dodawane w czasie aprowizacji, nadal można je dodać po aprowizacji.

Ostrzeżenie o zabezpieczeniach

Ostrzeżenie

Dane użytkownika nie będą szyfrowane, a żaden proces na maszynie wirtualnej może wykonywać zapytania dotyczące tych danych. Nie należy przechowywać poufnych informacji w danych użytkownika.

Upewnij się, że masz najnowszy interfejs API usługi Azure Resource Manager, aby korzystać z nowych funkcji danych użytkownika. Zawartość powinna być zakodowana w formacie base64 przed przekazaniem do interfejsu API. Rozmiar nie może przekraczać 64 KB.

Tworzenie danych użytkownika dla maszyn wirtualnych/maszyn wirtualnych platformy Azure

Dodawanie danych użytkownika podczas tworzenia nowej maszyny wirtualnej

Użyj tego szablonu usługi Azure Resource Manager, aby utworzyć nową maszynę wirtualną z danymi użytkownika. Jeśli używasz interfejsu API REST, w przypadku pojedynczych maszyn wirtualnych dodaj element "UserData" do sekcji "properties" z żądaniem PUT, aby utworzyć maszynę wirtualną.

{
  "name": "testVM",
  "location": "West US",
  "properties": {
    "hardwareProfile": {
      "vmSize": "Standard_A1"
    },
    "storageProfile": {
      "osDisk": {
        "osType": "Windows",
        "name": "osDisk",
        "createOption": "Attach",
        "vhd": {
          "uri": "http://myaccount.blob.core.windows.net/container/directory/blob.vhd"
        }
      }
    },
    "userData": "c2FtcGxlIHVzZXJEYXRh",
    "networkProfile": { "networkInterfaces" : [ { "name" : "nic1" } ] },
  }
}

Dodawanie danych użytkownika podczas tworzenia nowego zestawu skalowania maszyn wirtualnych

Przy użyciu interfejsu API rest dodaj element "UserData" do sekcji "virtualMachineProfile" z żądaniem PUT podczas tworzenia zestawu skalowania maszyn wirtualnych.

{
  "location": "West US",
  "sku": {
    "name": "Standard_A1",
    "capacity": 1
  },
  "properties": {
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {
      "userData": "VXNlckRhdGE=",
      "osProfile": {
        "computerNamePrefix": "TestVM",
        "adminUsername": "TestUserName",
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "timeZone": "Dateline Standard Time"
        }
      },
      "storageProfile": {
        "osDisk": {
          "createOption": "FromImage",
          "caching": "ReadOnly"
        },
        "imageReference": {
          "publisher": "publisher",
          "offer": "offer",
          "sku": "sku",
          "version": "1.2.3"
        }
      },
      "networkProfile": {"networkInterfaceConfigurations":[{"name":"nicconfig1","properties":{"ipConfigurations":[{"name":"ip1","properties":{"subnet":{"id":"vmssSubnet0"}}}]}}]},
      "diagnosticsProfile": {
        "bootDiagnostics": {
          "enabled": true,
          "storageUri": "https://crputest.blob.core.windows.net"
        }
      }
    },
    "provisioningState": 0,
    "overprovision": false,
    "uniqueId": "00000000-0000-0000-0000-000000000000"
  }
}

Pobieranie danych użytkownika

Aplikacje uruchomione na maszynie wirtualnej mogą pobierać dane użytkownika z punktu końcowego usługi IMDS. Aby uzyskać szczegółowe informacje, zobacz przykładowy kod USŁUGI IMDS tutaj.

Klienci mogą pobierać istniejącą wartość danych użytkownika za pośrednictwem interfejsu API REST przy użyciu punktu końcowego $expand=userData (treść żądania może być pozostawiona pusta).

Pojedyncze maszyny wirtualne:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachines/{VMName}?$expand=userData"

Zestaw skalowania maszyn wirtualnych:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}?$expand=userData"

Maszyna wirtualna zestawu skalowania maszyn wirtualnych:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}/virtualmachines/{vmss instance id}?$expand=userData"

Aktualizowanie danych użytkownika

Za pomocą interfejsu API REST można użyć normalnego żądania PUT lub PATCH, aby zaktualizować dane użytkownika. Dane użytkownika są aktualizowane bez konieczności zatrzymywania lub ponownego uruchamiania maszyny wirtualnej.

PUT "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

PATCH "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

Właściwości maszyny wirtualnej w tych żądaniach powinny zawierać żądane pole UserData, w następujący sposób:

"properties": {
        "hardwareProfile": {
          "vmSize": "Standard_D1_v2"
        },
        "storageProfile": {
          "imageReference": {
            "sku": "2016-Datacenter",
            "publisher": "MicrosoftWindowsServer",
            "version": "latest",
            "offer": "WindowsServer"
          },
          "osDisk": {
            "caching": "ReadWrite",
            "managedDisk": {
              "storageAccountType": "StandardSSD_LRS"
            },
            "name": "vmOSdisk",
            "createOption": "FromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/{existing-nic-name}",
              "properties": {
                "primary": true
              }
            }
          ]
        },
        "osProfile": {
          "adminUsername": "{your-username}",
          "computerName": "{vm-name}",
          "adminPassword": "{your-password}"
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "storageUri": "http://{existing-storage-account-name}.blob.core.windows.net",
            "enabled": true
          }
        },
        "userData": "U29tZSBDdXN0b20gRGF0YQ=="
      } 

Uwaga

Jeśli w tym przypadku przekażesz pusty ciąg "userData", dane użytkownika zostaną usunięte.

Dane użytkownika i dane niestandardowe

Dane niestandardowe nadal działają tak samo jak dzisiaj. Pamiętaj, że nie można pobrać danych niestandardowych z imDS.

Dodawanie danych użytkownika do istniejącej maszyny wirtualnej

Jeśli masz istniejącą maszynę wirtualną/zestaw skalowania maszyn wirtualnych bez danych użytkownika, nadal możesz dodać dane użytkownika do tej maszyny wirtualnej przy użyciu poleceń aktualizacji, zgodnie z opisem w sekcji "Aktualizowanie danych użytkownika". Upewnij się, że uaktualnisz do najnowszej wersji interfejsu API usługi Azure Resource Manger.

Następne kroki

Wypróbuj usługę Azure Instance Metadata Service, dowiedz się, jak uzyskać metadane wystąpienia maszyny wirtualnej i dane użytkownika z punktu końcowego.