Azure Disk Encryption 用のキー コンテナーの作成と構成
適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
Azure Disk Encryption では、Azure Key Vault を使用して、ディスク暗号化キーとシークレットを制御および管理します。 キー コンテナーの詳細については、「Azure Key Vault の概要」と「キー コンテナーのセキュリティ保護」を参照してください。
警告
- これまで Microsoft Entra ID で Azure Disk Encryption を使って VM を暗号化していた場合は、引き続きこのオプションを使用して VM を暗号化する必要があります。 詳しくは、「Microsoft Entra ID を使用した Azure Disk Encryption 用のキー コンテナーの作成と構成 (以前のリリース)」をご覧ください。
Azure Disk Encryption で使用するためのキー コンテナーの作成と構成には、次の 3 つの手順が必要です。
- 必要に応じて、リソース グループを作成する。
- キー コンテナーを作成する。
- キー コンテナーの高度なアクセス ポリシーを設定する。
これらの手順は、次のクイックスタートで説明されています。
また、必要に応じて、キー暗号化キー (KEK) を生成またはインポートすることもできます。
Note
この記事の手順は、Azure Disk Encryption の前提条件となる CLI スクリプトおよび Azure Disk Encryption の前提条件となる PowerShell スクリプトに関するページで自動化されています。
ツールをインストールし、Azure に接続する
この記事の手順を完了するには、Azure CLI、Azure PowerShell Az モジュール、または Azure portal のいずれかを使用します。
ポータルにはブラウザーからアクセスできますが、Azure CLI と Azure PowerShell ではローカル インストールが必要です。詳細については、Linux 用の Azure Disk Encryption のインストール ツール に関するセクションを参照してください。
Azure アカウントに接続する
Azure CLI または Azure PowerShell を使用する前に、まず Azure サブスクリプションに接続する必要があります。 これは、Azure CLI を使用してサインインする、Azure PowerShell を使用してサインインする、または、メッセージが表示されたときに資格情報を Azure portal に提供する、のいずれかの方法で行います。
az login
Connect-AzAccount
リソース グループを作成する
リソース グループが既にある場合は、「キー コンテナーを作成する」に進むことができます。
リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
リソース グループを作成するには、az group create Azure CLI コマンド、または New-AzResourceGroup Azure PowerShell コマンドを使用するか、Azure portal から行います。
Azure CLI
az group create --name "myResourceGroup" --location eastus
Azure PowerShell
New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"
Key Vault を作成します
キー コンテナーが既にある場合は、「キー コンテナーに高度なアクセス ポリシーを設定する」に進むことができます。
キー コンテナーを作成するには、az keyvault create Azure CLI コマンド、New-AzKeyvault Azure PowerShell コマンド、Azure portal、Resource Manager テンプレートのいずれかを使用します。
警告
暗号化シークレットがリージョンの境界を越えないようにするには、暗号化する VM と同じリージョンとテナントにキー コンテナーを作成して使用する必要があります。
各キー コンテナーには一意の名前が必要です。 次の例では、<your-unique-keyvault-name> をお使いのキー コンテナーの名前に置き換えてください。
Azure CLI
Azure CLI を使用してキー コンテナーを作成する場合は、"--enabled-for-disk-encryption" フラグを追加します。
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "myResourceGroup" --location "eastus" --enabled-for-disk-encryption
Azure PowerShell
Azure PowerShell を使用してキー コンテナーを作成する場合は、"-EnabledForDiskEncryption" フラグを追加します。
New-AzKeyvault -name "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup" -Location "eastus" -EnabledForDiskEncryption
Resource Manager テンプレート
Resource Manager テンプレートを使用してもキー コンテナーを作成できます。
- Azure クイックスタート テンプレートで、[Azure に配置する] をクリックします。
- サブスクリプション、リソース グループ、リソース グループの場所、キー コンテナー名、オブジェクト ID、法律条項および契約を選択し、 [購入] をクリックします。
キー コンテナーに高度なアクセス ポリシーを設定する
重要
新しく作成されたキー コンテナーでは、既定で論理的な削除を行います。 既存のキー コンテナーを使用している場合は、論理的な削除を有効にする必要があります。 「Azure Key Vault の論理的な削除の概要」を参照してください。
Azure プラットフォームには、Key Vault 内の暗号化キーまたはシークレットへのアクセス権を付与する必要があります。これにより、ボリュームをブートして暗号化する際に、それらの情報を VM に提供できるようになります。
作成時に (前の手順で示したように) ディスクの暗号化、デプロイ、またはテンプレートのデプロイに対してキー コンテナーを有効にしなかった場合は、その高度なアクセス ポリシーを更新する必要があります。
Azure CLI
az keyvault update を使用し、キー コンテナーのディスク暗号化を有効にします。
Key Vault のディスク暗号化を有効にする: Enabled-for-disk-encryption が必要です。
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-disk-encryption "true"
必要に応じて Key Vault のデプロイを有効にする: 仮想マシンの作成時など、このキー コンテナーがリソース作成時に参照される場合、Microsoft.Compute リソース プロバイダーがこのキー コンテナーからシークレットを取得できるようにします。
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-deployment "true"
必要に応じて Key Vault のテンプレートのデプロイを有効にする: Resource Manager がコンテナーからシークレットを取得することを許可します。
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-template-deployment "true"
Azure PowerShell
キー コンテナーの PowerShell コマンドレット Set-AzKeyVaultAccessPolicy を使用してキー コンテナーのディスク暗号化を有効にします。
Key Vault のディスク暗号化を有効にする: Azure Disk Encryption には EnabledForDiskEncryption が必要です。
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDiskEncryption
必要に応じて Key Vault のデプロイを有効にする: 仮想マシンの作成時など、このキー コンテナーがリソース作成時に参照される場合、Microsoft.Compute リソース プロバイダーがこのキー コンテナーからシークレットを取得できるようにします。
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDeployment
必要に応じて Key Vault のテンプレートのデプロイを有効にする: テンプレートのデプロイでこのキー コンテナーが参照される場合、Azure Resource Manager がこのキー コンテナーからシークレットを取得できるようにします。
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForTemplateDeployment
Azure portal
キー コンテナーを選択し、[アクセス ポリシー] に移動します。
[アクセスの有効化] で、[Azure Disk Encryption (ボリューム暗号化用)] というラベルのついたボックスを選択します。
必要に応じて、[Azure Virtual Machines (展開用)] と [Azure Resource Manager (テンプレートの展開用)]、またはそのいずれかを選択します。
[保存] をクリックします。
Azure Disk Encryption と自動ローテーション
Azure Key Vault にはキーの自動ローテーションがありますが、現在 Azure Disk Encryption との間には互換性がありません。 具体的には、Azure Disk Encryption では自動ローテーションされた後でも、元の暗号化キーが引き続き使用されます。
暗号化キーをローテーションしても Azure Disk Encryption は中断されませんが、"古い" 暗号化キー (つまり、Azure Disk Encryption で引き続き使用されているキー) を無効にした場合はそうではありません。
キー暗号化キー (KEK) を設定する
重要
キー コンテナーに対するディスクの暗号化を有効にするための実行アカウントには、"閲覧者" アクセス許可が必要です。
暗号化キーのセキュリティに対する追加レイヤーとしてキー暗号化キー (KEK) を使用する場合は、キー コンテナーに KEK を追加します。 キー暗号化キーが指定されている場合、Azure Disk Encryption では、Key Vault への書き込みの前に、そのキーを使用して暗号化シークレットがラップされます。
新しい KEK を生成するには、Azure CLI az keyvault key create
コマンド、Azure PowerShell Add-AzKeyVaultKey コマンドレット、または Azure portal を使用します。 RSA キーの種類を生成する必要があります。Azure Disk Encryption では、現在は楕円曲線キーの使用がサポートされていません。
代わりに、オンプレミスのキー管理 HSM から KEK をインポートすることもできます。 詳細については、Key Vault のドキュメントを参照してください。
キー コンテナー KEK の URL はバージョン管理されている必要があります。 Azure では、このバージョン管理制限が適用されます。 有効なシークレットと KEK URI については、次の例をご覧ください。
- 有効なシークレット URL の例: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 有効な KEK URL の例: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Azure CLI
Azure CLI az keyvault key create
コマンドを使用して新しい KEK を生成し、キー コンテナーに格納します。
az keyvault key create --name "myKEK" --vault-name "<your-unique-keyvault-name>" --kty RSA --size 4096
代わりに、Azure CLI az keyvault key import コマンドを使用して秘密キーをインポートすることもできます。
どちらの場合も、Azure CLI az vm encryption enable
--key-encryption-key パラメーターに KEK の名前を指定します。
az vm encryption enable -g "MyResourceGroup" --name "myVM" --disk-encryption-keyvault "<your-unique-keyvault-name>" --key-encryption-key "myKEK"
Azure PowerShell
Azure PowerShell Add-AzKeyVaultKey コマンドレットを使用して新しい KEK を生成し、キー コンテナーに格納します。
Add-AzKeyVaultKey -Name "myKEK" -VaultName "<your-unique-keyvault-name>" -Destination "HSM" -Size 4096
代わりに、Azure PowerShell az keyvault key import
コマンドを使用して秘密キーをインポートすることもできます。
どちらの場合も、KEK キー コンテナーの ID とご自分の KEK の URL を Azure PowerShell Set-AzVMDiskEncryptionExtension -KeyEncryptionKeyVaultId パラメーターと -KeyEncryptionKeyUrl パラメーターに指定します。 この例では、ディスク暗号化キーと KEK の両方に同じキー コンテナーを使用していることを前提としています。
$KeyVault = Get-AzKeyVault -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup"
$KEK = Get-AzKeyVaultKey -VaultName "<your-unique-keyvault-name>" -Name "myKEK"
Set-AzVMDiskEncryptionExtension -ResourceGroupName MyResourceGroup -VMName "MyVM" -DiskEncryptionKeyVaultUrl $KeyVault.VaultUri -DiskEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyUrl $KEK.Id -SkipVmBackup -VolumeType All