Linux VM での Azure Disk Encryption シナリオ
適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
Linux 仮想マシン (VM) に対する Azure Disk Encryption では、Linux の DM-Crypt 機能を使用して、OS ディスクとデータ ディスクの完全なディスク暗号化を提供します。 また、EncryptFormatAll 機能を使用すると、一時的なディスクの暗号化を行うことができます。
Azure Disk Encryption は、ディスクの暗号化キーとシークレットを制御および管理できるように、Azure Key Vault と統合されています。 サービスの概要については、「Linux VM に対する Azure Disk Encryption」を参照してください。
前提条件
ディスク暗号化は、サポートされている VM サイズとオペレーティング システムの仮想マシンにのみ適用できます。 また、次の前提条件を満たしている必要があります。
いずれの場合でも、ディスクを暗号化する前にスナップショットを取得するか、バックアップを作成する (またはその両方を行う) 必要があります。 バックアップがあると、暗号化中に予期しないエラーが発生した場合に、回復オプションを使用できるようになります。 マネージド ディスクを含む VM では、暗号化する前にバックアップが必要になります。 バックアップを作成したら、Set-AzVMDiskEncryptionExtension cmdlet コマンドレットで -skipVmBackup パラメーターを指定して、マネージド ディスクを暗号化できます。 暗号化された VM のバックアップと復元方法の詳細については、Azure Backup に関する記事を参照してください。
制限
以前に Microsoft Entra ID で Azure Disk Encryption を使って仮想マシンを暗号化した場合は、引き続きこのオプションを使用して VM を暗号化する必要があります。 詳細については、「Microsoft Entra ID での Azure Disk Encryption (以前のリリース)」を参照してください。
Linux OS ボリュームを暗号化する場合、VM は利用不可と見なす必要があります。 暗号化プロセス中にアクセスする必要がある、開いているファイルがブロックされる問題を回避するために、暗号化の進行中は SSH ログインを避けることを強くお勧めします。 進行状況を確認するには、Get-AzVMDiskEncryptionStatus PowerShell コマンドレットまたは vm encryption show CLI コマンドを使用します。 このプロセスには、30GB の OS ボリュームにかかる数時間に加え、データ ボリュームの暗号化を行う時間がかかると想定されます。 データ ボリュームの暗号化の時間は、暗号化形式の全てのオプションが使用されている場合を除いて、データ ボリュームのサイズと数量に比例します。
Linux VM での暗号化の無効化は、データ ボリュームに対してのみサポートされます。 OS ボリュームが暗号化されている場合、データ ボリュームまたは OS ボリュームでの暗号化の無効化はサポートされません。
Azure Disk Encryption は、次の Linux のシナリオ、機能、およびテクノロジには対応していません。
- Basic レベルの VM または従来の VM の作成方法を使用して作成された VM を暗号化する。
- OS ドライブが暗号化されている場合に Linux VM の OS ドライブまたはデータ ドライブで暗号化を無効にする。
- Linux Virtual Machine Scale Sets の OS ドライブを暗号化する。
- Linux VM のカスタム イメージを暗号化する。
- オンプレミスのキー管理システムとの統合。
- Azure Files (共有ファイル システム)。
- ネットワーク ファイル システム (NFS)。
- 動的ボリューム。
- エフェメラル OS ディスク。
- 次のもの (ただし、限定されない) の共有/分散ファイル システムの暗号化:DFS、GFS、DRDB、CephFS。
- 暗号化された VM を別のサブスクリプションまたはリージョンに移動する。
- 暗号化された VM のイメージまたはスナップショットを作成し、それを使用して追加の VM をデプロイする。
- カーネル クラッシュ ダンプ (kdump)。
- Oracle ACFS (ASM クラスター ファイル システム)。
- ハイ パフォーマンス コンピューティング VM サイズ や ストレージ最適化 VM サイズに搭載されているような NVMe ディスク。
- "マウント ポイントが入れ子になっている"、つまり、1 つのパスに複数のマウント ポイントがある ("/1stmountpoint/data/2stmountpoint" など) VM。
- OS フォルダーの上にデータ ドライブがマウントされている VM。
- データ ディスクを使用してルート (OS ディスク) 論理ボリュームが拡張された VM。
- OS ディスクのサイズ変更。
- 書き込みアクセラレータ ディスクを備えた M シリーズの VM。
- ホストでの暗号化またはユーザーが管理するキーによるサーバー側暗号化 (SSE + CMK) によって暗号化されたディスクを持つ VM に ADE を適用する。 SSE + CMK をデータ ディスクに適用すること、または SSE + CMK が構成されたデータ ディスクを ADE で暗号化された VM に追加することも、サポートされていないシナリオです。
- ADE で暗号化された VM、またはこれまでに ADE で暗号化されたことがある VM を、ホストでの暗号化、またはユーザーが管理するキーによるサーバー側暗号化に移行する。
- フェールオーバー クラスター内の VM を暗号化する。
- Azure Ultra ディスクの暗号化。
- Premium SSD v2 ディスクの暗号化。
- [シークレットには最長有効期間を指定する必要がある] ポリシーが DENY 効果を使用して有効になっているサブスクリプション内の VM の暗号化。
ツールをインストールし、Azure に接続する
Azure Disk Encryption は、Azure CLI と Azure PowerShell を使用して、有効にして管理することができます。 そのためには、ツールをローカルにインストールし、Azure サブスクリプションに接続する必要があります。
Azure CLI 2.0 は、Azure リソースを管理するためのコマンドライン ツールです。 CLI は、データのクエリを柔軟に実行し、長時間実行される操作を非ブロッキング プロセスとしてサポートし、スクリプトが簡単になるように設計されています。 「Azure CLI のインストール」の手順に従って、これをローカルにインストールすることができます。
Azure CLI を使用して Azure アカウントにログインするには、az login コマンドを使用します。
az login
サインインするテナントを選択するには、以下を使用します。
az login --tenant <tenant>
複数のサブスクリプションがあり、特定のサブスクリプションを指定する場合は、az account list を使用してサブスクリプションの一覧を表示し、az account set を使用して指定します。
az account list
az account set --subscription "<subscription name or ID>"
詳しくは、Azure CLI 2.0 の概要に関する記事をご覧ください。
既存または実行中の Linux VM に対して暗号化を有効にする
このシナリオでは、Resource Manager テンプレート、PowerShell コマンドレット、または CLI コマンドを使用して、暗号化を有効にすることができます。 仮想マシンを拡張するためのスキーマの情報が必要な場合は、Linux 用 Azure Disk Encryption 拡張機能に関する記事を参照してください。
重要
Azure Disk Encryption を有効にする前に、Azure Disk Encryption 以外を使用して、マネージド ディスク ベースの VM インスタンスのスナップショットまたはバックアップ (またはその両方) を作成する必要があります。 マネージド ディスクのスナップショットは、ポータルから作成することも、Azure Backup を使用して作成することもできます。 バックアップがあると、暗号化中に予期しないエラーが発生した場合に、回復オプションを使用できるようになります。 バックアップを作成したら、Set-AzVMDiskEncryptionExtension コマンドレットを使用し、-skipVmBackup パラメーターを指定してマネージド ディスクを暗号化できます。 バックアップを作成し、このパラメーターを指定するまでは、マネージド ディスク ベースの VM に対して、Set-AzVMDiskEncryptionExtension コマンドを実行するとエラーが発生します。
暗号化を有効または無効にすると、VM が再起動する場合があります。
暗号化を無効にするには、「暗号化を無効にし、暗号化拡張機能を削除する」を参照してください。
暗号化された VHD でのディスク暗号化は、Azure CLI コマンド ライン ツールをインストールして使用することで有効化できます。 これは、Azure Cloud Shell を使用してブラウザーで使用することも、ローカル コンピューターにインストールして PowerShell セッションで使用することもできます。 Azure 内にある既存または実行中の Linux VM で暗号化を有効にするには、次の CLI コマンドを使用します。
az vm encryption enable コマンドを使用して、Azure で実行中の仮想マシンで暗号化を有効にします。
実行中の VM を暗号化する:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]
KEK を使用して実行中の VM を暗号化する:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type [All|OS|Data]
Note
disk-encryption-keyvault パラメーターの値は、次のように、完全な識別子文字列の形式で表されます: /subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
key-encryption-key パラメーターの値は KEK の完全な URI であり、次の形式で表されます: https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]ディスクが暗号化されていることを確認する: VM の暗号化の状態を確認するには、az vm encryption show コマンドを使用します。
az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
暗号化を無効にするには、「暗号化を無効にし、暗号化拡張機能を削除する」を参照してください。
Linux VM 上のデータ ディスクに対して EncryptFormatAll 機能を使用する
EncryptFormatAll パラメーターを使用すると、Linux データ ディスクを暗号化する時間が短縮されます。 特定の条件を満たしているパーティションが現行のファイル システムと共にフォーマットされた後、コマンドの実行前の場所に再度マウントされます。 条件を満たすデータ ディスクを除外する場合は、コマンドの実行前にそのディスクをマウント解除できます。
このコマンドを実行すると、以前にマウントされたドライブがフォーマットされ、現在空になったドライブ上で暗号化レイヤーが開始されます。 このオプションを選択すると、VM に接続されている一時的なディスクも暗号化されます。 リセットされた一時的なディスクは、次の機会に Azure Disk Encryption ソリューションによって、VM 用に再フォーマットおよび再暗号化されます。 リソース ディスクを暗号化すると、Microsoft Azure Linux エージェントではリソース ディスクの管理やスワップ ファイルの有効化を行うことができなくなりますが、スワップ ファイルは手動で構成できます。
警告
VM のデータ ボリュームに必要なデータがある場合は、EncryptFormatAll を使用しないでください。 ディスクをマウント解除することで、そのディスクを暗号化の対象から除外できます。 運用環境の VM で EncryptFormatAll を使用する前に、EncryptFormatAll をテスト用 VM で試し、機能パラメーターとその意味について理解しておく必要があります。 EncryptFormatAll オプションはデータ ディスクをフォーマットするため、ディスク上のデータはすべて失われます。 手順を進める前に、除外するディスクが適切にマウント解除されていることを確認してください。
暗号化の設定の更新中にこのパラメーターを設定すると、実際の暗号化の前に再起動が行われる可能性があります。 その場合、フォーマットしないディスクを fstab ファイルから削除する必要があります。 同様に、暗号化操作を開始する前に、暗号化フォーマットするパーティションを fstab ファイルに追加する必要があります。
EncryptFormatAll 条件
パーティションが以下の条件をすべて満たしている場合に限り、このパラメーターはすべてのパーティションを確認して暗号化します。
- ルート/OS/ブート パーティションではない
- まだ暗号化されていない
- BEK ボリュームではない
- RAID ボリュームではない
- LVM ボリュームではない
- マウントされている
RAID または LVM ボリュームではなく RAID または LVM ボリュームを構成するディスクを暗号化します。
az vm encryption enable コマンドを使用して、Azure で実行中の仮想マシンで暗号化を有効にします。
EncryptFormatAll を使用して、実行中の VM を暗号化する:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "data" --encrypt-format-all
EncryptFormatAll パラメーターを論理ボリューム マネージャー (LVM) で使用する
LVM-on-crypt のセットアップをお勧めします。 LVM on crypt 構成の詳細な手順については、ADE で暗号化されたデバイスでの LVM と RAID の構成に関する記事を参照してください。
お客様が暗号化した VHD と暗号化キーから作成された新しい VM
このシナリオでは、PowerShell コマンドレットまたは CLI コマンドを使用して、暗号化を有効にすることができます。
Azure で使用できる事前に暗号化されたイメージを準備するには、Azure Disk Encryption と同じスクリプトの手順を使用します。 イメージを作成したら、次のセクションの手順に従って、暗号化された Azure VM を作成できます。
重要
Azure Disk Encryption を有効にする前に、Azure Disk Encryption 以外を使用して、マネージド ディスク ベースの VM インスタンスのスナップショットまたはバックアップ (またはその両方) を作成する必要があります。 マネージド ディスクのスナップショットは、ポータルから作成できます。Azure Backup を使用することもできます。 バックアップがあると、暗号化中に予期しないエラーが発生した場合に、回復オプションを使用できるようになります。 バックアップを作成したら、Set-AzVMDiskEncryptionExtension コマンドレットを使用し、-skipVmBackup パラメーターを指定してマネージド ディスクを暗号化できます。 バックアップを作成し、このパラメーターを指定するまでは、マネージド ディスク ベースの VM に対して、Set-AzVMDiskEncryptionExtension コマンドを実行するとエラーが発生します。
暗号化を有効または無効にすると、VM が再起動する場合があります。
Azure PowerShell を使用して事前に暗号化された VHD で VM を暗号化する
PowerShell コマンドレット Set-AzVMOSDisk を使用して、暗号化された VHD でディスク暗号化を有効にすることができます。 この例では、一般的ないくつかのパラメーターを示します。
$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Linux -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"
新しく追加されたデータ ディスクで暗号化を有効にする
az vm disk attach を使用して、または Azure Portal から新しいデータ ディスクを追加できます。 暗号化の前に、新しく接続されたデータ ディスクをマウントする必要があります。 暗号化の実行中はデータ ドライブが使用できなくなるため、そのドライブの暗号化を要求する必要があります。
VM が以前に "All" で暗号化された場合、--volume-type パラメーターは "All" のままになっているはずです。 All には OS とデータ ディスクの両方が含まれます。 VM が以前にボリュームの種類 "OS" で暗号化された場合は、--volume-type パラメーターを "All" に変更して、OS と新しいデータ ディスクの両方が含まれるようにする必要があります。 VM がボリュームの種類 "Data" でのみ暗号化された場合、以下に示すように VM は "Data" のままになっている可能性があります。 新しいデータ ディスクを VM に追加してアタッチするだけでは、暗号化の準備としては不十分です。 暗号化を有効にする前に、新しくアタッチしたディスクをフォーマットして、VM 内で適切にマウントする必要もあります。 Linux では、永続的なブロック デバイス名を使用して /etc/fstab にディスクをマウントする必要があります。
PowerShell 構文とは異なり、CLI では暗号化を有効にする際にユーザーが一意のシーケンス バージョンを指定する必要はありません。 CLI では独自の一意のシーケンス バージョン値が自動的に生成され、使用されます。
実行中の VM のデータ ボリュームを暗号化する:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "Data"
KEK を使用し、実行中の VM のデータ ボリュームを暗号化する:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type "Data"
暗号化を無効にし、暗号化拡張機能を削除する
Azure Disk Encryption 拡張機能を無効にしたり、Azure Disk Encryption 拡張機能を削除したりできます。 これらは 2 つの異なる操作です。
ADE を削除するには、まず暗号化を無効にしてから拡張機能を削除することをお勧めします。 暗号化拡張機能を無効にせずに削除すると、ディスクは暗号化されたままになります。 拡張機能を削除した後に暗号化を無効にした場合、(暗号化解除操作を実行するために) 拡張機能は再インストールされ、もう一度削除する必要が生じます。
警告
OS ディスクが暗号化されている場合、暗号化を解除することはできません。 (元の暗号化操作で volumeType=ALL または volumeType=OS が指定されている場合、OS ディスクは暗号化されています。)
暗号化を無効にできるのは、データ ディスクが暗号化されていて、OS ディスクが暗号化されていない場合のみです。
暗号化を無効にする
Azure PowerShell、Azure CLI、または Resource Manager テンプレートを使用して暗号化を無効にすることができます。 暗号化を無効にしても、拡張機能は削除されません (「暗号化拡張機能を削除する」を参照してください)。
Azure PowerShell を使用してディスク暗号化を無効にする: 暗号化を無効にするには、Disable-AzVMDiskEncryption コマンドレットを使用します。
Disable-AzVMDiskEncryption -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM" -VolumeType "data"
Azure CLI を使用して暗号化を無効にする: 暗号化を無効にするには、az vm encryption disable コマンドを使用します。
az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type "data"
Resource Manager テンプレートを使用して暗号化を無効にする:
- 実行中の Linux VM でディスク暗号化を無効にするためのテンプレートで [Azure に配置する] をクリックします。
- サブスクリプション、リソース グループ、場所、VM、ボリュームの種類、法律条項、および契約を選択します。
- [購入] をクリックして、実行中の Linux VM でディスク暗号化を無効にします。
警告
解読が始まったら、そのプロセスに干渉しないことをお勧めします。
暗号化拡張機能を削除する
ディスクの暗号化を解除し、暗号化拡張機能を削除したい場合、拡張機能を削除する前に、暗号化を無効にする必要があります。「暗号化を無効にする」を参照してください。
Azure PowerShell または Azure CLI を使用して、暗号化拡張機能を削除できます。
Azure PowerShell を使用してディスク暗号化を無効にする: 暗号化を削除するには、Remove-AzVMDiskEncryptionExtension コマンドレットを使用します。
Remove-AzVMDiskEncryptionExtension -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM"
Azure CLI を使用して暗号化を無効にする: 暗号化を削除するには、az vm extension delete コマンドを使用します。
az vm extension delete -g "MyVirtualMachineResourceGroup" --vm-name "MySecureVM" -n "AzureDiskEncryptionForLinux"