Contrôle d’accès en fonction du rôle Azure dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Notes

Cet article concerne le contrôle d’accès en fonction du rôle pour les opérations de plan de gestion dans Azure Cosmos DB. Si vous utilisez des opérations de plan de données, les données sont sécurisées à l’aide de clés primaires, de jetons de ressource ou du RBAC Azure Cosmos DB.

Pour en savoir plus sur le contrôle d’accès en fonction du rôle appliqué aux opérations de plan de données dans l’API pour NoSQL, consultez les articles Sécuriser l’accès aux données et RBAC Azure Cosmos DB. Pour connaître l’API Azure Cosmos DB pour MongoDB, consultez RBAC du plan de données dans l’API pour MongoDB.

Azure Cosmos DB fournit un contrôle d’accès en fonction du rôle Azure (Azure RBAC) intégré pour les scénarios de gestion courants dans Azure Cosmos DB. Une personne ayant un profil dans Microsoft Entra ID peut affecter ces rôles Azure à des utilisateurs, des groupes, des principaux de service ou des identités managées pour accorder ou refuser l’accès à des ressources et des opérations sur les ressources Azure Cosmos DB. L’attribution des rôles est limitée au seul accès au plan de contrôle, ce qui inclut l’accès aux comptes, bases de données, conteneurs et offres (débit) d’Azure Cosmos DB.

Rôles intégrés

Voici les rôles intégrés pris en charge par Azure Cosmos DB :

Rôle intégré Description
Contributeur de compte DocumentDB Gérer des comptes Azure Cosmos DB.
Rôle de lecteur de compte Cosmos DB Lire les données de comptes Azure Cosmos DB.
CosmosBackupOperator Soumettre une requête de restauration dans le Portail Azure pour une base de données avec sauvegarde périodique ou pour un conteneur. Modifier l’intervalle de sauvegarde et la rétention dans le Portail Azure. Ne peut pas accéder aux données ni utiliser Data Explorer.
CosmosRestoreOperator Effectuer une action de restauration pour un compte Azure Cosmos DB avec le mode de sauvegarde continue.
Opérateur Cosmos DB Peut provisionner des comptes, des bases de données et des conteneurs Azure Cosmos DB. Ne peut pas accéder aux données ni utiliser Data Explorer.

Gestion des identités et des accès

Le volet Contrôle d’accès (IAM) du portail Azure permet de configurer le contrôle d’accès en fonction du rôle sur les ressources Azure Cosmos DB. Les rôles sont appliqués aux utilisateurs, aux groupes, aux principaux de service et aux identités gérées dans Active Directory. Vous pouvez utiliser des rôles intégrés ou des rôles personnalisés pour les individus et les groupes. La capture d’écran suivante montre l’intégration Active Directory (Azure RBAC) à l’aide du contrôle d’accès (IAM) dans le Portail Microsoft Azure :

Access control (IAM) in the Azure portal - demonstrating database security.

Rôles personnalisés

En plus des rôles intégrés, les utilisateurs peuvent également créer des rôles personnalisés dans Azure et appliquer ces rôles aux principaux de service pour tous les abonnements dans leur locataire Active Directory. Les rôles personnalisés permettent aux utilisateurs de créer des définitions de rôles Azure avec un ensemble personnalisé d’opérations de fournisseur de ressources. Pour savoir quelles opérations sont disponibles pour créer des rôles personnalisés pour Azure Cosmos DB veuillez consulter, Opérations du fournisseur de ressources Azure Cosmos DB

Conseil

Les rôles personnalisés qui doivent accéder aux données stockées dans Azure Cosmos DB ou utiliser l’Explorateur de données dans le portail Azure doivent avoir l’action Microsoft.DocumentDB/databaseAccounts/listKeys/*.

Notes

Les attributions de rôles personnalisés peuvent ne pas toujours être visibles dans le portail Azure.

Avertissement

Les clés de compte ne sont pas automatiquement pivotées ou révoquées après les modifications RBAC de gestion. Ces clés donnent accès aux opérations de plan de données. Lors de la suppression de l’accès aux clés d’un utilisateur, il est recommandé d’également les faire pivoter. Pour le plan de données RBAC, le back-end Cosmos DB rejette les demandes une fois que les rôles/revendications ne se correspondent plus. Si un utilisateur a besoin d’un accès temporaire aux opérations de plan de données, il est recommandé d’utiliser le plan de données RBAC Azure Cosmos DB.

Prévention des modifications des Kits de développement logiciel (SDK) Azure Cosmos DB

Il est possible de verrouiller le fournisseur de ressources Azure Cosmos DB pour empêcher toute modification des ressources par un client connecté au moyen des clés de compte (c’est-à-dire les applications connectées par le biais du Kit de développement logiciel (SDK) Azure Cosmos DB). Cette fonctionnalité peut être souhaitable pour les utilisateurs qui recherchent des niveaux de contrôle et de gouvernance plus élevés pour les environnements de production. La prévention des modifications du Kit de développement logiciel (SDK) active également des fonctionnalités telles que le verrouillage des ressources et les journaux de diagnostic pour les opérations de plan de contrôle. Les clients qui se connectent au moyen du Kit de développement logiciel (SDK) Azure Cosmos DB ne pourront pas modifier les propriétés des comptes, des bases de données, des conteneurs ni du débit Azure Cosmos DB. Les opérations impliquant la lecture et l’écriture de données dans les conteneurs Azure Cosmos DB proprement dits ne sont pas concernées.

Lorsque cette fonctionnalité est activée, seuls les utilisateurs possédant le rôle Azure et les informations d’identification Microsoft Entra appropriés, notamment les identités Managed Service, peuvent apporter des modifications aux ressources.

Avertissement

L’activation de cette fonctionnalité peut avoir un impact sur votre application. Veillez à bien comprendre cet impact avant d’activer la fonctionnalité.

Liste de contrôle avant activation

Ce paramètre empêche toute modification de ressources Azure Cosmos DB provenant d’un client qui se connecte à l’aide de clés de compte, notamment les kits SDK Azure Cosmos DB, les outils qui utilisent des clés de compte pour établir une connexion. Pour éviter des problèmes ou des erreurs dans les applications après coup, vérifiez avant d’activer cette fonctionnalité si des applications effectuent l’une des actions suivantes :

  • Création ou suppression de ressources enfants, comme des bases de données et des conteneurs, y compris les ressources d’autres API telles que Cassandra, MongoDB, Gremlin et les ressources de table.

  • Lecture ou mise à jour du débit sur des ressources de niveau base de données ou conteneur.

  • Modification des propriétés du conteneur, notamment la stratégie d’index, la durée de vie (TTL) et les clés uniques.

  • Modification des procédures stockées, des déclencheurs ou des fonctions définies par l’utilisateur.

Si vos applications (ou les utilisateurs qui passent par le portail Azure) effectuent l’une de ces actions, il sera nécessaire de les migrer pour qu’elles s’exécutent par le biais de modèles Resource Manager, PowerShell, Azure CLI, REST ou la bibliothèque de gestion Azure. Notez que la gestion Azure est disponible dans plusieurs langues.

Définition au moyen d’un modèle ARM

Pour définir cette propriété à l’aide d’un modèle Resource Manager, mettez à jour votre modèle ou exportez-en un nouveau pour votre déploiement actuel, puis ajoutez "disableKeyBasedMetadataWriteAccess": true aux propriétés des ressources databaseAccounts. Vous trouverez ci-dessous un exemple de modèle Azure Resource Manager de base avec ce paramètre de propriété.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2020-04-01",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "disableKeyBasedMetadataWriteAccess": true
        }
    }
}

Important

Veillez à inclure les autres propriétés de votre compte et de vos ressources enfants lors du redéploiement avec cette propriété. Ne déployez pas ce modèle tel quel, car toutes les propriétés de votre compte seraient réinitialisées.

Définition au moyen d’Azure CLI

Pour l’activer à l’aide d’Azure CLI, exécutez la commande ci-dessous :

az cosmosdb update  --name [CosmosDBAccountName] --resource-group [ResourceGroupName]  --disable-key-based-metadata-write-access true

Définition au moyen de PowerShell

Pour activer l’utilisation d’Azure PowerShell, exécutez la commande ci-dessous :

Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true

Étapes suivantes