Configurer des clés gérées par le client pour votre compte Azure Cosmos DB avec Azure Key Vault
S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table
Les données stockées dans votre compte Azure Cosmos DB sont automatiquement chiffrées à l’aide de clés gérées par Microsoft (clés gérées par le service). Vous pouvez éventuellement choisir d’ajouter une deuxième couche de chiffrement avec des clés gérées par vos soins (clés gérées par le client ou CMK).
Vous devez stocker les clés gérées par le client dans Azure Key Vault et fournir une clé pour chaque compte Azure Cosmos DB activé avec des clés gérées par le client. Cette clé est utilisée pour chiffrer toutes les données stockées dans ce compte.
Notes
Si vous souhaitez activer des clés gérées par le client sur vos comptes Azure Cosmos DB existants, vous pouvez consulter ce lien pour plus d’informations
Avertissement
Les noms de champs suivants sont réservés sur les tables d’API Cassandra dans les comptes au moyen de clés gérées par le client :
id
ttl
_ts
_etag
_rid
_self
_attachments
_epk
Lorsque les clés gérées par le client ne sont pas activées, seuls sont réservés les noms de champs commençant par __sys_
.
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
Si le fournisseur de ressources Microsoft.DocumentDB n’est pas déjà inscrit, vous devez l’inscrire dans un premier temps.
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 :
Important
Votre instance Azure Key Vault doit être accessible via l’accès au réseau public ou autoriser les services Microsoft approuvés à contourner son pare-feu. Une instance accessible exclusivement via des points de terminaison privés ne peut pas être utilisée pour héberger vos clés gérées par le client.
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.
Si vous créez une instance Azure Key Vault, activez ces propriétés lors de la création :
Si vous utilisez une instance Azure Key Vault existante, vous pouvez vérifier que ces propriétés sont activées en examinant la section Propriétés dans le Portail Azure. Si une de ces propriétés n’est pas activée, consultez les sections intitulées « Activation de la suppression réversible » et « Activation de la protection de purge » dans l’un des articles suivants :
Une fois la protection par suppression définitive et la suppression réversible activées, sous l’onglet stratégie d’accès, vous pouvez choisir votre modèle d’autorisation préféré à utiliser. Les stratégies d’accès sont définies par défaut, mais le contrôle d’accès en fonction du rôle Azure est également pris en charge.
Les autorisations nécessaires doivent être accordées pour permettre à Cosmos DB d’utiliser votre clé de chiffrement. Cette étape varie selon si Key Vault Azure utilise des stratégies d’accès ou un contrôle d’accès en fonction du rôle.
Notes
Il est important de noter qu’un seul modèle de sécurité peut être actif à la fois. Il n’est donc pas nécessaire d’effectuer l’amorçage du contrôle d’accès en fonction du rôle si Azure Key Vault est configuré pour utiliser des stratégies d’accès et vice versa)
Dans cette variante, utilisez le principal Azure Cosmos DB pour créer une stratégie d’accès avec les autorisations appropriées.
Dans le Portail Azure, accédez à l’instance Azure Key Vault que vous prévoyez d’utiliser pour héberger vos clés de chiffrement. Sélectionnez Stratégies d’accès dans le menu de gauche :
Sélectionnez + Ajouter une stratégie d’accès.
Dans le menu déroulant Autorisations de clé, sélectionnez les autorisations Get, Unwrap Key et Wrap Key :
Sous Sélectionner le principal, sélectionnez Aucune sélection.
Recherchez le principal Azure Cosmos DB et sélectionnez-le. Pour faciliter la recherche, vous pouvez également effectuer une recherche par ID d’application :
00001111-aaaa-2222-bbbb-3333cccc4444
pour toute région Azure, à l’exception des régions Azure Government où l’ID d’application est11112222-bbbb-3333-cccc-4444dddd5555
.Conseil
Cette opération enregistre l’identité interne d’Azure Cosmos DB dans votre stratégie d’accès Azure Key Vault. Si le principal Azure Cosmos DB ne figure pas dans la liste, vous devrez peut-être réinscrire le fournisseur de ressources Microsoft.DocumentDB.
Choisissez Sélectionner en bas.
Sélectionnez Ajouter pour ajouter la nouvelle stratégie d’accès.
Sélectionnez Enregistrer sur l’instance Key Vault pour enregistrer toutes les modifications.
Dans le Portail Azure, accédez à l’instance Azure Key Vault que vous prévoyez d’utiliser pour héberger vos clés de chiffrement. Sélectionnez Contrôle d’accès (IAM) dans le menu de gauche, puis sélectionnez Accorder l’accès à cette ressource.
Recherchez le rôle Administrateur(-trice) Key Vault et attribuez-le vous-même. Pour ce faire, recherchez d’abord le nom du rôle dans la liste, puis cliquez sur l’onglet « Membres ». Une fois sur l’onglet, sélectionnez l’option « Utilisateur, groupe ou principal de service » dans la radio, puis recherchez votre compte Azure. Une fois le compte sélectionné, le rôle peut être attribué.
Ensuite, les autorisations nécessaires doivent être affectées au principal de Cosmos DB. Ainsi, comme pour la dernière attribution de rôle, accédez à la page d’attribution, mais cette fois-ci, recherchez le rôle « Key Vault Crypto Service Encryption User » et, sous l’onglet membres, recherchez le principal de Cosmos DB. Pour rechercher le principal, recherchez le principal Azure Cosmos DB et sélectionnez-le.
Important
Dans la région Azure Government, l’ID d’application est
11112222-bbbb-3333-cccc-4444dddd5555
.Sélectionnez Vérifier + attribuer pour que le rôle soit attribué à Cosmos DB.
Ensuite, utilisez la page de contrôle d’accès pour vérifier que tous les rôles ont été correctement configurés.
Une fois les rôles attribués, sélectionnez « Afficher l’accès à cette ressource » dans la page IAM Access Control pour vérifier que tout a été correctement défini.
Dans la page, définissez l’étendue sur « cette ressource » et vérifiez que vous disposez du rôle Administrateur Key Vault et que le principal Cosmos DB a le rôle Utilisateur de chiffrement de chiffrement Key Vault.
Ici, créez une clé à l’aide d’Azure Key Vault et récupérez l’identificateur unique.
Dans le Portail Azure, accédez à l’instance Azure Key Vault que vous prévoyez d’utiliser pour héberger vos clés de chiffrement. Ensuite, sélectionnez Clés dans le menu de gauche :
Sélectionnez Générer/importer, attribuez un nom à la nouvelle clé, puis sélectionnez une taille de clé RSA. Un minimum de 3072 est recommandé pour une sécurité optimale. Sélectionnez ensuite Créer :
Conseil
Vous pouvez également utiliser Azure CLI pour générer une clé avec :
az keyvault key create \ --vault-name <name-of-key-vault> \ --name <name-of-key>
Pour plus d’informations sur la gestion d’un coffre de clés avec Azure CLI, consultez l’article Gérer Azure Key Vault avec Azure CLI.
Une fois la clé créée, sélectionnez la clé que vous venez de créer puis sa version actuelle.
Copiez l’identificateur de clé de la clé à l’exception de la partie qui suit la dernière barre oblique :
Créez un compte Azure Cosmos DB à l’aide du Portail Azure ou d’Azure CLI.
Lorsque vous créez un compte Azure Cosmos DB à partir du Portail Azure, choisissez Clé gérée par le client à l’étape Chiffrement. Dans le champ URI de clé, collez l’identificateur URI/clé de la clé Azure Key Vault que vous avez copiée à partir de l’étape précédente :
Important
Selon votre configuration réseau, vous devrez peut-être autoriser l’accès à Azure Cosmos DB à partir d’autres services Azure.
Cette stratégie d’accès garantit que votre compte Azure Cosmos DB peut accéder à vos clés de chiffrement. La stratégie d’accès est implémentée en accordant l’accès à une identité Microsoft Entra spécifique. Deux types d’identités sont prises en charge :
- L’identité interne d’Azure Cosmos DB peut être utilisée pour accorder l’accès au service Azure Cosmos DB.
- L’identité managée de votre compte Azure Cosmos DB peut être utilisée pour accorder l’accès spécifiquement à votre compte.
Non disponible
Vous pouvez créer un compte de sauvegarde continue à l’aide d’Azure CLI ou d’un modèle Azure Resource Manager.
Actuellement, seule l’identité managée affectée par l’utilisateur est prise en charge pour la création de comptes de sauvegarde continue.
Une fois le compte créé, vous pouvez mettre à jour l’identité vers l’identité managée affectée par le système.
L’utilisateur peut également créer une identité système avec le mode de sauvegarde périodique, puis migrer le compte vers le mode de sauvegarde continue en suivant les instructions fournies dans Migrer un compte Azure Cosmos DB du mode de sauvegarde périodique au mode de sauvegarde continue
Non disponible
Une identité affectée par l’utilisateur est requise dans la demande de restauration, car l’identité managée du compte source (identités affectées par l’utilisateur et affectées par le système) ne peut pas être transmise automatiquement au compte de la base de données cible.
Les données que vous stockez dans votre compte Azure Cosmos DB lorsque vous utilisez des clés gérées par le client finissent par être chiffrées deux fois :
- Une fois par le biais du chiffrement par défaut effectué avec des clés gérées par Microsoft.
- Une fois par le biais du chiffrement supplémentaire effectué avec les clés gérées par le client.
Le double chiffrement s’applique uniquement au stockage transactionnel Azure Cosmos DB principal. Certaines fonctionnalités impliquent la réplication interne de vos données vers un deuxième niveau de stockage où le double chiffrement n’est pas fourni, même avec l’utilisation de clés gérées par le client. Voici quelques fonctionnalités :
La rotation de la clé gérée par le client utilisée par votre compte Azure Cosmos DB peut être effectuée de deux manières.
Créez une nouvelle version de la clé actuellement utilisée à partir d’Azure Key Vault :
Remplacez la clé actuellement utilisée par une autre, en mettant à jour l’URI de la clé sur votre compte. Sur le portail Azure, accédez à votre compte Azure Cosmos DB, puis sélectionnez Chiffrement des données dans le menu de gauche :
Remplacez ensuite l’URI de la clé par la nouvelle clé que vous souhaitez utiliser, puis sélectionnez Enregistrer :
Voici comment obtenir le même résultat dans PowerShell :
# Variable for resource group name $RESOURCE_GROUP_NAME = "<resource-group-name>" # Variable for account name $ACCOUNT_NAME = "<globally-unique-account-name>" # Variable for new key URI in the key vault $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>" $parameters = @{ ResourceGroupName = $RESOURCE_GROUP_NAME Name = $ACCOUNT_NAME ResourceType = "Microsoft.DocumentDb/databaseAccounts" } $ACCOUNT = Get-AzResource @parameters $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI $ACCOUNT | Set-AzResource -Force
La clé ou la version de clé précédente peut être désactivée une fois que les journaux d’audit Azure Key Vault n’affichent plus d’activité Azure Cosmos DB sur cette clé ou version de clé. Aucune autre activité ne doit avoir lieu sur la clé ou version de clé précédente après 24 heures de rotation de clé.
La rotation automatique de clé dans Azure Key Vault est prise en charge tant que la clé précédente n’est pas désactivée ou supprimée. Les systèmes internes ont besoin d’un certain temps pour prendre en compte la nouvelle version de la clé après avoir vérifié que le compte n’est pas révoqué ou qu’il n’est pas en cours de transition pour activer les clés managées par le client.
En cas d’erreurs avec les clés gérées par le client dans Azure Cosmos DB, Azure Cosmos DB retourne les détails de l’erreur avec un code de sous-état HTTP dans la réponse. Vous pouvez utiliser ce code de sous-état pour déboguer la cause racine du problème. Pour obtenir la liste des codes de sous-état HTTP pris en charge, consultez l’article Codes d’état HTTP pour Azure Cosmos DB.
Vous trouverez ici des questions fréquemment posées sur la configuration des clés gérées par le client dans Azure Cosmos DB.
Non, il n’y a aucun frais pour activer cette fonctionnalité.
Les unités de requête consommées par vos opérations de base de données connaissent une augmentation afin de refléter le traitement supplémentaire nécessaire au chiffrement et déchiffrement de vos données lorsque vous utilisez des clés gérées par le client. La consommation de RU supplémentaire peut entraîner une utilisation légèrement supérieure de la capacité provisionnée. Utilisez ce tableau comme guide :
Type d'opération | Augmentation des RU |
---|---|
Lectures de points (extraction d’éléments par ID) | +5 % par opération |
Toute opération d’écriture | + 6 % par opération | Environ + 0,06 RU par propriété indexée |
Requêtes, lecture de flux de modification ou flux de conflits | +15 % par opération |
Toutes les données stockées dans votre compte Azure Cosmos DB sont chiffrées avec les clés gérées par le client, à l’exception des métadonnées suivantes :
Les noms de vos comptes, bases de données et conteneurs Azure Cosmos DB
Les noms de vos procédures stockées
Les chemins de propriété déclarés dans vos stratégies d’indexation
Les valeurs de clés de partition de vos conteneurs
Les clés gérées par le client sont-elles prises en charge pour les comptes Azure Cosmos DB existants ?
Oui. Vous pouvez vous référer à la Configuration des clés managées par le client pour vos comptes Azure Cosmos DB existants
Est-il possible d’utiliser des clés gérées par le client avec le magasin analytique Azure Cosmos DB ?
Oui, Azure Synapse Link prend uniquement en charge la configuration des clés gérées par le client en utilisant l’identité managée de votre compte Azure Cosmos DB. Vous devez utiliser l’identité managée de votre compte Azure Cosmos DB dans votre stratégie d’accès Azure Key Vault avant d’activer Azure Synapse Link sur votre compte. Pour obtenir un guide pratique sur l’activation de l’identité managée et son utilisation dans une stratégie d’accès, consultez Accéder à Azure Key Vault à partir d’Azure Cosmos DB à l’aide d’une identité managée.
Existe-t-il un plan pour prendre en charge une plus grande précision que celle des clés au niveau du compte ?
Actuellement non, mais les clés au niveau du conteneur sont prises en compte.
Comment puis-je savoir si les clés gérées par le client sont activées sur mon compte Azure Cosmos DB ?
Sur le portail Azure, accédez à votre compte Azure Cosmos DB, puis recherchez l’entrée Chiffrement des données dans le menu de gauche. Si cette entrée existe, les clés gérées par le client sont activées sur votre compte :
Vous pouvez également extraire par programme les détails de votre compte Azure Cosmos DB et rechercher la propriété keyVaultKeyUri
.
Azure Cosmos DB prend des sauvegardes régulières et automatiques des données stockées dans votre compte. Cette opération sauvegarde les données chiffrées.
Les conditions suivantes sont nécessaires pour restaurer correctement une sauvegarde périodique :
- La clé de chiffrement que vous avez utilisée au moment de la sauvegarde est obligatoire et doit être disponible dans Azure Key Vault. Cette condition requiert qu’aucune révocation n’ait été effectuée et que la version de la clé qui a été utilisée au moment de la sauvegarde soit toujours activée.
- Si vous avez utilisé une identité managée affectée par le système dans la stratégie d’accès, accordez temporairement l’accès à l’identité interne d’Azure Cosmos DB avant de restaurer vos données. Cette spécification existe car une identité managée affectée par le système est spécifique à un compte et ne peut pas être réutilisée dans le compte cible. Une fois les données entièrement restaurées sur le compte cible, vous pouvez définir la configuration d’identité souhaitée et supprimer l’identité de l’utilisateur principal de la stratégie d’accès Key Vault.
Azure Cosmos DB vous donne la possibilité de configurer des sauvegardes continues sur votre compte. Avec la sauvegarde continue, vous pouvez restaurer vos données à un instant dans le passé au cours des 30 derniers jours. Pour utiliser des sauvegardes continues sur un compte où les clés gérées par le client sont activées, vous devez utiliser une identité managée affectée par le système ou par l’utilisateur dans la stratégie d’accès Key Vault. Les identités internes d’Azure Cosmos DB ne sont actuellement pas prises en charge sur les comptes utilisant des sauvegardes continues.
Étapes préalables à la mise à jour de l’identité affectée par l’utilisateur par les comptes avec clés gérées par le client.
- Ajoutez une identité affectée par l’utilisateur au compte Cosmos DB et accordez des autorisations dans une stratégie d’accès au coffre de clés.
- Définissez l’identité affectée par l’utilisateur comme identité par défaut par Azure CLI ou ARM.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity
Les conditions suivantes sont nécessaires pour effectuer une restauration à un instant dans le passé :
- La clé de chiffrement que vous avez utilisée au moment de la sauvegarde est obligatoire et doit être disponible dans Azure Key Vault. Cette exigence signifie qu’aucune révocation n’a été effectuée et que la version de la clé qui a été utilisée au moment de la sauvegarde est toujours activée.
- Vous devez vous assurer que l’identité managée affectée par l’utilisateur utilisée à l’origine sur le compte source est toujours déclarée dans la stratégie d’accès Key Vault.
Important
Si vous révoquez la clé de chiffrement avant de supprimer votre compte, la sauvegarde de votre compte peut manquer les données écrites jusqu’à 1 heure avant que la révocation n’ait été effectuée.
La révocation de la clé s’effectue en désactivant la dernière version de la clé :
Sinon, pour révoquer toutes les clés d’une instance Azure Key Vault, vous pouvez supprimer la stratégie d’accès accordée au principal Azure Cosmos DB :
La seule opération possible lorsque la clé de chiffrement a été révoquée est la suppression du compte.
Attribuer une nouvelle identité managée au compte restauré de la base de données pour continuer à accéder ou récupérer l’accès au compte de la base de données
L’identité affectée par l’utilisateur est liée à un compte Cosmos DB spécifié, chaque fois que nous attribuons une identité affectée par l’utilisateur à un compte, ARM transfère la requête aux identités de service managées pour créer cette connexion. Actuellement, nous transférons les informations sur l’identité utilisateur du compte source de base de données vers le compte cible de base de données pendant la restauration (pour la restauration de sauvegarde continue et périodique) de la clé gérée par le client + Identité attribuée par l’utilisateur,
Étant donné que la métadonnée sur l’identité est liée au compte source de base de données, le Workflow de restauration ne revient pas à l’identité sur le compte cible de base de données. Les comptes restaurés de base de données sont ainsi dans un état incorrect et deviennent inaccessibles une fois que le compte source est supprimé et que l’heure de renouvellement de l’identité a expiré.
Procédure à suivre pour attribuer une nouvelle identité managée :
- Créer une nouvelle identité managée affectée par l’utilisateur.
- Accorder à la clé KeyVault un accès à cette identité.
- Attribuer cette nouvelle identité à votre compte restauré de la base de données.
- Découvrez plus en détail le chiffrement des données dans Azure Cosmos DB.