#azure #azure-virtual-machine
#azure #azure-virtual-machine
Вопрос:
Я запускаю следующий скрипт:
$keyVault = Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $rgName;
$diskEncryptionKeyVaultUrl = $keyVault.VaultUri;
$keyVaultResourceId = $keyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $keyVaultName -Name myKey).Key.kid;
Set-AzVMDiskEncryptionExtension -ResourceGroupName $rgName `
-VMName "myVM" `
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $keyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $keyVaultResourceId
которое возвращает следующее примерно через 1 минуту обработки:
Set-AzureRmVmDiskEncryptionExtension : длительная операция завершилась неудачно со статусом «Сбой». Дополнительная информация:»Виртуальная машина сообщила о сбое при обработке расширения AzureDiskEncryption». Сообщение об ошибке: «Не удалось отправить данные DiskEncryptionData, проверить ввод по умолчанию, идентификаторы ресурсов и повторить операцию шифрования».’ Код ошибки: VMExtensionProvisioningError Сообщение об ошибке: виртуальная машина сообщила о сбое при обработке расширения ‘AzureDiskEncryption’. Сообщение об ошибке: «Не удалось отправить данные DiskEncryptionData, проверить вводы KeyVault, идентификаторы ресурсов и повторить операцию шифрования». Ошибка Target: Время начала: 23/2/19 14:10:59 Время окончания: 23/2/19 14:10:59
я проверил, что все значения правильно переданы команде set и никакие значения null не передаются.
Комментарии:
1. включен ли kv для шифрования диска? есть ли у вас разрешения на kv?
2. под фактическим ключом подписаны флажки encrypt / decrypt, sign, verify, wrap и unwrap key, но я не могу найти свойство с надписью enable для шифрования диска? это где-то еще? я создал хранилище ключей azure, ключ, виртуальную машину и жесткий диск и запустил команду powershell под той же учетной записью. есть ли способ убедиться, что у меня есть разрешения на доступ к хранилищу ключей? я могу получить к нему доступ через графический интерфейс
3. в разделе разрешения есть расширенные разрешения, вы можете включить KV для шифрования диска там
4. я смог найти политику доступа в хранилище ключей и заметил, что в соответствии с разрешениями ключа криптографические операции были запрещены. однако даже после пометки всех из них (шифровать, дешифровать, подписывать, проверять, переносить ключ, разворачивать ключ) выдается одно и то же сообщение об ошибке. через какое время изменения вступают в силу или мгновенно?
5. вам также нужны расширенные политики доступа, без них это не сработает. user-images.githubusercontent.com/2538465 /…
Ответ №1:
в этом случае OP необходимо включить хранилище ключей для шифрования диска в соответствии с расширенными политиками доступа.
Ответ №2:
У меня была эта проблема, но я несколько дней ломал голову над приведенными ниже шагами, которые устранили мою проблему.
- Проверьте значения переменных $KeyVault, $DiskEncryptionKeyVaultUrl и $KeyVaultResourceId и убедитесь, что они не равны null или пустым.
- Если шаг 1 завершен, тщательно проверьте процесс создания хранилища ключей и убедитесь, находится ли оно в том же регионе, что и виртуальная машина, и включено ли шифрование диска:Set-AzureRmKeyVaultAccessPolicy -VaultName $keyVaultName — EnabledForDiskEncryption
Комментарии:
1. Поначалу включение этой политики не решило проблему для меня. Я запустил скрипт в облачной оболочке Azure и обнаружил, что сеанс, похоже, кэширует настройки keyvault. После того, как я закрыл сеанс и открыл новый, он сразу же заработал.
Ответ №3:
Если вы все еще сталкиваетесь с проблемой, вы можете попробовать это:
- Перейдите на диск виртуальной машины, который необходимо зашифровать.
- Нажмите Идентификация
- Измените статус на «ВКЛЮЧЕНО» для назначенной системы или пользователя.
Затем выполните приведенные ниже команды. Оно доступно с объяснением на https://learn.microsoft.com/en-us/azure/virtual-machines/windows/encrypt-disks
$KeyVault = Get-AzKeyVault -имя_хранения $keyVaultName -имя_ресурсной группы $rgName;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$keyVaultResourceId = $KeyVault.Идентификатор ресурса;
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -Имя хранилища $keyVaultName -Имя MyKey).Key.kid;
Set-AzVMDiskEncryptionExtension -ResourceGroupName $rgName `
-VMName "myVM"
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $keyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $keyVaultResourceId$