【问题标题】:Azure REST API does not return encryption settings for Virtual MachineAzure REST API 不返回虚拟机的加密设置
【发布时间】:2018-04-30 03:31:17
【问题描述】:

我的 Azure 帐户中有一个 16.04-LTS 的 Ubuntu 虚拟机,我正在尝试使用 Azure Disk Encryption 让这个虚拟机使用 this azure cli sample script。运行加密脚本时,Azure 门户显示其操作系统磁盘已加密。加密标头下有Enabled

但是,用于获取有关虚拟机信息的 Azure REST API (api link) 不会返回 properties.storageProfile.osDisk 下的 encryptionSettings。对于 api 版本 2017-03-302017-12-01,我尝试了 Model ViewModel View and Instance View。以下是 API 的部分响应:

{
    "name": "ubuntu",
    "properties": {
        "osProfile": {},
        "networkProfile": {},
        "storageProfile": {
            "imageReference": {
                "sku": "16.04-LTS",
                "publisher": "Canonical",
                "version": "latest",
                "offer": "UbuntuServer"
            },
            "osDisk": {
                "name": "ubuntu-OsDisk",
                "diskSizeGB": 30,
                "managedDisk": {
                    "storageAccountType": "Premium_LRS",
                    "id": "..."
                },
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "osType": "Linux"
            },
            "dataDisks": []
        },
        "diagnosticsProfile": {},
        "vmId": "",
        "hardwareProfile": {
            "vmSize": "Standard_B1s"
        },
        "provisioningState": "Succeeded"
    },
    "location": "eastus",
    "type": "Microsoft.Compute/virtualMachines",
    "id": ""
}

但对于我的其他加密 Windows 虚拟机,我得到了正确的响应,其中包含 properties.storageProfile.osDisk 中的 encryptionSettings

{
    "name": "win1",
    "properties": {
        "osProfile": {},
        "networkProfile": {},
        "storageProfile": {
            "imageReference": {
                "sku": "2016-Datacenter-smalldisk",
                "publisher": "MicrosoftWindowsServer",
                "version": "latest",
                "offer": "WindowsServer"
            },
            "osDisk": {
                "name": "win1_OsDisk_1",
                "diskSizeGB": 31,
                "managedDisk": {
                    "storageAccountType": "Premium_LRS",
                    "id": "..."
                },
                "encryptionSettings": {
                    "diskEncryptionKey": {
                        "secretUrl": "...",
                        "sourceVault": {
                            "id": "..."
                        }
                    },
                    "keyEncryptionKey": {
                        "keyUrl": "...",
                        "sourceVault": {
                            "id": "..."
                        }
                    },
                    "enabled": true
                },
                "caching": "ReadWrite",
                "createOption": "FromImage",
                "osType": "Windows"
            },
            "dataDisks": []
        },
        "diagnosticsProfile": {},
        "vmId": "...",
        "hardwareProfile": {
            "vmSize": "Standard_B1s"
        },
        "provisioningState": "Succeeded"
    },
    "location": "eastus",
    "type": "Microsoft.Compute/virtualMachines",
    "id": "..."
}

为什么虚拟机获取 API 没有为某些虚拟机返回 encryptionSettings?任何帮助将不胜感激。

【问题讨论】:

  • 加密在大约 3 分钟内完成。加密后已经一个多小时了。
  • 不,这不是它的工作原理;)你应该检查扩展状态,它会告诉你加密正在进行中
  • 你的意思是,如果扩展名AzureDiskEncryptionForLinuxprovisioning成功,我应该认为它是加密的?
  • 不,它只配置了扩展,之后它开始加密虚拟机。使用此Get-AzureRmVmDiskEncryptionStatus -ResourceGroupName $rgname -VMName $vmName 获取状态
  • 我正在使用 Azure CLi 检查加密状态az vm encryption show --resource-group $rgname --name $vmName --query [osDisk] -o tsv,它显示EncryptionInProgress

标签: rest azure encryption azure-virtual-machine


【解决方案1】:

我使用以下命令创建虚拟机。

az vm create \
    --resource-group shuivm \
    --name shuivm \
    --image Canonical:UbuntuServer:16.04-LTS:latest \
    --admin-username azureuser \
    --generate-ssh-keys

当我使用以下 API 时,我可以获得加密设置。

https://management.azure.com/subscriptions/**********/resourceGroups/shuivm/providers/Microsoft.Compute/virtualMachines/shuivm?api-version=2017-03-30"

注意:当操作系统加密成功后,我可以使用API​​获取加密设置。

【讨论】:

  • 只是检查提供的信息是否有用。如果您需要进一步的帮助,请告诉我。
【解决方案2】:

这是因为 Azure VM 有两种类型的静态磁盘加密,并且它们未在 Azure 管理 API 的同一部分中报告:

  • 服务器端加密:当您获得 vm 详细信息时,您可以在 VM/compute API 的 encryptionSettings 部分看到。它将显示您是使用客户管理的密钥还是平台管理的密钥进行加密
  • ADE:Azure 磁盘加密实际上是一个 VM 扩展,因此您可以在 VM 扩展 API 中找到它。

见:https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineextensions/list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多