Azure CLI から Azure Storage 暗号化用にカスタマー マネージド キーを構成するConfigure customer-managed keys for Azure Storage encryption from Azure CLI

Azure Storage では、Microsoft マネージド キーまたはカスタマー マネージド キーのいずれかを使用する保存時の暗号化をサポートしています。Azure Storage supports encryption at rest with either Microsoft-managed keys or customer-managed keys. カスタマー マネージド キーを使用すると、アクセス制御の作成、ローテーション、無効化、および取り消しを行うことができます。Customer-managed keys enable you to create, rotate, disable, and revoke access controls.

キーの管理およびキーの使用状況の監査には、Azure Key Vault を使います。Use Azure Key Vault to manage your keys and audit your key usage. 独自のキーを作成してキー コンテナーに格納することも、Azure Key Vault API を使ってキーを生成することもできます。You can either create your own keys and store them in a key vault, or you can use the Azure Key Vault APIs to generate keys. ストレージ アカウントとキー コンテナーは同じリージョンに存在していることが必要です。ただし、サブスクリプションは異なっていてもかまいません。The storage account and the key vault must be in the same region, but they can be in different subscriptions. Azure Key Vault の詳細については、「 What is Azure Key Vault? (Azure Key Vault とは)For more information about Azure Key Vault, see What is Azure Key Vault?

この記事では、Azure CLI を使用して、カスタマー マネージド キーを使用するキー コンテナーを構成する方法について説明します。This article shows how to configure a key vault with customer-managed keys using Azure CLI.

重要

Azure Storage 暗号化でカスタマー マネージド キーを使うには、キー コンテナーで 2 つの必須プロパティ [論理的削除][Do Not Purge](削除しない) が構成されている必要があります。Using customer-managed keys with Azure Storage encryption requires that the key vault have two required properties configured, Soft Delete and Do Not Purge. Azure portal で新しいキー コンテナーを作成すると、これらのプロパティは既定で有効になります。These properties are enabled by default when you create a new key vault in the Azure portal. ただし、既存のキー コンテナーでこれらのプロパティを有効にする必要がある場合は、PowerShell または Azure CLI を使う必要があります。However, if you need to enable these properties on an existing key vault, you must use either PowerShell or Azure CLI. RSA キーで 2048 のキー サイズのみがサポートされています。Only RSA keys and key size 2048 are supported.

ストレージ アカウントに ID を割り当てるAssign an identity to the storage account

お使いのストレージ アカウントでカスタマー マネージド キーを有効にするには、まず、そのストレージ アカウントにシステム割り当てマネージド ID を割り当てます。To enable customer-managed keys for your storage account, first assign a system-assigned managed identity to the storage account. このマネージド ID を使って、キー コンテナーへのアクセス許可をストレージ アカウントに付与します。You'll use this managed identity to grant the storage account permissions to access the key vault.

Azure CLI を使用してマネージド ID を割り当てるには、az storage account update を呼び出します。To assign a managed identity using Azure CLI, call az storage account update. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

az account set --subscription <subscription-id>

az storage account update \
    --name <storage-account> \
    --resource-group <resource_group> \
    --assign-identity

Azure CLI を使用してシステム割り当てマネージド ID を構成する方法について詳しくは、「Azure CLI を使用して Azure VM 上に Azure リソースのマネージド ID を構成する」をご覧ください。For more information about configuring system-assigned managed identities with Azure CLI, see Configure managed identities for Azure resources on an Azure VM using Azure CLI.

新しいキー コンテナーを作成するCreate a new key vault

Azure Storage 暗号化用にカスタマー マネージド キーを格納するために使用するキー コンテナーでは、キーを保護するための 2 つの設定、 [論理的な削除][Do Not Purge](消去しない) を有効にする必要があります。The key vault that you use to store customer-managed keys for Azure Storage encryption must have two key protection settings enabled, Soft Delete and Do Not Purge. これらの設定を有効にした状態で、PowerShell または Azure CLI を使用して新しいキー コンテナーを作成するには、次のコマンドを実行します。To create a new key vault using PowerShell or Azure CLI with these settings enabled, execute the following commands. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

Azure CLI を使用して新しいキー コンテナーを作成するには、az keyvault create を呼び出します。To create a new key vault using Azure CLI, call az keyvault create. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

az keyvault create \
    --name <key-vault> \
    --resource-group <resource_group> \
    --location <region> \
    --enable-soft-delete \
    --enable-purge-protection

キー コンテナーのアクセス ポリシーを構成するConfigure the key vault access policy

次に、キー コンテナーのアクセス ポリシーを構成し、ストレージ アカウントからアクセスできるようにします。Next, configure the access policy for the key vault so that the storage account has permissions to access it. この手順では、前の手順でストレージ アカウントに割り当てたマネージド ID を使用します。In this step, you'll use the managed identity that you previously assigned to the storage account.

キー コンテナーのアクセス ポリシーを設定するには、az keyvault set-policy を呼び出します。To set the access policy for the key vault, call az keyvault set-policy. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

storage_account_principal=$(az storage account show \
    --name <storage-account> \
    --resource-group <resource-group> \
    --query identity.principalId \
    --output tsv)
az keyvault set-policy \
    --name <key-vault> \
    --resource-group <resource_group>
    --object-id $storage_account_principal \
    --key-permissions get recover unwrapKey wrapKey

新しいキーを作成するCreate a new key

次に、キー コンテナーにキーを作成します。Next, create a key in the key vault. キーを作成するには、az keyvault key create を呼び出します。To create a key, call az keyvault key create. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

az keyvault key create
    --name <key> \
    --vault-name <key-vault>

カスタマー マネージド キーによる暗号化を有効にするConfigure encryption with customer-managed keys

既定では、Azure Storage の暗号化には Microsoft マネージド キーを使用します。By default, Azure Storage encryption uses Microsoft-managed keys. カスタマー マネージド キーを使うように Azure ストレージ アカウントを構成し、そのストレージ アカウントに関連付けるキーを指定します。Configure your Azure Storage account for customer-managed keys and specify the key to associate with the storage account.

ストレージ アカウントの暗号化設定を更新するには、az storage account update を呼び出します。To update the storage account's encryption settings, call az storage account update. この例では、キー コンテナーの URI とキーのバージョンの照会も行います。どちらの値も、キーをストレージ アカウントに関連付けるために必要です。This example also queries for the key vault URI and key version, both of which values are needed to associate the key with the storage account. 山かっこ内のプレースホルダーをご自分の値に置き換えることを忘れないようにしてください。Remember to replace the placeholder values in brackets with your own values.

key_vault_uri=$(az keyvault show \
    --name <key-vault> \
    --resource-group <resource_group> \
    --query properties.vaultUri \
    --output tsv)
key_version=$(az keyvault key list-versions \
    --name <key> \
    --vault-name <key-vault> \
    --query [].kid \
    --output tsv | cut -d '/' -f 6)
az storage account update 
    --name <storage-account> \
    --resource-group <resource_group> \
    --encryption-key-name <key> \
    --encryption-key-version $key_version \
    --encryption-key-source Microsoft.Keyvault \
    --encryption-key-vault $key_vault_uri

キーのバージョンを更新するUpdate the key version

キーの新しいバージョンを作成した場合、その新しいバージョンを使用するには、ストレージ アカウントを更新する必要があります。When you create a new version of a key, you'll need to update the storage account to use the new version. まず、az keyvault show を呼び出すことでキー コンテナーの URI を照会し、az keyvault key list-versions を呼び出すことでキーのバージョンを照会します。First, query for the key vault URI by calling az keyvault show, and for the key version by calling az keyvault key list-versions. 次に、az storage account update を呼び出して、キーの新しいバージョンを使用するようにストレージ アカウントの暗号化設定を更新します (前のセクションを参照)。Then call az storage account update to update the storage account's encryption settings to use the new version of the key, as shown in the previous section.

次の手順Next steps