Set-AzureRmVMDiskEncryptionExtension
Включает шифрование на работающей виртуальной машине IaaS в Azure.
Предупреждение
Модуль AzureRM PowerShell официально объявлен устаревшим с 29 февраля 2024 г. Пользователям рекомендуется выполнить миграцию из AzureRM в модуль Az PowerShell, чтобы обеспечить постоянную поддержку и обновления.
Хотя модуль AzureRM по-прежнему может функционировать, он больше не поддерживается или не поддерживается, размещая любое постоянное использование на усмотрение и риск пользователя. Ознакомьтесь с нашими ресурсами миграции, чтобы получить рекомендации по переходу в модуль Az.
Синтаксис
Set-AzureRmVMDiskEncryptionExtension
[-ResourceGroupName] <String>
[-VMName] <String>
[-DiskEncryptionKeyVaultUrl] <String>
[-DiskEncryptionKeyVaultId] <String>
[[-KeyEncryptionKeyUrl] <String>]
[[-KeyEncryptionKeyVaultId] <String>]
[[-KeyEncryptionAlgorithm] <String>]
[[-VolumeType] <String>]
[[-SequenceVersion] <String>]
[[-TypeHandlerVersion] <String>]
[[-Name] <String>]
[[-Passphrase] <String>]
[-Force]
[-DisableAutoUpgradeMinorVersion]
[-SkipVmBackup]
[-ExtensionType <String>]
[-ExtensionPublisherName <String>]
[-EncryptFormatAll]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
[-ResourceGroupName] <String>
[-VMName] <String>
[-AadClientID] <String>
[-AadClientSecret] <String>
[-DiskEncryptionKeyVaultUrl] <String>
[-DiskEncryptionKeyVaultId] <String>
[[-KeyEncryptionKeyUrl] <String>]
[[-KeyEncryptionKeyVaultId] <String>]
[[-KeyEncryptionAlgorithm] <String>]
[[-VolumeType] <String>]
[[-SequenceVersion] <String>]
[[-TypeHandlerVersion] <String>]
[[-Name] <String>]
[[-Passphrase] <String>]
[-Force]
[-DisableAutoUpgradeMinorVersion]
[-SkipVmBackup]
[-ExtensionType <String>]
[-ExtensionPublisherName <String>]
[-EncryptFormatAll]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmVMDiskEncryptionExtension
[-ResourceGroupName] <String>
[-VMName] <String>
[-AadClientID] <String>
[-AadClientCertThumbprint] <String>
[-DiskEncryptionKeyVaultUrl] <String>
[-DiskEncryptionKeyVaultId] <String>
[[-KeyEncryptionKeyUrl] <String>]
[[-KeyEncryptionKeyVaultId] <String>]
[[-KeyEncryptionAlgorithm] <String>]
[[-VolumeType] <String>]
[[-SequenceVersion] <String>]
[[-TypeHandlerVersion] <String>]
[[-Name] <String>]
[[-Passphrase] <String>]
[-Force]
[-DisableAutoUpgradeMinorVersion]
[-SkipVmBackup]
[-ExtensionType <String>]
[-ExtensionPublisherName <String>]
[-EncryptFormatAll]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Set-AzureRmVMDiskEncryptionExtension включает шифрование на работающей инфраструктуре как услуга (IaaS) виртуальной машины в Azure. Этот командлет включает шифрование путем установки расширения шифрования дисков на виртуальной машине. Если параметр Name не указан, устанавливается расширение с именем AzureDiskEncryption по умолчанию для виртуальных машин под управлением операционной системы Windows или AzureDiskEncryptionForLinux для виртуальных машин Linux. Этот командлет требует подтверждения от пользователей в качестве одного из шагов, чтобы включить шифрование, требует перезагрузки виртуальной машины. Перед запуском этого командлета рекомендуется сохранить работу на виртуальной машине.
Примеры
Пример 1. Включение шифрования
$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
В этом примере показано включение шифрования без указания учетных данных AD.
Пример 2. Включение шифрования с помощью входных данных конвейера
$params = New-Object PSObject -Property @{
ResourceGroupName = "[resource-group-name]"
VMName = "[vm-name]"
DiskEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
DiskEncryptionKeyVaultUrl = "https://[keyvault-name].vault.azure.net"
KeyEncryptionKeyVaultId = "/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]"
KeyEncryptionKeyUrl = "https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]"
VolumeType = "All"
}
$params | Set-AzureRmVmDiskEncryptionExtension
В этом примере показано, как отправлять параметры с помощью конвейерных входных данных, чтобы включить шифрование без указания учетных данных AD.
Пример 3. Включение шифрования с помощью идентификатора клиента Microsoft Entra и секрета клиента
$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
Этот пример включает шифрование с помощью идентификатора клиента Microsoft Entra и секрета клиента.
Пример 4. Включение шифрования с помощью идентификатора клиента Microsoft Entra и отпечатка сертификации клиента
$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment
#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName
#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
Этот пример включает шифрование с помощью идентификатора клиента Microsoft Entra и отпечатков сертификации клиента.
Пример 5. Включение шифрования с помощью идентификатора клиента Microsoft Entra, секрета клиента и шифрования диска с помощью ключа шифрования ключей
$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
$AADClientID = "<clientID of your Azure AD app>"
$AADClientSecret = "<clientSecret of your Azure AD app>"
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGName -VMName $VMName -AadClientID $AADClientID -AadClientSecret $AADClientSecret -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId
Этот пример включает шифрование с помощью идентификатора клиента Microsoft Entra, секрета клиента и шифрования диска с помощью ключа шифрования ключей.
Пример 6. Включение шифрования с помощью идентификатора клиента Microsoft Entra, отпечатка сертификата клиента и шифрования диска с помощью ключа шифрования ключей
$RGName = "MyResourceGroup"
$VMName = "MyTestVM"
#The KeyVault must have enabledForDiskEncryption property set on it
$VaultName= "MyKeyVault"
$KeyVault = Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEKName = "MyKeyEncryptionKey"
$KEK = Add-AzureKeyVaultKey -VaultName $VaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
# create Azure AD application and associate the certificate
$CertPath = "C:\certificates\examplecert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzureRmADApplication -DisplayName "<Your Application Display Name>" -HomePage "<https://YourApplicationHomePage>" -IdentifierUris "<https://YouApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId
$AADClientID = $AzureAdApplication.ApplicationId
$AADClientCertThumbprint= $Cert.Thumbprint
#Upload pfx to KeyVault
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($FileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($JSONObject)
$JsonEncoded = [System.Convert]::ToBase64String($JSONObjectBytes)
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $VaultName-Name $KeyVaultSecretName -SecretValue $Secret
Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ResourceGroupName $RGName -EnabledForDeployment
#deploy cert to VM
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $VaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $RGName).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $RGName -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $RGName
#Enable encryption on the virtual machine using Azure AD client ID and client cert thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $RGname -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId
Этот пример включает шифрование с помощью идентификатора клиента Microsoft Entra, отпечатка сертификата клиента и шифрования диска с помощью ключа шифрования ключей.
Параметры
-AadClientCertThumbprint
Указывает отпечаток сертификата клиента приложения Microsoft Entra с разрешениями на запись секретов в KeyVault.
В качестве предварительных требований сертификат клиента Microsoft Entra должен быть ранее развернут в хранилище сертификатов локального компьютера my
виртуальной машины.
Командлет Add-AzureRmVMSecret можно использовать для развертывания сертификата на виртуальной машине в Azure.
Дополнительные сведения см. в справке по командлету Add-AzureRmVMSecret .
Сертификат должен быть ранее развернут на локальном компьютере виртуальной машины, в хранилище сертификатов.
Тип: | String |
Position: | 3 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-AadClientID
Указывает идентификатор клиента приложения Microsoft Entra, имеющего разрешения на запись секретов в KeyVault.
Тип: | String |
Position: | 2 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-AadClientSecret
Указывает секрет клиента приложения Microsoft Entra с разрешениями на запись секретов в KeyVault.
Тип: | String |
Position: | 3 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-DefaultProfile
Учетные данные, учетная запись, клиент и подписка, используемые для взаимодействия с Azure.
Тип: | IAzureContextContainer |
Aliases: | AzureRmContext, AzureCredential |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-DisableAutoUpgradeMinorVersion
Указывает, что этот командлет отключает автоматическое обновление дополнительной версии расширения.
Тип: | SwitchParameter |
Position: | 14 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-DiskEncryptionKeyVaultId
Указывает идентификатор ресурса KeyVault , в который должны быть отправлены ключи шифрования виртуальной машины.
Тип: | String |
Position: | 5 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-DiskEncryptionKeyVaultUrl
Указывает URL-адрес KeyVault , в который должны быть отправлены ключи шифрования виртуальной машины.
Тип: | String |
Position: | 4 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-EncryptFormatAll
Шифрование всех дисков данных, которые еще не зашифрованы
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ExtensionPublisherName
Имя издателя расширения. Укажите этот параметр только для переопределения значения по умолчанию Microsoft.Azure.Security.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-ExtensionType
Тип расширения. Укажите этот параметр, чтобы переопределить значение по умолчанию azureDiskEncryption для виртуальных машин Windows и AzureDiskEncryptionForLinux для виртуальных машин Linux.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Force
Принудительное выполнение команды без запроса на подтверждение пользователем.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-KeyEncryptionAlgorithm
Указывает алгоритм, используемый для упаковки и распаковки ключа ключа виртуальной машины. Значением по умолчанию является RSA-OAEP.
Тип: | String |
Допустимые значения: | RSA-OAEP, RSA1_5 |
Position: | 8 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-KeyEncryptionKeyUrl
Указывает URL-адрес ключа шифрования ключа, который используется для упаковки и распаковки ключа шифрования виртуальной машины. Это должен быть полный URL-адрес версии.
Тип: | String |
Position: | 6 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-KeyEncryptionKeyVaultId
Указывает идентификатор ресурса KeyVault, содержащий ключ шифрования ключей, используемый для упаковки и отмены шифрования виртуальной машины. Это должен быть полный URL-адрес версии.
Тип: | String |
Position: | 7 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Name
Указывает имя ресурса Azure Resource Manager, представляющего расширение. Значением по умолчанию является AzureDiskEncryption для виртуальных машин под управлением операционной системы Windows или AzureDiskEncryptionForLinux для виртуальных машин Linux.
Тип: | String |
Aliases: | ExtensionName |
Position: | 12 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Passphrase
Указывает парольную фразу, используемую только для шифрования виртуальных машин Linux. Этот параметр не используется для виртуальных машин, работающих под управлением операционной системы Windows.
Тип: | String |
Position: | 13 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-ResourceGroupName
Указывает имя группы ресурсов виртуальной машины.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SequenceVersion
Указывает порядковый номер операций шифрования для виртуальной машины. Это уникально для каждой операции шифрования, выполняемой на одной виртуальной машине. Командлет Get-AzureRmVMExtension можно использовать для получения предыдущего номера последовательности, который использовался.
Тип: | String |
Position: | 10 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SkipVmBackup
Пропуск создания резервного копирования для виртуальных машин Linux
Тип: | SwitchParameter |
Position: | 15 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-TypeHandlerVersion
Указывает версию расширения шифрования.
Тип: | String |
Aliases: | HandlerVersion, Version |
Position: | 11 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-VMName
Указывает имя виртуальной машины.
Тип: | String |
Aliases: | ResourceName |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-VolumeType
Указывает тип томов виртуальных машин для выполнения операции шифрования. Допустимые значения для виртуальных машин под управлением операционной системы Windows: все, ОС и данные. Допустимые значения для виртуальных машин Linux приведены следующим образом: все, ОС и данные при поддержке дистрибутива Linux.
Тип: | String |
Допустимые значения: | OS, Data, All |
Position: | 9 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |