Azure Disk Encryption 用のキー コンテナーの作成と構成

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

Azure Disk Encryption では、Azure Key Vault を使用して、ディスク暗号化キーとシークレットを制御および管理します。 キー コンテナーの詳細については、「Azure Key Vault の概要」と「キー コンテナーのセキュリティ保護」を参照してください。

警告

Azure Disk Encryption で使用するためのキー コンテナーの作成と構成には、次の 3 つの手順が必要です。

  1. 必要に応じて、リソース グループを作成する。
  2. キー コンテナーを作成する。
  3. キー コンテナーの高度なアクセス ポリシーを設定する。

これらの手順は、次のクイックスタートで説明されています。

また、必要に応じて、キー暗号化キー (KEK) を生成またはインポートすることもできます。

Note

この記事の手順は、Azure Disk Encryption の前提条件となる CLI スクリプトおよび Azure Disk Encryption の前提条件となる PowerShell スクリプトに関するページで自動化されています。

ツールをインストールし、Azure に接続する

この記事の手順を完了するには、Azure CLIAzure 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 portalResource 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 テンプレートを使用してもキー コンテナーを作成できます。

  1. Azure クイックスタート テンプレートで、[Azure に配置する] をクリックします。
  2. サブスクリプション、リソース グループ、リソース グループの場所、キー コンテナー名、オブジェクト 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

  1. キー コンテナーを選択し、[アクセス ポリシー] に移動します。

  2. [アクセスの有効化] で、[Azure Disk Encryption (ボリューム暗号化用)] というラベルのついたボックスを選択します。

  3. 必要に応じて、[Azure Virtual Machines (展開用)][Azure Resource Manager (テンプレートの展開用)]、またはそのいずれかを選択します。

  4. [保存] をクリックします。

    Azure key vault advanced access policies

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 については、次の例をご覧ください。

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

次のステップ