このエントリは2020/01/06現在の情報に基づいています。将来の機能変更・追加に伴い、記載内容との乖離が発生する可能性があります。
Azure Key Vaultで作成した暗号鍵を使って、仮想マシン (Virtual Machines) のディスクを暗号化し、保護できる。詳細はドキュメントに記載があるが、備忘録として記載しておく。
Azure CLI を使用して Linux VM を作成、暗号化する / Create and encrypt a Linux VM with the Azure CLI
https://docs.microsoft.com/azure/virtual-machines/linux/disk-encryption-cli-quickstart
前提条件
- Azure CLIを利用(PowerShellでも作成できるが、PowerShellでの作成方法はドキュメントを参照)
- Azure CLIでログイン済み。ログインしていない場合は az login を実行しておくこと。
手順
リソースグループの作成(作成済みであれば省略可能)
以下のコマンドを実行。
az group create \
-g "<resource group>" \
-l "<location>"
Key Vault (Key Container) の作成
以下のコマンドを実行。
az keyvault create \
--name "<unique keyvault name>" \
-g "<resource group>" \
-l "<location>" \
--sku {standard|premium} \
--enabled-for-disk-encryption
注意点
- VMのディスク暗号化のために、–enabled-for-disk-encryptionは必須
- その他必要であれば、–enabled-for-deployment や –enabled-for-template-deployment を付ける
- SKUを指定しないとStandardのKey Vaultを作成するため、HSMで保護されたKeyを使いたい場合には、明示的に –sku premium を指定する必要がある
キー暗号化キー (Key Encryption Key, KEK) の作成もしくはインポート
作成
以下のコマンドを実行。
az keyvault key create \
--name "<key name>" \
--vault-name "<unique keyvault name>" \
--kty {RSA-HSM | RSA}
インポート
以下のコマンドを実行。詳細は以下のURLを参照。
az keyvault key import \
--name "<key name>" \
--vault-name "<unique keyvault name>" …
az keyvault key import
https://docs.microsoft.com/cli/azure/keyvault/key?view=azure-cli-latest#az-keyvault-key-import
注意点
- Azure Disk Encryption では、楕円曲線キーの使用はまだサポートされていないため、作成時にはRSAもしくはRSA-HSMのみ指定できる。
VMの作成
以下のコマンドを実行。
az vm create \
-g "<resource group>" \
--name "<vm name>" \
--image "<vm image name>" \
--size "<vm size>"\
--generate-ssh-keys
注意点
- –generate-ssh-keysを指定しておくと、例えばWSLからAzure CLIを使ってVMを作成した場合、~/.ssh配下の公開鍵、秘密鍵を使ってVMを作成してくれる(公開鍵、秘密鍵がない場合は~/.sshに作成する)。
- –admin-username は必要に応じて指定する(作成していない場合、az vm show の出力結果 /osProfile/adminUsername で確認できる)。
VMのディスク暗号化
以下のコマンドを実行。
az vm encryption enable \
-g "<resource group>" \
--name "<vm name>" \
--disk-encryption-keyvault "<unique keyvault name>"
ディスク暗号化の状況把握
以下のコマンドを実行し、出力結果の /resources[0]/settings/EncryptionOperation の値が EnableEncryption になっていれば暗号化完了。以下は出力例。
