Поделиться через


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

Входные данные

String

SwitchParameter

Выходные данные

PSAzureOperationResponse