適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット
Azure Disk Storageを使用すると、マネージド ディスクにサーバー側暗号化 (SSE) を使用するときに、独自のキーを管理できます (選択した場合)。 カスタマー マネージド キーを使用する SSE とその他のマネージド ディスクの暗号化の概念については、ディスクの暗号化の記事の「カスタマー マネージド キー」セクションを参照してください。
制限
現在、カスタマー マネージド キーには次の制限があります。
- 増分スナップショットを含むディスクに対してこの機能が有効になっている場合、そのディスクまたはそのスナップショットでこれを無効にすることはできません。 これを回避するには、カスタマー マネージド キーを使用していないまったく別のマネージド ディスクにすべてのデータをコピーします。 これを行うには、Azure CLI または Azure PowerShell モジュール。
- ディスクとそれに関連付けられているすべての増分スナップショットには、同じディスク暗号化セットが必要です。
- 2,048 ビット、3,072 ビットおよび 4,096 ビットのサイズのソフトウェアと HSM の RSA キーのみがサポートされており、その他のキーまたはサイズはサポートされていません。
- HSM キーには、Azure Key Vault の premium レベルが必要です。
- Ultra Disks と Premium SSD v2 ディスクの場合のみ:
- (プレビュー)ユーザー割り当てマネージド ID は、カスタマー マネージド キーで暗号化された Ultra Disks ディスクと Premium SSD v2 ディスクで使用できます。
- お使いのカスタマー マネージド キー (ディスク暗号化セット、VM、ディスク、およびスナップショット) に関連するほとんどのリソースは、同じサブスクリプションとリージョンに存在する必要があります。
- Azure Key Vault は別のサブスクリプションから使用できますが、ディスク暗号化セットと同じリージョンに存在する必要があります。 マネージド ディスクでは、異なるMicrosoft Entra テナントのAzure Key Vault がサポートされています。 詳細については、 テナント間のカスタマー マネージド キーを使用したマネージド ディスクの暗号化に関するページを参照してください。
- カスタマー マネージド キーで暗号化されたディスクは、アタッチされている VM の割り当てが解除された場合にのみ、別のリソース グループに移動できます。
- カスタマー マネージド キーで暗号化されたディスク、スナップショット、およびイメージは、サブスクリプション間で移動できません。
- Azure Disk Encryptionを使用して現在または以前に暗号化されたマネージド ディスクは、カスタマー マネージド キーを使用して暗号化することはできません。
- サブスクリプションごとに、リージョンに最大で 5000 のディスク暗号化セットのみを作成できます。
- カスタマー マネージド キーを共有イメージ ギャラリーで使用する方法の詳細については、「プレビュー:イメージの暗号化にカスタマー マネージド キーを使用する」を参照してください。
リソースを作成する
この機能が有効になったら、DiskEncryptionSet と、Azure Key Vault または Azure Key Vault Managed HSM を設定する必要があります。
Azure Key Vault
Key Vaultを作成するときは、消去保護を有効にする必要があります。 消去保護により、保持期間が経過するまで、削除されたキーを完全に削除できなくなります。 これらの設定は、誤って削除したためにデータが失われるのを防ぎます。 これらの設定は、マネージド ディスクの暗号化にKey Vaultを使用する場合に必須です。
重要
リージョンをキャメルケースしないでください。そうすると、Azure ポータルでリソースに追加のディスクを割り当てるときに問題が発生する可能性があります。
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 へのアクセス権を付与します。
注
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
これらのリソースを作成し、構成したので、これらを使用してマネージド ディスクをセキュリティで保護することができます。 次のリンクには、個々のシナリオごとにスクリプトの例が含まれています。これは、マネージド ディスクをセキュリティで保護するために使用できます。
例
Marketplace イメージを使用して VM を作成し、カスタマー マネージド キーで OS とデータ ディスクを暗号化する
rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_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 --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 に接続することはできません。
rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId
Marketplace イメージを使用して仮想マシン スケール セットを作成し、カスタマー マネージド キーで OS とデータ ディスクを暗号化する
rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
カスタマー マネージド キーを使用したサーバー側の暗号化で暗号化された空のディスクを作成し、VM に接続する
vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName
diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)
az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId
DiskEncryptionSet のキーを変更して、DiskEncryptionSet を参照しているすべてのリソースのキーをローテーションする
rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId
ディスクのサーバー側暗号化の状態を確認する
az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv
重要
カスタマー マネージド キーは、Microsoft Entra IDの機能であるAzure リソースのマネージド ID に依存します。 カスタマー マネージド キーを構成すると、内部でマネージド ID がリソースに自動的に割り当てられます。 その後、サブスクリプション、リソース グループ、またはマネージド ディスクを 1 つのMicrosoft Entra ディレクトリから別のディレクトリに移動した場合、マネージド ディスクに関連付けられているマネージド ID は新しいテナントに転送されないため、カスタマー マネージド キーが機能しなくなる可能性があります。 詳細については、「Microsoft Entra ディレクトリ間でのサブスクリプションの転送を参照してください。
次のステップ
- カスタマー マネージド キーを使用して暗号化されたディスクを作成するためのAzure Resource Manager テンプレートを展開します
- カスタマー マネージド キー対応ディスクを含むコンピューターをレプリケートする
- PowerShell でAzureするように VMware VM のディザスター リカバリーを設定します
PowerShell と Azure Resource Manager - コード サンプルについては、「CLI でスナップショットからマネージド ディスクを作成する」を参照してください。