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).

Diagram of the layers of encryption around customer data.

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

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. L’activation des clés gérées par le client sur vos comptes existants est disponible en préversion. Pour plus d’informations, reportez-vous au lien ici.

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_.

Prérequis

Inscrivez-vous auprès du fournisseur de ressources Azure Cosmos DB

Si le fournisseur de ressources Microsoft.DocumentDB n’est pas déjà inscrit, vous devez l’inscrire dans un premier temps.

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

    Screenshot of the Resource providers option in the resource navigation menu.

  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 :

    Screenshot of the Register option for the Microsoft.DocumentDB resource provider.

Configurer votre instance Azure Key Vault

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.

  1. Si vous créez une instance Azure Key Vault, activez ces propriétés lors de la création :

    Screenshot of Azure Key Vault options including soft delete and purge protection.

  2. 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 :

Choix du modèle de sécurité préféré

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)

Ajouter une stratégie d’accès

Dans cette variante, utilisez le principal Azure Cosmos DB pour créer une stratégie d’accès avec les autorisations appropriées.

  1. 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 :

    Screenshot of the Access policies option in the resource navigation menu.

  2. Sélectionnez + Ajouter une stratégie d’accès.

  3. Dans le menu déroulant Autorisations de clé, sélectionnez les autorisations Get, Unwrap Key et Wrap Key :

    Screenshot of access policy permissions including Get, Unwrap key, and Wrap key.

  4. Sous Sélectionner le principal, sélectionnez Aucune sélection.

  5. Recherchez le principal Azure Cosmos DB et sélectionnez-le. Pour faciliter la recherche, vous pouvez également effectuer une recherche par ID d’application : a232010e-820c-4083-83bb-3ace5fc29d0b pour toute région Azure, à l’exception des régions Azure Government où l’ID d’application est 57506a73-e302-42a9-b869-6f12d9ec29e9.

    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.

  6. Choisissez Sélectionner en bas.

    Screenshot of the Select principal option on the Add access policy page.

  7. Sélectionnez Ajouter pour ajouter la nouvelle stratégie d’accès.

  8. Sélectionnez Enregistrer sur l’instance Key Vault pour enregistrer toutes les modifications.

Ajout de rôles de contrôle d’accès en fonction du rôle

  1. 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.

    Screenshot of the Access control option in the resource navigation menu.

    Screenshot of the Grant access to this resource option on the Access control page.

  2. Recherchez le « rôle Administrateur 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é.

    Screenshot of the Key vault administrator role in the search results.

    Screenshot of a role assignment on the Access control page.

  3. 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.

    Screenshot of the Azure Cosmos DB principal being assigned to a permission.

    Important

    Dans la région Azure Government, l’ID d’application est 57506a73-e302-42a9-b869-6f12d9ec29e9.

  4. Sélectionnez Vérifier + attribuer pour que le rôle soit attribué à Cosmos DB.

Vérifier que les rôles ont été correctement définis

Ensuite, utilisez la page de contrôle d’accès pour vérifier que tous les rôles ont été correctement configurés.

  1. 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.

    Screenshot of the View access to resource option on the Access control page.

  2. 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.

    Screenshot of the scope adjustment option for a role assignment query.

Générer une clé dans Azure Key Vault

Ici, créez une clé à l’aide d’Azure Key Vault et récupérez l’identificateur unique.

  1. 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 :

    Screenshot of the Keys option in the resource navigation menu.

  2. 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 :

    Screenshot of the dialog to create a new key.

    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.

  3. Une fois la clé créée, sélectionnez la clé que vous venez de créer puis sa version actuelle.

  4. Copiez l’identificateur de clé de la clé à l’exception de la partie qui suit la dernière barre oblique :

    Screenshot of the key identifier field and the copy action.

Créer un compte Azure Cosmos DB

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 :

Screenshot of the Encryption page with a custom-managed key URI configured.

Utilisation d’une identité managée dans la stratégie d’accès Azure Key Vault

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

Utiliser des clés gérées par le client avec une sauvegarde continue

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

Restaurer un compte continu configuré avec une identité managée

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.

Non disponible

Clés gérées par le client et double chiffrement

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 :

Rotation des clé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 :

    Screenshot of the New Version option in the Versions page of the Azure portal.

  • 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 :

    Screenshot of the Data Encryption option on the resource navigation menu.

    Remplacez ensuite l’URI de la clé par la nouvelle clé que vous souhaitez utiliser, puis sélectionnez Enregistrer :

    Screenshot of the Save option on the Key page.

    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é.

Gestion des erreurs

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.

Forum aux questions

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.

Y-a-t-il des frais supplémentaires pour activer les clés gérées par le client ?

Non, il n’y a aucun frais pour activer cette fonctionnalité.

Comment les clés gérées par le client influencent-elles la planification de la capacité ?

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

Quelles données sont-elles chiffrées avec les clés gérées par le client ?

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 clés gérées par le client sont-elles prises en charge pour les comptes Azure Cosmos DB existants ?

Cette fonctionnalité n’est actuellement disponible que pour les nouveaux comptes.

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 :

Screenshot of the Data encryption option in the resource navigation menu.

Vous pouvez également extraire par programme les détails de votre compte Azure Cosmos DB et rechercher la propriété keyVaultKeyUri.

Comment les clés gérées par le client influent-elles les sauvegardes périodiques ?

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.

Comment les clés gérées par le client affectent-elles les sauvegardes continues ?

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.

Comment révoquer une clé de chiffrement ?

La révocation de la clé s’effectue en désactivant la dernière version de la clé :

Screenshot of a disabled custom key version.

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 :

Screenshot of the Delete option for an access policy.

Quelles opérations sont-elles disponibles après la révocation d’une clé gérée par le client ?

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 :

  1. Créer une nouvelle identité managée affectée par l’utilisateur.
  2. Accorder à la clé KeyVault un accès à cette identité.
  3. Attribuer cette nouvelle identité à votre compte restauré de la base de données.

Étapes suivantes