Configurer des clés gérées par le client pour votre compte Azure Cosmos DB avec Azure HSM managé Key Vault

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Reportez-vous au lien Configurer des clés gérées par le client avec Azure Key Vault

Notes

Actuellement, les clés gérées par le client ne sont disponibles que pour les nouveaux comptes Azure Cosmos DB. Vous devez les configurer lors de la création du compte.

Inscrire le fournisseur de ressources Azure Cosmos DB dans l’abonnement Azure

  1. Connectez-vous au Portail Azure, accédez à votre abonnement Azure et sélectionnez Fournisseurs de ressources sous l’onglet Paramètres :

    Capture d’écran de l’option Fournisseurs de ressources dans le menu de navigation des ressources.

  2. Recherchez le fournisseur de ressources Microsoft.DocumentDB. Vérifiez si le fournisseur de ressources est déjà marqué comme inscrit. Si ce n’est pas le cas, choisissez le fournisseur de ressources et sélectionnez Inscrire :

    Capture d’écran de l’option Inscrire pour le fournisseur de ressources Microsoft.DocumentDB.

Configurer votre Azure Key Vault HSM managé

L’utilisation de clés gérées par le client avec Azure Cosmos DB vous oblige à définir deux propriétés sur l’instance Azure Key Vault que vous prévoyez d’utiliser pour héberger vos clés de chiffrement : Suppression réversible et Protection de purge.

Étant donné que la suppression réversible est activée par défaut, seule la protection contre le vidage doit être activée. Lorsque vous créez votre HSM managé, utilisez la commande CLI suivante :

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

Si vous utilisez une instance existante de Azure HSM Managé Key Vault, vous pouvez vérifier que ces propriétés sont activées en consultant la section Propriétés à l'aide de la commande suivante :

az keyvault show $hsmName $rgName

Si la protection contre le vidage n’est pas activée, vous pouvez utiliser la commande suivante :

az keyvault update-hsm --enable-purge-protection true --hsm-name $hsmName --resource-group $rgName

Pour plus d’informations sur les commandes CLI disponibles pour le HSM managé, reportez-vous aux Key Vault Azure suivants

Création de la clé de chiffrement et attribution des rôles correspondants

Une fois le HSM managé activé, la clé qui va être utilisée pour le compte CMK doit être créée. Pour cela, le rôle « Utilisateur de chiffrement HSM managé » est attribué à l’administrateur. Pour en savoir plus sur le fonctionnement du contrôle d’accès en fonction du rôle (RBAC) avec le HSM managé, consultez les articles suivants : Rôles intégrés RBAC locaux HSM managés - Azure Key Vault | Microsoft Learn et le contrôle d’accès HSM managé Azure | 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

Maintenant que la clé a été créée, le rôle correspondant doit être attribué à l’ID de principal Cosmos DB ou à l’identité managée Azure pour l’approvisionnement du compte. Le rôle « Utilisateur de chiffrement du service de chiffrement HSM managé » est utilisé, car il dispose des trois seules autorisations nécessaires pour fonctionner avec un compte CMK, à être : get, envelopper et désenvelopper. Ces autorisations sont également limitées pour être utiles uniquement sur les clés stockées sur le HSM managé Azure.

Sans identité managée Azure :

$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

Avec l’identité managée Azure :

$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

Cela provisionne un compte CMK Cosmos DB avec une clé stockée sur un Key Vault HSM managé Azure.

Basculer vers l’identité managée affectée par le système.

Cosmos DB prend en charge l’utilisation d’une identité managée affectée par le système pour un compte CMK Cosmos DB. Pour plus d’informations sur la clé CMK d’identité managée affectée par le système, consultez : Configurer des clés gérées par le client pour votre compte Azure Cosmos DB

Exécutez les commandes suivantes pour passer de l’identité par défaut à l’identité managée affectée par le système :

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"

À titre facultatif, l’attribution de rôle d’origine à l’ID principal de Cosmos DB ou à l’identité managée Azure peut être supprimée.

az keyvault role assignment delete --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys

Étapes suivantes