AzureのManaged DiskはデフォルトでSSE(Server-Side Encryption)が有効です。しかしSSEはAzureの基盤側での暗号化であり、コンプライアンス要件や社内規定によっては「ゲストOS内部でのディスク暗号化」が求められることがあります。それを実現するのがAzure Disk Encryption(ADE)です。
この記事では、azコマンドを使ってLinux VMのOSディスクにAzure Disk Encryptionを適用する手順を実践形式で解説します。AWS EBSボリューム暗号化との設計上の違いも比較します。実行環境:Ubuntu 22.04 LTS / RHEL 9.4で動作確認済みです。
この記事のポイント
・ Azure Disk Encryption(ADE)はdm-cryptでゲストOS内からディスクを暗号化する
・ SSEとADEは暗号化レイヤーが異なり、要件次第で組み合わせも可能
・ az vm encryption enable コマンドでKey Vaultを指定して適用できる
・ AWS EBSはインフラ側暗号化のみ。ゲストOSレベルのADEに相当する機能はない
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AzureのディスクはなぜデフォルトでSSEがかかっているのか
AzureのManaged Diskには、作成した瞬間からSSE(Server-Side Encryption)が自動的に有効になっています。SSEはAzureのストレージ基盤がデータをAES-256で暗号化して保存する仕組みで、VM側からは何も設定しなくても常時動作しています。暗号化鍵の管理方法には2種類あります。
・PMK(Platform-Managed Key):Microsoftが鍵を管理する。デフォルト設定で追加コストなし。
・CMK(Customer-Managed Key):Key Vaultに保管した自社の鍵を使う。Disk Encryption Setと組み合わせて利用する。
SSEだけで多くの要件は満たせますが、「OSが読めるレベルで暗号化されているか」「dm-cryptによるデバイスレベルの暗号化が必要か」を問われる場合は、ゲストOS内で動作するAzure Disk Encryptionが必要になります。
Azure Disk EncryptionとSSEの違いを整理する
| 比較軸 | SSE(Server-Side Encryption) | ADE(Azure Disk Encryption) |
|---|---|---|
| 暗号化レイヤー | Azureストレージ基盤(ホスト側) | ゲストOS内(dm-crypt/BitLocker) |
| 有効化の操作 | デフォルト有効(設定不要) | az vm encryption enable で明示的に設定 |
| 鍵の保管先 | Microsoftが管理(PMK)またはKey Vault(CMK) | Key Vault(必須) |
| VMからの見え方 | OSからは透過的(暗号化を意識しない) | ブロックデバイスが暗号化されて見える |
| サポートするVM | 全Managed Disk | 対応VMシリーズのみ(Aシリーズ等は非対応) |
| コスト | 追加コストなし(PMK) | Key Vaultのトランザクション費用 |
Azure Disk Encryptionを有効にする手順
1. 前提を確認する
ADEを適用する前に以下の要件を確認してください。・VMのサイズ制限:Aシリーズ(A1など)は非対応。B、D、E、Fシリーズなどを使うこと
・OSのサポート:RHEL 7.2以上、Ubuntu 16.04以上、Debian 9以上など(一部バージョンは非対応)
・Key Vaultとの同一リージョン:VMとKey VaultはAzureの同じリージョンに作成する
VMのサイズが対応しているか確認するには次のコマンドを使います。
# ADEをサポートするVMの一覧確認(japaneastの場合) # スキップ可能。VMを作成済みならサイズを確認する az vm show \ --resource-group myResourceGroup \ --name myLinuxVM \ --query hardwareProfile.vmSize \ --output tsv # 出力例 Standard_D2s_v3
2. Key Vaultを暗号化対応で作成する
ADE専用のKey Vaultを作成します。既存のKey Vaultを使う場合でも、--enabled-for-disk-encryption フラグが必要です。# 変数を設定する(環境に合わせて変更する) RG="myResourceGroup" LOCATION="japaneast" KV_NAME="myDiskEncryptKV" # Key Vaultを作成する(ADEフラグを有効にする) az keyvault create \ --resource-group $RG \ --name $KV_NAME \ --location $LOCATION \ --enabled-for-disk-encryption true \ --retention-days 7
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myDiskEncryptKV", "location": "japaneast", "name": "myDiskEncryptKV", "properties": { "enabledForDiskEncryption": true, "provisioningState": "Succeeded", "sku": { "family": "A", "name": "standard" } } }
enabledForDiskEncryption: true になっていることを確認します。3. Linux VMにDisk Encryptionを適用する
az vm encryption enable でVMのOSディスクに暗号化を適用します。VMが稼働中のまま実行でき、内部でdm-cryptが動作します。# 変数を設定する VM_NAME="myLinuxVM" # OSディスクに暗号化を適用する(--volume-type OS でOSディスクのみ対象) az vm encryption enable \ --resource-group $RG \ --name $VM_NAME \ --disk-encryption-keyvault $KV_NAME \ --volume-type OS
--volume-type OS:OSディスクのみを暗号化する。データディスクも含める場合は All を指定する・実行後、VMが自動で再起動します(暗号化処理のため5分程度かかる)
【注意】ADE適用中はVMへのSSH接続が一時的に切断されます。適用前にスナップショットを取得しておくことを強く推奨します。
4. 暗号化の状態を確認する
再起動が完了したら、暗号化が正常に適用されたことを確認します。# 暗号化の状態を確認する az vm encryption show \ --resource-group $RG \ --name $VM_NAME \ --query "disks[].statuses[].displayStatus" \ --output table
Column1 ----------- Encryption succeeded
Encryption succeeded が表示されれば、OSディスクへのADE適用が完了しています。現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
AWS EBSボリューム暗号化との設計の違い
AWSのEBSボリューム暗号化は、AzureのSSEに近い仕組みです。ADE(ゲストOS内のdm-crypt暗号化)に直接対応するAWSのマネージドサービスはありません。| 比較軸 | Azure ADE | AWS EBSボリューム暗号化 |
|---|---|---|
| 暗号化レイヤー | ゲストOS(dm-crypt) | EBSストレージ基盤(ホスト側) |
| 鍵の管理サービス | Azure Key Vault | AWS KMS |
| 有効化の手順 | az vm encryption enable(Key Vault設定+コマンド1本) | --encrypted オプション指定、またはアカウント全体デフォルト有効 |
| 既存ボリュームへの適用 | 稼働中VMにも適用可能 | スナップショット経由で再作成が必要 |
| VMからの見え方 | ブロックデバイスが暗号化されて見える | インスタンスからは透過的 |
| ゲスト暗号化の代替 | ADE(マネージド) | LUKS(手動設定) |
az vm encryption enableという単一コマンドでdm-cryptによるゲスト暗号化を適用できる点が差別化ポイントです。トラブルシュート
「The managed disk is not supported for disk encryption」が出た場合
VMのサイズがADEに対応していない可能性があります。az vm resize でサポートサイズに変更するか、対応サイズのVMに再作成してください。Aシリーズ(A0~A7)はADE非対応です。「The Key Vault is not enabled for disk encryption」が出た場合
Key VaultのenabledForDiskEncryptionフラグが有効になっていない状態です。既存のKey Vaultに対してフラグを有効にするには以下を実行します。az keyvault update \ --resource-group $RG \ --name $KV_NAME \ --enabled-for-disk-encryption true
暗号化後にSSH接続ができなくなった場合
ADE適用後の再起動で鍵のアンロックに失敗するケースがあります。Azure Portalの「シリアルコンソール」からブート状況を確認してください。Key VaultのアクセスポリシーでVMのマネージドIDにGet・Wrap Key・Unwrap Key の権限があることを確認します。# Key VaultのアクセスポリシーにVMのマネージドIDを追加する VM_PRINCIPAL_ID=$(az vm show \ --resource-group $RG \ --name $VM_NAME \ --query identity.principalId \ --output tsv) az keyvault set-policy \ --resource-group $RG \ --name $KV_NAME \ --object-id $VM_PRINCIPAL_ID \ --key-permissions get wrapKey unwrapKey \ --secret-permissions get list
本記事のまとめ
| やりたいこと | コマンドまたは設定 |
|---|---|
| ADEに対応したKey Vaultを作成する | az keyvault create --enabled-for-disk-encryption true |
| VMのOSディスクにADEを適用する | az vm encryption enable --disk-encryption-keyvault KV_NAME --volume-type OS |
| OSとデータディスク両方を暗号化する | az vm encryption enable --disk-encryption-keyvault KV_NAME --volume-type All |
| 暗号化の状態を確認する | az vm encryption show --resource-group RG --name VM_NAME |
| Key VaultにADEフラグを後から追加する | az keyvault update --enabled-for-disk-encryption true |
Azureの学習をもっと体系的に進めたいなら、Azure実践ハンズオン講座をご覧ください。現役エンジニアが教える実務直結カリキュラムで、VM構築からインフラ管理まで一気に習得できます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AzureのLinux VMスナップショットを作成・リストアする方法|azコマンドによるOSディスクバックアップとVM再作成の実践手順
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます