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
Connectez-vous au Portail Azure, accédez à votre abonnement Azure et sélectionnez Fournisseurs de ressources sous l’onglet Paramètres :
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 :
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
- Découvrez plus en détail le chiffrement des données dans Azure Cosmos DB.