다음을 통해 공유


Set-AzureRmVMDiskEncryptionExtension

Azure에서 실행 중인 IaaS 가상 머신에서 암호화를 사용하도록 설정합니다.

Warning

AzureRM PowerShell 모듈은 2024년 2월 29일부터 공식적으로 사용되지 않습니다. 사용자는 지속적인 지원 및 업데이트를 보장하기 위해 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>]

Description

Set-AzureRmVMDiskEncryptionExtension cmdlet을 사용하면 Azure에서 실행 중인 IaaS(Infrastructure as a Service) 가상 머신에서 암호화를 사용할 수 있습니다. 이 cmdlet은 가상 머신에 디스크 암호화 확장을 설치하여 암호화를 사용하도록 설정합니다. Name 매개 변수를 지정하지 않으면 Windows 운영 체제를 실행하는 가상 머신에 대한 기본 이름 AzureDiskEncryption 또는 Linux 가상 머신용 AzureDiskEncryptionForLinux를 사용하는 확장이 설치됩니다. 이 cmdlet은 암호화를 사용하도록 설정하는 단계 중 하나로서 가상 머신을 다시 시작해야 하므로 사용자의 확인이 필요합니다. 이 cmdlet을 실행하기 전에 가상 머신에 작업을 저장하는 것이 좋습니다.

예제

예제 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 클라이언트 ID 및 클라이언트 암호를 사용하여 암호화 사용

$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 클라이언트 ID 및 클라이언트 암호를 사용하여 암호화를 사용하도록 설정합니다.

예제 4: Microsoft Entra 클라이언트 ID 및 클라이언트 인증 지문을 사용하여 암호화 사용

$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 클라이언트 ID 및 클라이언트 인증 지문을 사용하여 암호화를 사용하도록 설정합니다.

예제 5: Microsoft Entra 클라이언트 ID, 클라이언트 암호를 사용하여 암호화 사용 및 키 암호화 키를 사용하여 디스크 암호화 키 래핑

$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 클라이언트 ID, 클라이언트 암호를 사용하여 암호화를 사용하도록 설정하고 키 암호화 키를 사용하여 디스크 암호화 키를 래핑합니다.

예제 6: Microsoft Entra 클라이언트 ID, 클라이언트 인증서 지문을 사용하여 암호화 사용 및 키 암호화 키를 사용하여 디스크 암호화 래핑

$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 클라이언트 ID, 클라이언트 인증서 지문을 사용하여 암호화를 사용하도록 설정하고 키 암호화 키를 사용하여 디스크 암호화 키를 래핑하는 예제입니다.

매개 변수

-AadClientCertThumbprint

KeyVault에 비밀을 쓸 수 있는 권한이 있는 Microsoft Entra 애플리케이션 클라이언트 인증서의 지문을 지정합니다. 필수 조건으로 Microsoft Entra 클라이언트 인증서는 이전에 가상 머신의 로컬 컴퓨터 my 인증서 저장소에 배포되어야 합니다. Add-AzureRmVMSecret cmdlet을 사용하여 Azure의 가상 머신에 인증서를 배포할 수 있습니다. 자세한 내용은 Add-AzureRmVMSecret cmdlet 도움말을 참조하세요. 인증서는 이전에 내 인증서 저장소를 가상 머신 로컬 컴퓨터에 배포해야 합니다.

형식:String
Position:3
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-AadClientID

KeyVault에 비밀을 쓸 수 있는 권한이 있는 Microsoft Entra 애플리케이션의 클라이언트 ID를 지정합니다.

형식:String
Position:2
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-AadClientSecret

KeyVault에 비밀을 쓸 수 있는 권한이 있는 Microsoft Entra 애플리케이션의 클라이언트 비밀을 지정합니다.

형식:String
Position:3
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

형식:SwitchParameter
별칭:cf
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-DefaultProfile

Azure와의 통신에 사용되는 자격 증명, 계정, 테넌트 및 구독입니다.

형식:IAzureContextContainer
별칭:AzureRmContext, AzureCredential
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-DisableAutoUpgradeMinorVersion

이 cmdlet은 확장의 부 버전 자동 업그레이드를 사용하지 않도록 설정함을 나타냅니다.

형식:SwitchParameter
Position:14
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-DiskEncryptionKeyVaultId

가상 머신 암호화 키를 업로드할 KeyVault리소스 ID를 지정합니다.

형식:String
Position:5
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-DiskEncryptionKeyVaultUrl

가상 머신 암호화 키를 업로드할 KeyVault URL을 지정합니다.

형식: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

확장 유형입니다. Windows VM의 경우 "AzureDiskEncryption"의 기본값을 재정의하고 Linux VM의 경우 "AzureDiskEncryptionForLinux"를 재정의하려면 이 매개 변수를 지정합니다.

형식: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의 리소스 ID를 지정합니다. 전체 버전 URL이어야 합니다.

형식:String
Position:7
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Name

확장을 나타내는 Azure Resource Manager 리소스의 이름을 지정합니다. 기본값은 Windows 운영 체제를 실행하는 가상 머신의 경우 AzureDiskEncryption이거나 Linux 가상 머신용 AzureDiskEncryptionForLinux입니다.

형식:String
별칭: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 cmdlet을 사용하여 사용된 이전 시퀀스 번호를 검색할 수 있습니다.

형식:String
Position:10
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-SkipVmBackup

Linux VM에 대한 백업 만들기 건너뛰기

형식:SwitchParameter
Position:15
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-TypeHandlerVersion

암호화 확장의 버전을 지정합니다.

형식:String
별칭:HandlerVersion, Version
Position:11
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-VMName

가상 머신의 이름을 지정합니다.

형식:String
별칭:ResourceName
Position:1
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-VolumeType

암호화 작업을 수행할 가상 머신 볼륨의 유형을 지정합니다. Windows 운영 체제를 실행하는 가상 머신에 허용되는 값은 모두, OS 및 데이터입니다. Linux 가상 머신에 허용되는 값은 다음과 같습니다. Linux 배포에서 지원되는 경우 모두, OS 및 데이터입니다.

형식:String
허용되는 값:OS, Data, All
Position:9
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

형식:SwitchParameter
별칭:wi
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

String

SwitchParameter

출력

PSAzureOperationResponse