Configurer le contrôle d’accès en fonction du rôle avec Microsoft Entra ID pour votre compte Azure Cosmos DB

S’APPLIQUE À : NoSQL

Notes

Cet article concerne le contrôle d’accès en fonction du rôle pour les opérations de plan de données dans Azure Cosmos DB. Si vous utilisez des opérations de plan de gestion, consultez l’article Contrôle d’accès en fonction du rôle appliqué à vos opérations de plan de gestion.

Azure Cosmos DB expose un système intégré de contrôle d’accès en fonction du rôle, qui vous permet :

  • Authentifier vos requêtes de données avec une identité Microsoft Entra.
  • D’autoriser vos demandes de données avec un modèle d’autorisation basé sur les rôles et précis.

Concepts

Le contrôle d’accès en fonction du rôle du plan de données Azure Cosmos DB repose sur des concepts couramment présents dans d’autres systèmes de contrôle d’accès en fonction du rôle, comme le contrôle d’accès en fonction du rôle Azure :

  • Le modèle d’autorisation se compose d’un ensemble d’actions ; chacune de ces actions est mappée à une ou plusieurs opérations de base de données. Voici quelques exemples d’actions : la lecture d’un élément, l’écriture d’un élément ou l’exécution d’une requête.
  • Les utilisateurs Azure Cosmos DB créent des définitions de rôle contenant une liste d’actions autorisées.
  • Les définitions de rôle sont affectées à des identités Microsoft Entra spécifiques via des attributions de rôle. Une attribution de rôle définit également l’étendue à laquelle s’applique la définition de rôle ; il existe actuellement trois étendues :
    • Un compte Azure Cosmos DB
    • Une base de données Azure Cosmos DB
    • Un conteneur Azure Cosmos DB.

Diagram of common role-based access control concepts including role definitions, role assignments, and principals.

Modèle d’autorisation

Important

Ce modèle d’autorisation couvre uniquement les opérations de base de données qui impliquent la lecture et l’écriture de données. Il ne couvre aucun type d’opération de gestion sur des ressources de gestion, notamment :

  • Créer/remplacer/supprimer une base de données
  • Créer/remplacer/supprimer un conteneur
  • Lire/modifier le débit d’un conteneur
  • Créer/remplacer/supprimer/lire des procédures stockées
  • Créer/remplacer/supprimer/lire des déclencheurs
  • Créer/remplacer/supprimer/lire des fonctions définies par l’utilisateur

Vous ne pouvez pas utiliser le kit de développement logiciel (SDK) de plan de données Azure Cosmos DB pour authentifier les opérations de gestion avec une identité Microsoft Entra. Au lieu de cela, vous devez utiliser un contrôle d’accès en fonction du rôle Azure via l’une des options suivantes :

Les demandes Lire la base de données et Lire le conteneur sont considérées comme des demandes de métadonnées. L’accès à ces opérations peut être accordé comme indiqué dans la section suivante.

Le tableau ci-dessous répertorie toutes les actions exposées par le modèle d’autorisation.

Nom Opération(s) de base de données correspondante(s)
Microsoft.DocumentDB/databaseAccounts/readMetadata Lire les métadonnées de compte. Pour plus d’informations, consultez Demandes de métadonnées.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Créez un élément.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Lire un élément individuel en utilisant son ID et sa clé de partition (lecture par pointage).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Remplacer un élément existant.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert Effectuer un « upsert » sur un élément. Cette opération crée un élément s’il n’existe pas déjà ou remplace l’élément s’il existe.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Supprimer un élément.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Exécuter une requête SQL.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Lire dans le flux de modification du conteneur. Exécuter des requêtes SQL à l’aide des kits de développement logiciel (SDK).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Exécuter une procédure stockée.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Gérer les conflits pour les comptes de régions à plusieurs écritures (c’est-à-dire lister et supprimer des éléments dans le flux en conflit).

Notes

Lors de l’exécution de requêtes via les kits de développement logiciel (SDK), les autorisations Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery et Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed sont requises.

Les caractères génériques sont pris en charge au niveau des conteneurs et des éléments :

  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Requêtes de métadonnées

Les kits de développement logiciel (SDK) Azure Cosmos DB émettent des requêtes de métadonnées en lecture seule lors de l’initialisation et traitent des requêtes de données spécifiques. Ces demandes récupèrent différents détails de configuration, comme :

  • La configuration globale de votre compte, qui comprend les régions Azure où le compte est disponible.
  • La clé de partition de vos conteneurs ou leur stratégie d’indexation.
  • La liste des partitions physiques qui constituent un conteneur et leurs adresses.

Elles ne récupèrent pas les données que vous avez stockées dans votre compte.

Pour garantir la meilleure transparence de notre modèle d’autorisation, ces demandes de métadonnées sont explicitement couvertes par l’action Microsoft.DocumentDB/databaseAccounts/readMetadata. Cette action doit être autorisée dans toutes les situations où l’accès à votre compte Azure Cosmos DB se fait via un des SDK Azure Cosmos DB. Elle peut être affectée (via une attribution de rôle) à n’importe quel niveau de la hiérarchie Azure Cosmos DB (c’est-à-dire le compte, la base de données ou le conteneur).

Les demandes de métadonnées réelles autorisées par l’action Microsoft.DocumentDB/databaseAccounts/readMetadata dépendent de l’étendue à laquelle l’action est affectée :

Étendue Demandes autorisées par l’action
Compte • Lister les bases de données sous le compte
• Pour chaque base de données sous le compte, les actions autorisées au niveau de l’étendue de la base de données
Base de données • Lire les métadonnées de la base de données
• Lister les conteneurs sous la base de données
• Pour chaque conteneur sous la base de données, les actions autorisées au niveau de l’étendue du conteneur
Conteneur • Lire les métadonnées du conteneur
• Lister les partitions physiques sous le conteneur
• Résoudre l’adresse de chaque partition physique

Important

Le débit n’est pas compris dans les métadonnées de cette action.

Définitions de rôle intégré

Azure Cosmos DB expose 2 définitions de rôles intégrées :

Important

Les définitions de rôle font ici référence aux définitions de rôle spécifiques à Azure Cosmos DB. Celles-ci sont distinctes des définitions de rôle de contrôle d’accès en fonction du rôle Azure.

id Nom Actions incluses
00000000-0000-0000-0000-000000000001 Lecteur de données intégré Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 Contributeur de données intégré Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Créer des définitions de rôle personnalisé

Quand vous créez une définition de rôle personnalisé, vous devez fournir les éléments suivants :

  • Le nom de votre compte Azure Cosmos DB.
  • Le groupe de ressources contenant votre compte.
  • Le type de la définition de rôle : CustomRole.
  • Le nom de la définition de rôle.
  • Une liste des actions que vous voulez autoriser pour le rôle.
  • Une ou plusieurs étendues auxquelles la définition de rôle peut être affectée ; les étendues prises en charge sont :
    • / (niveau compte),
    • /dbs/<database-name> (niveau base de données),
    • /dbs/<database-name>/colls/<container-name> (niveau conteneur).

Notes

Les opérations décrites sont disponibles dans :

Utilisation de Microsoft Azure PowerShell

Créez un rôle nommé MyReadOnlyRole qui contient seulement des actions de lecture :

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadOnlyRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
    -AssignableScope "/"

Créez un rôle nommé MyReadWriteRole qui contient toutes les actions :

New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadWriteRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
    -AssignableScope "/"

Listez les définitions de rôle que vous avez créées pour récupérer leur ID :

Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName
RoleName         : MyReadWriteRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

RoleName         : MyReadOnlyRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

Utilisation de l’interface de ligne de commande Azure (CLI)

Créez un rôle nommé MyReadOnlyRole qui contient uniquement des actions de lecture dans un fichier nommé role-definition-ro.json :

{
    "RoleName": "MyReadOnlyRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ]
    }]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json

Créez un rôle nommé MyReadWriteRole qui contient toutes les actions dans un fichier nommé role-definition-rw.json :

{
    "RoleName": "MyReadWriteRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ]
    }]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json

Listez les définitions de rôle que vous avez créées pour récupérer leur ID :

az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadWriteRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  },
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadOnlyRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  }
]

Utilisation de modèles Azure Resource Manager

Pour obtenir une référence et des exemples d’utilisation de modèles Azure Resource Manager afin de créer des définitions de rôle, consultez Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

Créer des attributions de rôles

Vous pouvez associer des définitions de rôle intégré ou personnalisé à vos identités Microsoft Entra. Lors de la création d’une attribution de rôle, vous devez fournir :

  • Le nom de votre compte Azure Cosmos DB.

  • Le groupe de ressources contenant votre compte.

  • L’ID de la définition de rôle à attribuer.

  • L’ID principal de l’identité à laquelle la définition de rôle doit être affectée.

  • L’étendue de l’attribution de rôle ; les étendues prises en charge sont :

    • / (niveau compte)
    • /dbs/<database-name> (niveau base de données)
    • /dbs/<database-name>/colls/<container-name> (niveau conteneur)

    La portée doit correspondre ou être une sous-étendue de l’une des étendues assignables de la définition de rôle.

Remarque

Si vous voulez créer une attribution de rôle pour un principal de service, veillez à utiliser son ID d’objet tel qu’il figure dans la section Applications d’entreprise du volet du portail Microsoft Entra ID.

Remarque

Les opérations décrites sont disponibles dans :

Utilisation de Microsoft Azure PowerShell

Affecter un rôle à une identité :

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -RoleDefinitionId $readOnlyRoleDefinitionId `
    -Scope "/" `
    -PrincipalId $principalId

Utilisation de l’interface de ligne de commande Azure (CLI)

Affecter un rôle à une identité :

resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId

Utilisation des modèles Bicep/Azure Resource Manager

Pour une affectation intégrée à l’aide d’un modèle Bicep :

resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
  name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
  parent: databaseAccount
  properties:{
    principalId: <aadPrincipalId>
    roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
    scope: <databaseAccountResourceId>
  }
}

Pour obtenir une référence et des exemples d’utilisation de modèles Azure Resource Manager afin de créer des attributions de rôle, consultez Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

Initialiser le kit de développement logiciel (SDK) avec Microsoft Entra ID

Pour utiliser le contrôle d’accès en fonction du rôle Azure Cosmos DB dans votre application, vous devez mettre à jour la façon dont vous initialisez le kit de développement logiciel (SDK) Azure Cosmos DB. Au lieu de passer la clé principale de votre compte, vous devez passer une instance d’une classe TokenCredential. Cette instance fournit le SDK Azure Cosmos DB avec le contexte nécessaire pour récupérer un jeton Microsoft Entra au nom de l’identité que vous souhaitez utiliser.

La façon dont vous créez une instance de TokenCredential dépasse le cadre de cet article. Il existe de nombreuses façons de créer une telle instance selon le type d’identité Microsoft Entra que vous voulez utiliser (principal d’utilisateur, principal de service, groupe, etc.). Plus important encore, votre instance de TokenCredential doit se résoudre en l’identité (ID de principal) à laquelle vous avez affecté vos rôles. Vous trouverez des exemples de création d’une classe TokenCredential :

Les exemples suivant utilisent un principal de service avec une instance ClientSecretCredential.

Dans .NET

Le contrôle d’accès en fonction du rôle Azure Cosmos DB est actuellement pris en charge dans le kit de développement logiciel (SDK) .NET V3.

TokenCredential servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);

En Java

Le contrôle d’accès en fonction du rôle Azure Cosmos DB est actuellement pris en charge dans le kit de développement logiciel (SDK) .Java V4.

TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
    .authorityHost("https://login.microsoftonline.com")
    .tenantId("<azure-ad-tenant-id>")
    .clientId("<client-application-id>")
    .clientSecret("<client-application-secret>")
    .build();
CosmosAsyncClient Client = new CosmosClientBuilder()
    .endpoint("<account-endpoint>")
    .credential(ServicePrincipal)
    .build();

En JavaScript

Le contrôle d’accès en fonction du rôle Azure Cosmos DB est actuellement pris en charge dans le kit de développement logiciel (SDK) .JavaScript V3.

const servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
const client = new CosmosClient({
    endpoint: "<account-endpoint>",
    aadCredentials: servicePrincipal
});

En Python

Le contrôle d’accès en fonction du rôle Azure Cosmos DB est pris en charge dans les versions du kit de développement logiciel (SDK) Python 4.3.0b4 et ultérieures.

aad_credentials = ClientSecretCredential(
    tenant_id="<azure-ad-tenant-id>",
    client_id="<client-application-id>",
    client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)

Authentifier des demandes sur l’API REST

Lors de la construction de l’en-tête d’autorisation de l’API REST, définissez le paramètre type sur Microsoft Entra et la signature de hachage (sig) sur le jeton OAuth, comme indiqué dans l’exemple suivant :

type=aad&ver=1.0&sig=<token-from-oauth>

Utiliser l’explorateur de données

Notes

L’explorateur de données exposé dans le portail Azure ne prend pas encore en charge le contrôle d’accès en fonction du rôle Azure Cosmos DB. Pour utiliser votre identité Microsoft Entra lors de l’exploration de vos données, vous devez utiliser l’Explorateur Azure Cosmos DB à la place.

Lorsque vous accédez à Explorateur Azure Cosmos DB avec le paramètre de requête ?feature.enableAadDataPlane=true spécifique et vous connectez, la logique suivante est utilisée pour accéder à vos données :

  1. Une demande d’extraction de la clé primaire du compte est tentée au nom de l’identité connectée. Si cette demande aboutit, la clé primaire est utilisée pour accéder aux données du compte.
  2. Si l’identité connectée n’est pas autorisée à extraire la clé primaire du compte, cette identité est utilisée directement pour authentifier l’accès aux données. Dans ce mode, l’identité doit être attribuée avec les définitions de rôle appropriées pour garantir l’accès aux données.

Auditer les demandes de données

Les journaux de diagnostic sont complétés avec les informations d’identité et d’autorisation de chaque opération de données lors de l’utilisation du contrôle d’accès en fonction du rôle Azure Cosmos DB. Ce complément vous permet d’effectuer un audit détaillé et de récupérer l’identité Microsoft Entra utilisée pour chaque requête de données envoyée à votre compte Azure Cosmos DB.

Ces informations supplémentaires appartiennent à la catégorie de journalisation DataPlaneRequests et se composent de deux colonnes supplémentaires :

  • aadPrincipalId_g montre l’ID du principal de l’identité Microsoft Entra qui a été utilisée pour authentifier la requête.
  • aadAppliedRoleAssignmentId_g montre l’attribution de rôle qui a été respectée lors de l’autorisation de la demande.

Application du contrôle d’accès en fonction du rôle comme seule méthode d’authentification

Dans les situations où vous souhaitez forcer des clients à se connecter à Azure Cosmos DB exclusivement par un contrôle d’accès en fonction du rôle, vous pouvez désactiver les clés primaires/secondaires du compte. Si vous procédez ainsi, toute requête entrante utilisant une clé primaire/secondaire ou un jeton de ressource est activement rejetée.

Utiliser les modèles Azure Resource Manager

Lors de la création ou de la mise à jour de votre compte Azure Cosmos DB à l’aide de modèles Azure Resource Manager, définissez la propriété disableLocalAuth avec la valeur true :

"resources": [
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "disableLocalAuth": true,
            // ...
        },
        // ...
    },
    // ...
 ]

limites

  • Vous pouvez créer jusqu’à 100 définitions de rôles et 2 000 attributions de rôles par compte Azure Cosmos DB.
  • Vous pouvez attribuer des définitions de rôle aux identités Microsoft Entra appartenant au même tenant Microsoft Entra que votre compte Azure Cosmos DB.
  • La résolution de groupe Microsoft Entra n’est actuellement pas prise en charge pour les identités qui appartiennent à plus de 200 groupes.
  • Le jeton Microsoft Entra est actuellement transmis en tant qu’en-tête avec chaque requête individuelle envoyée au service Azure Cosmos DB, ce qui augmente la taille globale de la charge utile.

Forum aux questions

Cette section comprend des questions fréquemment posées sur le contrôle d’accès en fonction du rôle et sur Azure Cosmos DB.

Quelles API Azure Cosmos DB prennent en charge le contrôle d'accès basé sur les rôles au niveau des données ?

À partir de maintenant, seule l’API NoSQL est prise en charge.

Est-il possible de gérer les définitions de rôle et les attributions de rôles à partir du portail Azure ?

La prise en charge de la gestion du rôle par le portail Azure n’est pas encore disponible.

Quels kits de développement logiciel (SDK) de l’API NoSQL Azure Cosmos DB prennent en charge le contrôle d’accès en fonction du rôle ?

Les SDK .NET V3, Java V4, JavaScript V3 et Python V4.3+ sont actuellement pris en charge.

Le jeton Microsoft Entra est-il actualisé automatiquement par les SDK Azure Cosmos DB quand il expire ?

Oui.

Est-il possible de désactiver l’utilisation des clés primaires/secondaires du compte lors de l’utilisation du contrôle d’accès en fonction du rôle ?

Oui, consultez Application du contrôle d’accès en fonction du rôle comme seule méthode d’authentification.

Étapes suivantes