Azure CLI を使用して、ホストでの暗号化を使用したエンドツーエンドの暗号化を有効にする
適用対象: ✔️ Linux VM ✔️ フレキシブル スケール セット
ホストでの暗号化を有効にすると、VM ホスト上の格納データは、保存時に暗号化され、暗号化された状態でストレージ サービスに送られます。 ホストでの暗号化とその他のマネージド ディスクの暗号化の概要については、「ホストでの暗号化 - ご利用の VM データのエンドツーエンド暗号化」を参照してください。
制限
- 4k セクター サイズの Ultra Disks および Premium SSD v2 でサポートされています。
- 2023 年 5 月 13 日以降に作成された場合は、512e セクター サイズの Ultra Disks および Premium SSD v2 でのみサポートされています。
- この日付以前に作成されたディスクの場合は、ディスクのスナップショットを作成し、そのスナップショットを使用して新しいディスクを作成します。
- 現在または以前に Azure Disk Encryption が有効になっている仮想マシン (VM) または仮想マシン スケール セットでは有効にできません。
- ホストでの暗号化が有効になっているディスクで Azure Disk Encryption を有効にすることはできません。
- 暗号化は、既存の仮想マシン スケール セットで有効にすることができます。 しかし、暗号化を有効にした後に作成された新しい VM のみが自動的に暗号化されます。
- 暗号化するには、既存の VM の割り当てを解除して再割り当てする必要があります。
サポートされる VM のサイズ
サポートされている VM サイズの完全な一覧は、プログラムを使用してプルできます。 プログラムによって取得する方法については、「サポートされている VM のサイズを確認する」セクションを参照してください。 VM サイズをアップグレードすると、新しい VM サイズで EncryptionAtHost 機能がサポートされているかどうかが確認されます。
前提条件
VM または VMSS に対して EncryptionAtHost プロパティを使用する前に、サブスクリプションに対してこの機能を有効にする必要があります。 下の手順に従って、サブスクリプションに対して機能を有効にしてください。
- 次のコマンドを実行して、お使いのサブスクリプションにこの機能を登録します
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
- この機能を試す前に、下のコマンドを使用して、登録状態が Registered であることを確認してください (数分かかります)。
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
リソースを作成する
注意
このセクションは、カスタマー マネージド キーを使用した構成にのみ適用されます。 プラットフォーム マネージド キーを使用している場合は、「スクリプトの例」セクションに進むことができます。
この機能を有効にしたら、DiskEncryptionSet と、Azure Key Vault または Azure Key Vault マネージド HSM のどちらかを設定する必要があります。
Azure Key Vault
Key Vaultを作成する場合、消去保護を有効にする必要があります。 消去保護では、保持期間が経過するまで、削除されたキーを完全に削除できないようになります。 これらの設定は、誤って削除したためにデータが失われるのを防ぎます。 これらの設定は、Key Vault を使用してマネージド ディスクを暗号化する場合は必須です。
重要
リージョンにキャメル ケースを使用しないでください。キャメル ケースを使用すると、Azure portal のリソースに追加のディスクを割り当てるときに問題が発生することがあります。
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az group create --resource-group $rgName --location $location
az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
- DiskEncryptionSetを作成する。 enable-auto-key-rotation を true に設定すると、キーの自動回転が有効になります。 自動ローテーションを有効にすると、ディスク暗号化セットを参照するすべてのマネージド ディスク、スナップショット、およびイメージがシステムによって自動的に更新され、1 時間以内に新しいバージョンのキーが使用されます。
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
- DiskEncryptionSet リソースに Key Vault へのアクセス権を付与します。
Note
Azure が Microsoft Entra ID で DiskEncryptionSet の ID を作成するには数分かかる場合があります。 次のコマンドを実行しているときに "Active Directory オブジェクトが見つかりません" のようなエラーが表示された場合は、数分待ってから再試行してください。
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get
Azure Key Vault マネージド HSM
または、管理された HSM を使用してキーを処理することもできます。
これを完了するには、次の前提条件を満たしている必要があります。
- 最新の Azure CLI をインストールし、az login を使用して Azure アカウントにログインします。
- 管理された HSM を作成および構成します。
- 管理対象 HSM を管理できるように、ユーザーにアクセス許可を割り当てます。
構成
管理された HSM を作成し、アクセス許可を追加したら、[保護の削除] を有効にし、暗号化キーを作成します。
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
az keyvault key create --hsm-name $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048
その後、DiskEncryptionSetを作成します。
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
最後に、DiskEncryptionSet アクセス権を管理対象 HSM に付与します。
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys
サンプル スクリプト
カスタマー マネージド キーを使用して、ホストでの暗号化が有効な VM を作成する
前に作成した DiskEncryptionSet のリソース URI を使用して、マネージド ディスクを持つ VM を作成し、カスタマー マネージド キーを使用して、OS ディスクとデータ ディスクのキャッシュを暗号化します。 一時ディスクは、プラットフォーム マネージド キーを使用して暗号化されます。
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
プラットフォーム マネージド キーを使用して、ホストでの暗号化が有効な VM を作成する
ホストでの暗号化が有効な VM を作成し、プラットフォーム マネージド キーを使用して OS/データ ディスクのキャッシュと一時ディスクを暗号化します。
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \
VM を更新してホストでの暗号化を有効にする
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true
特定の VM について、ホストでの暗号化の状態を確認します
rgName=yourRGName
vmName=yourVMName
az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv
VM を更新してホストでの暗号化を無効にする
ホストでの暗号化を無効にするには、あらかじめ VM の割り当てを解除しておく必要があります。
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false
カスタマー マネージド キーを使用して、ホストでの暗号化が有効な仮想マシン スケール セットを作成する
前に作成した DiskEncryptionSet のリソース URI を使用して、マネージド ディスクを持つ仮想マシン スケール セットを作成し、カスタマー マネージド キーを使用して、OS ディスクとデータ ディスクのキャッシュを暗号化します。 一時ディスクは、プラットフォーム マネージド キーを使用して暗号化されます。
重要
2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft コミュニティ ハブ」を参照してください
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
プラットフォーム マネージド キーを使用して、ホストでの暗号化が有効な仮想マシン スケール セットを作成する
ホストでの暗号化が有効な仮想マシン スケール セットを作成し、プラットフォーム マネージド キーを使用して OS/データ ディスクのキャッシュと一時ディスクを暗号化します。
重要
2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft コミュニティ ハブ」を参照してください
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \
仮想マシン スケール セットを更新してホストでの暗号化を有効にする
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true
仮想マシン スケール セットのホストでの暗号化の状態を確認する
rgName=yourRGName
vmssName=yourVMName
az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv
仮想マシン スケール セットを更新してホストでの暗号化を無効にする
ホストでの暗号化は仮想マシン スケール セットで無効にできますが、それが作用するのは、ホストでの暗号化を無効にした後で作成した VM のみです。 既存の VM については、VM の割り当てを解除し、ホストでの暗号化をその個々の VM で無効にした後、再度 VM を割り当てる必要があります。
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false
サポートされている VM のサイズを確認する
レガシ VM のサイズはサポートされていません。 サポートされている VM サイズの一覧を確認するには、リソース SKU API または Azure PowerShell モジュールを使用します。 CLI を使って、サポートされているサイズを見つけることはできません。
リソースの SKU API を呼び出すときに、EncryptionAtHostSupported
機能が True に設定されていることを確認します。
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUSEUAP"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Azure PowerShell モジュールでは、Get-AzComputeResourceSku コマンドレットを使用します。
$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}
foreach($vmSize in $vmSizes)
{
foreach($capability in $vmSize.capabilities)
{
if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
{
$vmSize
}
}
}
次のステップ
これらのリソースを作成し、構成したので、これらを使用してマネージド ディスクをセキュリティで保護することができます。 次のリンクには、個々のシナリオごとにスクリプトの例が含まれています。これは、マネージド ディスクをセキュリティで保護するために使用できます。