Microsoft Entra ID を使用して ADE 用の Key Vault を作成する

Important

Azure Disk Encryption は、 2028 年 9 月 15 日に廃止される予定です。 その日まで、中断することなく Azure Disk Encryption を引き続き使用できます。 2028 年 9 月 15 日に、ADE 対応ワークロードは引き続き実行されますが、暗号化されたディスクは VM の再起動後にロック解除に失敗し、サービスが中断されます。

新しい VM の ホストで暗号化 を使用するか、 コンフィデンシャル コンピューティング ワークロード用の OS ディスク暗号化を使用して機密 VM サイズ を検討します。 サービスの中断を回避するために、すべての ADE 対応 VM (バックアップを含む) を提供終了日より前にホストで暗号化に移行する必要があります。 詳細については、「 Azure Disk Encryption からホストでの暗号化への移行 」を参照してください。

適用対象: ✔️ Windows VM

Azure Disk Encryption の新しいリリースでは、VM ディスク暗号化を有効にするために Microsoft Entra アプリケーション パラメーターを指定する必要はありません。 新しいリリースでは、暗号化の有効化手順中にMicrosoft Entra資格情報を指定する必要がなくなりました。 Microsoft Entra のアプリケーション パラメーターを使用せずに、新しいリリースを使用してすべての新しい VM を暗号化する。 新しいリリースを使用して VM ディスク暗号化を有効にする手順については、Azure Disk Encryptionを参照してください。 Microsoft Entraアプリケーション パラメーターで既に暗号化されている VM は引き続きサポートされています。 Microsoft Entra構文を使用して、これらの VM を維持し続けます。

Azure Disk Encryption では、Azure Key Vault を使用して、ディスク暗号化キーとシークレットを制御および管理します。 キー コンテナーの詳細については、「Azure Key Vault の概要」と「キー コンテナーのセキュリティ保護」を参照してください。

Microsoft Entra ID (以前のリリース) でAzure Disk Encryptionで使用するキー コンテナーの作成と構成には、次の 4 つの手順が含まれます。

  1. キー コンテナーを作成します。
  2. Microsoft Entra アプリケーションとサービス プリンシパルを設定します。
  3. Microsoft Entra アプリのキー コンテナー アクセス ポリシーを設定します。
  4. キー コンテナーの高度なアクセス ポリシーを設定します。

キー暗号化キー (KEK) を生成またはインポートすることもできます。

ツールをインストールしてAzureに接続する方法については、Azure Disk Encryptionの主要なキー コンテナーの作成と構成に関する記事参照してください。

キー コンテナーを作成する

Azure Disk Encryption は Azure Key Vault と統合されており、Key Vault サブスクリプションでディスクの暗号化キーとシークレットを制御および管理するのに役立ちます。 Azure Disk Encryption ではキー コンテナーを作成することも、既存のキー コンテナーを使用することもできます。 キー コンテナーの詳細については、「Azure Key Vault の概要」と「キー コンテナーのセキュリティ保護」を参照してください。 Resource Manager テンプレート、Azure PowerShell、または Azure CLI を使用してキー コンテナーを作成できます。

警告

暗号化シークレットがリージョンの境界を越えないようにするには、Azure Disk Encryptionキー コンテナーと VM が同じリージョンに存在する必要があります。 暗号化する VM と同じリージョンにキー コンテナーを作成して使用します。

PowerShell を使用してキー コンテナーを作成する

Azure PowerShellと New-AzKeyVault コマンドレットを使用して、キー コンテナーを作成できます。 その他のKey Vaultコマンドレットについては、Az.KeyVault を参照してください。

  1. 必要に応じて、New-AzResourceGroup を使用して新しいリソース グループを作成します。 データセンターの場所を一覧表示するには、Get-AzLocation を使用します。

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. New-AzKeyVault を使用して新しいキー コンテナーを作成する

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. ディスクを暗号化するときに後で使用するために返される コンテナー名リソース グループ名リソース IDコンテナー URIおよびオブジェクト ID をメモします。

Azure CLIを使用してキー コンテナーを作成する

Azure CLIと az keyvault コマンドを使用して、キー コンテナーを管理できます。 キー コンテナーを作成するには、az keyvault create を使用します。

  1. 必要に応じて、az group create を使用して新しいリソース グループを作成します。 場所の一覧を表示するには、az account list-locations を使用します

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. az keyvault create を使用して新しいキー コンテナーを作成します。

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. 後で使用するために返される コンテナー名 (名前)、 リソース グループ名リソース ID (ID)、 コンテナー URIおよびオブジェクト ID を メモします。

Resource Manager テンプレートを使用してキー コンテナーを作成する

Resource Manager テンプレートを使用してキー コンテナーを作成できます。

  1. Azure クイックスタート テンプレートで [Azure にデプロイ] を選択します。
  2. サブスクリプション、リソース グループ、リソース グループの場所、キー コンテナー名、オブジェクト ID、法律条項、契約を選択し、[ 購入] を選択します。

Microsoft Entra アプリとサービス プリンシパルを設定する

Azure で実行中の VM で暗号化を有効にする必要がある場合、Azure Disk Encryption によって暗号化キーが生成され、キー コンテナーに書き込まれます。 キー コンテナー内の暗号化キーを管理するには、Microsoft Entra 認証が必要です。 この目的のために Microsoft Entra アプリケーションを作成します。 認証には、クライアント シークレット ベースの認証か、クライアント証明書ベースの Microsoft Entra 認証を使用できます。

Azure PowerShellを使用してMicrosoft Entraアプリとサービス プリンシパルを設定する

次のコマンドを実行するには、Azure PowerShell モジュールを取得して使用します。

  1. New-AzADApplication PowerShell コマンドレットを使用して Microsoft Entra アプリケーションを作成します。 MyApplicationHomePage と MyApplicationUri には、任意の値を指定できます。

    $aadClientSecret = "My AAD client secret"
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force
    $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
    
  2. $azureAdApplication.ApplicationIdはMicrosoft Entraクライアント ID であり、$aadClientSecretは後でAzure Disk Encryptionを有効にするために使用するクライアント シークレットです。 Microsoft Entra クライアント シークレットを適切に保護します。 $azureAdApplication.ApplicationIdを実行すると、アプリケーション ID が表示されます。

Azure CLIを使用してMicrosoft Entraアプリとサービス プリンシパルを設定する

サービス プリンシパルは、Azure CLIと az ad sp コマンドを使用して管理できます。 詳細については、「Azure サービス プリンシパルの作成」を参照してください。

  1. 新しいサービス プリンシパルを作成します。

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. 返される appId は、他のコマンドで使用されるMicrosoft Entraクライアント ID です。 これは、az keyvault set-policy に使用する SPN でもあります。 パスワードは、後でAzure Disk Encryptionを有効にするために使用するクライアント シークレットです。 Microsoft Entra クライアント シークレットを適切に保護します。

Azure portal を使用して Microsoft Entra アプリとサービス プリンシパルを設定する

リソースにアクセスできる Microsoft Entra アプリケーションとサービス プリンシパルをポータルで作成する」に記載されている手順を使用して、Microsoft Entra アプリケーションを作成します。 これらの各手順では、記事セクションに直接移動して完了します。

  1. 必要なアクセス許可を確認する
  2. Microsoft Entra アプリケーションを作成する
    • アプリケーションの作成時には任意の名前とサインオン URL を使用できます。
  3. アプリケーション ID と認証キーを取得します
    • 認証キーはクライアント シークレットであり、Set-AzVMDiskEncryptionExtension の AadClientSecret として使用されます。
    • 認証キーは、Microsoft Entra ID にサインインするための資格情報としてアプリケーションによって使用されます。 Azure portal では、このシークレットはキーと呼ばれますが、キー コンテナーとは関係ありません。 このシークレットを適切にセキュリティ保護します。
    • アプリケーション ID は、後で Set-AzVMDiskEncryptionExtension の AadClientId として、および Set-AzKeyVaultAccessPolicy の ServicePrincipalName として使用されます。

Microsoft Entra アプリのキー コンテナー アクセス ポリシーを設定する

指定された Key Vault に暗号化シークレットを書き込むには、Key Vault にシークレットを書き込むアクセス許可を持つ Microsoft Entra アプリケーションのクライアント ID とクライアント シークレットが Azure Disk Encryption に必要です。

Azure Disk Encryption では、Microsoft Entra クライアント アプリケーションに対して、以下のアクセス ポリシー (WrapKey および Set アクセス許可) を構成する必要があります。

Azure PowerShellを使用して、Microsoft Entra アプリのキー コンテナー アクセス ポリシーを設定する

Microsoft Entra アプリケーションには、コンテナー内のキーまたはシークレットへのアクセス権が必要です。 Set-AzKeyVaultAccessPolicy コマンドレットを使用してクライアント ID (アプリケーションの登録時に生成されたもの) を –ServicePrincipalName パラメーター値として使用し、アプリケーションにアクセス許可を付与します。 詳細については、ブログ記事「Azure Key Vault - ステップ バイ ステップ」を参照してください。

  1. PowerShell を使用して、AD アプリケーションのキー コンテナー アクセス ポリシーを設定します。

    $keyVaultName = 'MySecureVault'
    $aadclient ID = 'MyAadAppclient ID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Azure CLIを使用して、Microsoft Entra アプリのキー コンテナー アクセス ポリシーを設定する

az keyvault set-policy を使用してアクセス ポリシーを設定します。 詳細については、「CLI 2.0 を使用した Key Vault の管理」を参照してください。

次のコマンドを使用して、Azure CLI を使用して作成したサービス プリンシパルに、シークレットの取得およびキーのラップを行うためのアクセス権を付与します。

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Microsoft Entra client ID>" --key-permissions wrapKey --secret-permissions set

ポータルを使用して、Microsoft Entra アプリのキー コンテナー アクセス ポリシーを設定する

  1. キー コンテナーを使用してリソース グループを開きます。
  2. キー コンテナーを選択し、[ アクセス ポリシー] に移動し、[ 新規追加] を選択します。
  3. [プリンシパルの選択] で、作成した Microsoft Entra アプリケーションを検索して選択します。
  4. キーのアクセス許可 で、暗号化操作 の下にある キーの折り返し をチェックします。
  5. シークレットのアクセス許可 については、シークレット管理操作 の下の 設定 を確認します。
  6. [OK] を選択してアクセス ポリシーを保存します。

Azure Key Vault の [暗号化操作] - [キーを折り返す]

Azure Key Vault の [シークレットのアクセス許可] - [設定]

キー コンテナーの高度なアクセス ポリシーを設定する

ボリュームの起動と暗号化解除のために VM で使用できるように、Azure プラットフォームはキー コンテナー内の暗号化キーまたはシークレットにアクセスする必要があります。 キー コンテナーでディスク暗号化を有効にしてください。そうしないと、デプロイは失敗します。

Azure PowerShellを使用して Key Vault の高度なアクセス ポリシーを設定する

キー コンテナーの PowerShell コマンドレット Set-AzKeyVaultAccessPolicy を使用して、キー コンテナーのディスク暗号化を有効にします。

  • ディスク暗号化のKey Vaultを有効にする: Azure Disk Encryptionには EnabledForDiskEncryption が必要です。

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • 必要に応じて Key Vault のデプロイを有効にする: 仮想マシンの作成時など、このキー コンテナーがリソース作成時に参照される場合、Microsoft.Compute リソース プロバイダーがこのキー コンテナーからシークレットを取得できるようにします。

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • 必要に応じて Key Vault のテンプレートのデプロイを有効にする: テンプレートのデプロイでこのキー コンテナーが参照されるとき、Azure Resource Manager がこのキー コンテナーからシークレットを取得できるようにします。

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Azure CLIを使用してキー コンテナーの高度なアクセス ポリシーを設定する

az keyvault update を使用してキー コンテナーのディスク暗号化を有効にします。

  • Key Vault のディスク暗号化を有効にする: Enabled-for-disk-encryption が必要です。

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • 必要に応じて Key Vault のデプロイを有効にする: シークレットとして保存されている証明書を仮想マシンがコンテナーから取得できるようにします。

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • 必要に応じて Key Vault のテンプレート デプロイを有効にする:Resource Manager がコンテナーからシークレットを取得できるようにします。

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Azure portal からキー コンテナーの高度なアクセス ポリシーを設定する

  1. キー コンテナーを選択し、[ アクセス ポリシー] に移動し、 クリックして高度なアクセス ポリシーを表示します
  2. [ボリューム暗号化に対して Azure Disk Encryption へのアクセスを有効にする] というボックスをオンにします。
  3. 必要に応じて、[デプロイのAzure 仮想マシンへのアクセス有効にする] または [テンプレートのデプロイのAzure Resource Managerへのアクセスを有効にする] を選択します。
  4. [保存] を選択します。

Azure キー コンテナーの高度なアクセス ポリシー

キー暗号化キーを設定する (省略可能)

暗号化キーのセキュリティ層を強化するためにキー暗号化キー (KEK) を使用する場合は、キー コンテナーに KEK を追加します。 Add-AzKeyVaultKey コマンドレットを使用して、キー コンテナーにキー暗号化キーを作成します。 オンプレミスのキー管理 HSM から KEK をインポートすることもできます。 詳細については、Key Vaultドキュメントを参照してください。 キー暗号化キーが指定されると、Azure Disk Encryption は、Key Vault に書き込む前に、そのキーを使用して暗号化シークレットをラップします。

  • キーを生成するときは、RSA キーの種類を使用します。 Azure Disk Encryptionでは、楕円曲線キーの使用はまだサポートされていません。

  • キー コンテナー シークレットと KEK URL はバージョン管理する必要があります。 Azure では、このバージョン管理の制限が適用されます。 有効なシークレットと KEK URL については、次の例を参照してください。

  • 有効なシークレット URL の例: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • 有効な KEK URL の例: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • Azure Disk Encryption では、キー コンテナー シークレットと KEK URL の一部としてポート番号を指定することはできません。 サポートされていないキー コンテナー URL とサポートされているキー コンテナー URL の例については、以下の例を参照してください。

  • 許容されないキー コンテナー URL https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • 許容されるキー コンテナー URL: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Azure PowerShellを使用してキー暗号化キーを設定する

PowerShell スクリプトを使用する前に、Azure Disk Encryptionの前提条件を確認して、スクリプトの手順を理解してください。 環境に合わせてサンプル スクリプトを変更する必要が生じる場合があります。 このスクリプトでは、Azure Disk Encryption のすべての前提条件を作成し、既存の IaaS VM を暗号化し、キー暗号化キーを使用してディスク暗号化キーをラップします。

# Step 1: Create a new resource group and key vault in the same location.
	 # Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
	 # Use Get-AzLocation to get available locations and use the DisplayName.
	 # To use an existing resource group, comment out the line for New-AzResourceGroup

    $Loc = 'MyLocation';
    $KVRGname = 'MyKeyVaultResourceGroup';
    $KeyVaultName = 'MySecureVault';
    New-AzResourceGroup –Name  $KVRGname –Location $Loc;
    New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname;
    $KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).ResourceId;
    $diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).VaultUri;

# Step 2: Create the AD application and service principal.
	 # Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
	 # MyApplicationHomePage and the MyApplicationUri can be any values that you choose.

	 $aadClientSecret =  'MyAADClientSecret';
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
    $azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
    $aadclient ID = $azureAdApplication.ApplicationId;

#Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.

	 Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName  $KVRGname;

#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
	 # Fill in 'MyKeyEncryptionKey' with your value.

	 $keyEncryptionKeyName = 'MyKeyEncryptionKey';
    Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
    $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;

#Step 5: Encrypt the disks of an existing IaaS VM
	 # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

	 $VMName = 'MySecureVM';
     $VMRGName = 'MyVirtualMachineResourceGroup';
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -Aadclient ID $aadclient ID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

証明書ベースの認証 (省略可能)

証明書認証を使用する場合は、キー コンテナーに証明書をアップロードし、クライアントにデプロイできます。 PowerShell スクリプトを使用する前に、Azure Disk Encryptionの前提条件を確認して、スクリプトの手順を理解してください。 環境に合わせてサンプル スクリプトを変更する必要が生じる場合があります。


# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)

  $KVRGname = 'MyKeyVaultResourceGroup'
  $KeyVaultName= 'MySecureVault'

  # Create a key vault and set enabledForDiskEncryption property on it.
  # Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.

  $Loc = 'MyLocation'
  New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

  #Setting some variables with the key vault information
  $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
  $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
  $KeyVaultResourceId = $KeyVault.ResourceId

  # Create the Microsoft Entra application and associate the certificate with it.
  # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
  # MyApplicationHomePage and the MyApplicationUri can be any values you wish

  $CertPath = "C:\certificates\mycert.pfx"
  $CertPassword = "Password"
  $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
  $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

  $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
  $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

  $AADclient ID = $AzureAdApplication.ApplicationId
  $aadClientCertThumbprint= $cert.Thumbprint

  Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

  # Upload the pfx file to the key vault.
  # Fill in "MyAADCert".

  $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)

  #Set the secret and set the key vault policy for -EnabledForDeployment

  $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
  Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

  # Deploy the certificate to the VM
  # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

  $VMName = 'MySecureVM'
  $VMRGName = 'MyVirtualMachineResourceGroup'
  $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
  $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
  $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
  $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
  Update-AzVM -VM $VM -ResourceGroupName $VMRGName

  #Enable encryption on the VM by using Microsoft Entra client ID and the client certificate thumbprint

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

証明書ベースの認証と KEK (省略可能)

証明書認証を使用し、暗号化キーを KEK でラップする場合は、次のスクリプトを例として使用できます。 PowerShell スクリプトを使用する前に、前のすべてのAzure Disk Encryption前提条件を確認して、スクリプトの手順を理解してください。 環境に合わせてサンプル スクリプトを変更する必要が生じる場合があります。

# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADclient ID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wrapping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the key vault.
   # Fill in "MyAADCert".

   $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)

   #Set the secret and set the key vault policy for deployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   #Setting some variables with the key vault information and generating a KEK
   # Fill in 'KEKName'

   $KEKName ='KEKName'
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId
   $KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
   $KeyEncryptionKeyUrl = $KEK.Key.kid



   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM';
   $VMRGName = 'MyVirtualMachineResourceGroup';
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM by using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

次のステップ

Windows VM で Microsoft Entra ID を使用して Azure Disk Encryption を有効にする (以前のリリース)