既存の VM ディスクを暗号化する

完了

あなたの会社では、すべての仮想マシンに Azure Disk Encryption (ADE) を実装することが決まったとします。 あなたは、既存の仮想マシン (VM) ボリュームに暗号化をロールアウトする方法を評価する必要があります。 ここでは、ADE の要件と、既存の Linux および Windows VM のディスクを暗号化するための手順を紹介します。 次のユニットでは、既存の VM ディスクを暗号化するプロセスを実行します。

Azure Disk Encryption の前提条件

VM ディスクを暗号化する前に、次を行う必要があります。

  1. キー コンテナーを作成します。
  2. ディスク暗号化をサポートするようにキー コンテナーのアクセス ポリシーを設定します。
  3. キー コンテナーを使用して、ADE の暗号化キーを格納します。

Azure Key Vault

ADE によって使用される暗号化キーは、Azure Key Vault に格納できます。 Azure Key Vault は、シークレットを安全に保管し、それにアクセスするためのツールです。 API キー、パスワード、認定資格証など、アクセスを厳密に制御する必要があるものはすべてシークレットです。 Azure Key Vault により、Federal Information Processing Standards (FIPS) 140-2 レベル 2 で検証済みのハードウェア セキュリティ モジュール (HSM) で定義されているように、可用性が高くスケーラブルで安全なストレージが提供されます。 Key Vault を使用して、データの暗号化に使用されるキーを全面的に制御し、キーの使用方法を管理して監査できます。

Note

Azure Disk Encryption では、暗号化シークレットがリージョン境界を越えることがないため、キー コンテナーと VM が同じ Azure リージョンにある必要があります。

キー コンテナーは次の方法で構成および管理できます。

PowerShell

New-AzKeyVault -Location <location> `
    -ResourceGroupName <resource-group> `
    -VaultName "myKeyVault" `
    -EnabledForDiskEncryption

Azure CLI

az keyvault create \
    --name "myKeyVault" \
    --resource-group <resource-group> \
    --location <location> \
    --enabled-for-disk-encryption True

Azure portal

Azure Key Vault は、通常のリソース作成プロセスを使用して Azure portal で作成できるリソースです。

  1. Azure portal のメニューまたは [ホーム] ページから [リソースの作成] を選択します。

  2. 検索ボックスで、[Key Vault] と検索して選択します。 [Key Vault] ペインが表示されます。

  3. [作成] を選択します [キー コンテナーの作成] ウィンドウが表示されます。

  4. [基本] タブで、各設定に対して次の値を入力します。

    設定
    プロジェクトの詳細
    サブスクリプション キー コンテナーを配置するサブスクリプションを選びます (既定値は現在のサブスクリプションです)。
    Resource group 既存のリソース グループを選択するか、新しいリソース グループを作成します。
    インスタンスの詳細
    キー コンテナー名 キー コンテナーの名前を入力します。
    リージョン VM が存在するリージョンを選択します。
    価格レベル StandardStandard または Premium のいずれかの価格レベルを選択できます。 主な違いは、Premium レベルではハードウェア暗号化のバックアップ キーを使用できる点です。

    キー コンテナー ペインを示すスクリーンショット。

  5. [次へ] を選び、[アクセス構成] タブに移動します。ディスク暗号化をサポートするには、アクセス ポリシーを変更する必要があります。 既定では、ポリシーに自分のアカウントが追加されます。

  6. [アクセス構成] タブで、設定に対して次の値を入力します。

    設定
    リソース アクセス [Azure Disk Encryption (ボリューム暗号化用)] のボックスをオンにします。 必要に応じてアカウントを削除できます。ディスクの暗号化のみを目的としてキー コンテナーを使用する場合、削除する必要はありません。
  7. [Review + create](レビュー + 作成) を選択します。

  8. 検証に合格した後、新しい Key Vault を作成するには、[作成] を選択します。

キー コンテナーでアクセス ポリシーを有効にする

Azure には、キー コンテナー内の暗号化キーまたはシークレットへのアクセス権を付与する必要があります。これにより、ボリュームをブートして復号化する際に、それらの情報を VM に提供できるようになります。 前の手順で [アクセス ポリシー] を変更したときに有効にしました。

有効にできるポリシーは 3 つあります。

  • ディスクの暗号化:Azure Disk Encryption に必要です。
  • デプロイ:(省略可能) このキー コンテナーがリソース作成時に参照される場合、Microsoft.Compute リソース プロバイダーがこのキー コンテナーからシークレットを取得できるようにします。 たとえば、VM を作成する場合などです。
  • テンプレートのデプロイ:(省略可能) テンプレートのデプロイでこのキー コンテナーが参照される場合、Azure Resource Manager がこのキー コンテナーからシークレットを取得できるようにします。

ディスクの暗号化ポリシーを有効にする方法を次に示します。 他の 2 つポリシーは似ていますが、異なるフラグが使われます。

Set-AzKeyVaultAccessPolicy -VaultName <keyvault-name> -ResourceGroupName <resource-group> -EnabledForDiskEncryption
az keyvault update --name <keyvault-name> --resource-group <resource-group> --enabled-for-disk-encryption true

既存の VM ディスクを暗号化する

キー コンテナーを設定した後、Azure CLI または Azure PowerShell を使用して VM を暗号化できます。 Windows VM を初めて暗号化する場合は、すべてのディスクを暗号化するか、OS ディスクのみを暗号化するかを選択できます。 Linux ディストリビューションによっては、データ ディスクのみが暗号化される場合があります。 暗号化の対象となるには、Windows のディスクが NT ファイル システム (NTFS) ボリュームとしてフォーマットされている必要があります。

警告

暗号化をオンにする前に、マネージド ディスクのスナップショットまたはバックアップを作成する必要があります。 以下の SkipVmBackup フラグにより、マネージド ディスクでバックアップが完了したことがツールに通知されます。 バックアップがなければ、何らかの理由で暗号化が失敗した場合に VM を復旧できません。

PowerShell を使って暗号化を有効にするには、Set-AzVmDiskEncryptionExtension コマンドレットを実行します。


Set-AzVmDiskEncryptionExtension `
    -ResourceGroupName <resource-group> `
    -VMName <vm-name> `
    -VolumeType [All | OS | Data]
    -DiskEncryptionKeyVaultId <keyVault.ResourceId> `
    -DiskEncryptionKeyVaultUrl <keyVault.VaultUri> `
     -SkipVmBackup

Azure CLI で使う暗号化を有効にするには、az vm encryption enable コマンドを実行し、--volume-type [all | os | data] パラメーターを使って暗号化するボリュームを指定します。 仮想マシンですべてのボリュームを暗号化する例は次のとおりです。

az vm encryption enable \
    --resource-group <resource-group> \
    --name <vm-name> \
    --disk-encryption-keyvault <keyvault-name> \
    --volume-type all

ディスクの状態を表示する

特定のディスクが暗号化されるかどうかを確認できます。

Get-AzVmDiskEncryptionStatus  -ResourceGroupName <resource-group> -VMName <vm-name>
az vm encryption show --resource-group <resource-group> --name <vm-name>

これらのコマンドの両方により、指定された VM にアタッチされている各ディスクの状態が返されます。

ドライブの暗号化を解除する

PowerShell で暗号化を解除するには、Disable-AzVMDiskEncryption コマンドレットを実行します。

Disable-AzVMDiskEncryption -ResourceGroupName <resource-group> -VMName <vm-name>

Azure CLI の場合は、vm encryption disable コマンドを実行します。

az vm encryption disable --resource-group <resource-group> --name <vm-name>

これらのコマンドにより、指定された VM の ''すべて'' の種類のボリュームに対する暗号化が無効になります。 暗号化の場合と同様に、暗号化を解除するディスクを決定するために、-VolumeType パラメーター [All | OS | Data] を指定できます。 指定されていない場合の既定値は All です。

警告

OS ディスクとデータ ディスクの両方が暗号化されている場合に Windows VM でデータ ディスク暗号化を無効にしようとしても、うまくいきません。 代わりに、すべてのディスクの暗号化を無効にする必要があります。

次の演習で、これらのいくつかのコマンドを新しい VM 上で試してみましょう。