Azure Managed HSM Key Vault で Azure Cosmos DB アカウントのカスタマー マネージド キーを構成する
適用対象: NoSQL MongoDB Cassandra Gremlin Table
Azure Key Vault でカスタマー マネージド キーを構成する方法のリンクを参照してください
Note
現在、カスタマー マネージド キーは新しい Azure Cosmos DB アカウントでのみ使用できます。 これらは、アカウントの作成時に構成します。
Azure サブスクリプション用の Azure Cosmos DB リソース プロバイダーを登録する
Azure portal にサインインし、お使いの Azure サブスクリプションに移動して [設定] タブの [リソース プロバイダー] を選択します。
Microsoft.DocumentDB リソース プロバイダーを検索します。 そのリソース プロバイダーが既に登録済みとしてマークされているどうかを確認します。 そうでない場合は、リソース プロバイダーを選択して [登録] を選択します。
Azure Managed HSM キー コンテナーを構成する
Azure Cosmos DB でカスタマー マネージド キーを使用するには、暗号化キーをホストするために使用しようとしている Azure Key Vault インスタンスで 2 つのプロパティを設定する必要があります。論理的な削除と消去保護です。
論理的な削除は既定で有効であるため、消去保護のみを有効にする必要があります。 Managed HSM を作成する場合は、次の CLI コマンドを使います。
objectId = az ad signed-in-user show --query id -o tsv
az keyvault create --hsm-name $hsmName --resource-group $rgName --location $location --enable-purge-protection true --administrators $objectId --retention-days 7
既存の Azure Managed HSM Key Vault インスタンスを使っている場合は、次のコマンドを使って [プロパティ] セクションを見て、これらのプロパティが有効であることを確認できます。
az keyvault show $hsmName $rgName
消去保護が有効ではない場合は、次のコマンドを使用できます。
az keyvault update-hsm --enable-purge-protection true --hsm-name $hsmName --resource-group $rgName
Managed HSM で使用できる CLI コマンドの詳細については、次の Azure キー コンテナーを参照してください
暗号化キーの作成と対応するロールの割り当て
Managed HSM をアクティブ化したら、CMK アカウントに使うキーを作成する必要があります。 このため、ロール "Managed HSM Crypto User" が管理者に割り当てられます。 RBAC (ロールベースのアクセス制御) と Managed HSM の連携方法の詳細については、次の記事を参照してください: 「Managed HSM のローカル RBAC の組み込みロール - Azure Key Vault | Microsoft Docs」と「Managed HSM のアクセス制御 | Microsoft Learn」
objectId = az ad signed-in-user show --query id -o tsv
$keyName = "Name of your key"
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto User" --assignee $objectId --scope /keys
az keyvault key create --hsm-name $hsmName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 3072
キーを作成したので、アカウントをプロビジョニングするために、対応するロールを Cosmos DB プリンシパル ID または Azure マネージド ID に割り当てる必要があります。 ロール "Managed HSM Crypto Service Encryption User" を使います。これは、CMK アカウントを操作するために必要な 3 つのアクセス許可 (取得、ラップ、ラップ解除) があるからです。 また、これらのアクセス許可は、Azure Managed HSM に格納されているキーに対してのみ有効になるようにスコープも設定されています。
Azure マネージド ID を使わない場合:
$cosmosPrincipal = az ad sp show --id a232010e-820c-4083-83bb-3ace5fc29d0b --query id -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI
Azure マネージド ID を使う場合:
$identityResourceID = az identity show -g $rgName -n $identityName --query id -o tsv
$identityPrincipal = az identity show -g $rgName -n $identityName --query principalId -o tsv
$defaultIdentity = "UserAssignedIdentity={0}" -f $identityResourceID
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI --assign-identity $identityResourceID --default-identity $defaultIdentity
この場合、Azure Managed HSM キー コンテナーに格納されたキーを使って、Cosmos DB CMK アカウントがプロビジョニングされます。
システム割り当てマネージド ID への切り替え。
Cosmos DB は、CMK Cosmos DB アカウントにシステム割り当てマネージド ID を使うことをサポートしています。 システム割り当てマネージド ID CMK の詳細については、「Azure Key Vault で Azure Cosmos DB アカウントのカスタマー マネージド キーを構成する」を参照してください。
次のコマンドを実行して、既定の ID からシステム割り当てマネージド ID に切り替えます。
az cosmosdb identity assign -n $cosmosName -g $rgName
$principalMSIId = az cosmosdb identity show -n $cosmosName -g $rgName --query principalId -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $principalMSIId --scope /keys
az cosmosdb update --resource-group $rgName --name $cosmosName --default-identity "SystemAssignedIdentity"
必要に応じて、Cosmos DB のプリンシパル ID または Azure マネージド ID への元のロールの割り当てを削除することもできます。
az keyvault role assignment delete --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
次のステップ
- Azure Cosmos DB でのデータの暗号化について学習します。