Compartir vía


Configuración del control de acceso basado en roles con Microsoft Entra ID para la cuenta de Azure Cosmos DB

SE APLICA A: NoSQL

Nota:

Este artículo trata sobre el control de acceso basado en roles para las operaciones del plano de datos de Azure Cosmos DB. Si usa operaciones del plano de administración, consulte la documentación sobre el control de acceso basado en roles aplicado a las operaciones de este plano.

Azure Cosmos DB expone un sistema de control de acceso basado en roles integrado que le permite:

  • Autentique sus solicitudes de datos con una identidad Microsoft Entra.
  • Autorizar las solicitudes de datos con un modelo de permisos basado en roles específico.

Conceptos

El control de acceso basado en roles del plano de datos de Azure Cosmos DB se basa en conceptos que se encuentran habitualmente en otros sistemas de control de acceso basados en roles como el control de acceso basado en roles de Azure:

  • El modelo de permiso se compone de un conjunto de acciones; cada una de estas acciones se asigna a una o varias operaciones de base de datos. Algunos ejemplos de acciones incluyen la lectura o escritura de un elemento, o la ejecución de una consulta.
  • Los usuarios de Azure Cosmos DB crean definiciones de roles que contienen una lista de acciones permitidas.
  • Las definiciones de roles se asignan a identidades específicas de Microsoft Entra a través de asignaciones de roles. Una asignación de roles también define el ámbito al que se aplica la definición de roles. Actualmente, hay tres ámbitos:
    • Una cuenta de Azure Cosmos DB.
    • Una base de datos de Azure Cosmos DB.
    • Un contenedor de Azure Cosmos DB.

Diagrama de conceptos comunes de control de acceso basado en roles, incluyendo definiciones de roles, asignaciones de roles y entidades de seguridad.

Nombre del permiso

Importante

Este modelo de permisos cubre solo las operaciones de base de datos que implican la lectura y escritura de datos. No cubre ningún tipo de operación de administración en recursos de administración, incluidos los siguientes:

  • Crear, reemplazar o eliminar base de datos
  • Crear, reemplazar o eliminar contenedor
  • Lectura y reemplazo del rendimiento del contenedor
  • Crear, reemplazar, eliminar o leer procedimientos almacenados
  • Crear, reemplazar, eliminar o leer desencadenadores
  • Crear, reemplazar, eliminar o leer funciones definidas por el usuario

No puede utilizar ningún SDK de plano de datos de Azure Cosmos DB para autenticar operaciones de administración con una identidad de Microsoft Entra. En su lugar, debe usar el control de acceso basado en roles de Azure a través de una de las siguientes opciones:

Leer base de datos y Leer contenedor se consideran solicitudes de metadatos. Se puede conceder acceso a estas operaciones como se indica en la sección siguiente.

Esta tabla enumera todas las acciones expuestas por el modelo de permisos.

Nombre Operaciones correspondientes de la base de datos
Microsoft.DocumentDB/databaseAccounts/readMetadata Lectura de metadatos de la cuenta. Consulte Solicitudes de metadatos para más información.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Crear un nuevo elemento.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Lectura de un elemento individual por su identificador y clave de partición (lectura de punto).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Reemplazo de un elemento existente.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert Realización de una operación upsert en un elemento. Esta operación crea un artículo si aún no existe, o reemplaza el artículo si ya existe.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Eliminación de un elemento.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Ejecución de una consulta SQL.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Lectura desde la fuente de cambiosdel contenedor. Ejecute consultas SQL mediante los SDK.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Ejecución de un procedimiento almacenado.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Administración de conflictos de las cuentas de regiones con escritura múltiple (es decir, enumeración y eliminación de elementos de la fuente de conflictos).

Nota

Al ejecutar consultas a través de los SDK, se requieren permisos Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery y Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed.

Se admiten caracteres comodín en los niveles de contenedores y elementos:

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

Solicitudes de metadatos

Los SDK de Azure Cosmos DB emiten solicitudes de metadatos de solo lectura durante la inicialización y para servir solicitudes de datos específicas. Estas solicitudes permiten capturar varios detalles de configuración, como:

  • La configuración global de la cuenta, lo cual incluye las regiones de Azure en las que está disponible la cuenta.
  • La clave de partición de los contenedores o su directiva de indexación.
  • La lista de particiones físicas que crean un contenedor y sus direcciones.

No capturan ninguno de los datos almacenados en la cuenta.

Para garantizar la mejor transparencia de nuestro modelo de permisos, estas solicitudes de metadatos se describen explícitamente en la acción Microsoft.DocumentDB/databaseAccounts/readMetadata. Esta acción debe permitirse en todas las situaciones en las que se acceda a la cuenta de Azure Cosmos DB a través de uno de los SDK de Azure Cosmos DB. Se puede asignar (mediante una asignación de roles) en cualquier nivel de la jerarquía de Azure Cosmos DB (es decir, en los niveles de cuenta, base de datos o contenedor).

Las solicitudes de metadatos reales que permite la acción Microsoft.DocumentDB/databaseAccounts/readMetadata dependen del ámbito al que está asignada la acción:

Ámbito Solicitudes permitidas por la acción
Cuenta • Enumeración de las bases de datos de la cuenta
• Para cada base de datos de la cuenta, las acciones permitidas en el ámbito de la base de datos
Base de datos • Lectura de metadatos de la base de datos
• Enumeración de los contenedores de la base de datos
• Para cada contenedor de la base de datos, las acciones permitidas en el ámbito de contenedor
Contenedor • Lectura de metadatos del contenedor
• Enumeración de las particiones físicas en el contenedor
• Resolución de la dirección de cada partición física

Importante

El rendimiento no se incluye en los metadatos de esta acción.

Definiciones de roles integradas

Azure Cosmos DB expone dos definiciones de roles integrados:

Importante

El término definiciones de roles aquí hace referencia a definiciones de roles específicas de Azure Cosmos DB. Son diferentes de las definiciones de roles del control de acceso basado en roles de Azure.

ID Nombre Acciones incluidas
00000000-0000-0000-0000-000000000001 Lector de datos integrado de 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 Colaborador de datos integrado de Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Creación de definiciones de roles personalizados

Al crear una definición de roles, debe proporcionar lo siguiente:

  • El nombre de la cuenta de Azure Cosmos DB.
  • El grupo de recursos que contiene la cuenta.
  • El tipo de la definición de roles: CustomRole.
  • El nombre de la definición de roles.
  • Una lista de acciones que desea que permita el rol.
  • Uno o varios ámbitos en los que se puede asignar la definición de rol; los ámbitos admitidos son:
    • / (nivel de cuenta),
    • /dbs/<database-name> (nivel de base de datos),
    • /dbs/<database-name>/colls/<container-name> (nivel de contenedor).

Nota

Las operaciones que se describen están disponibles en:

Uso de Azure PowerShell

Cree un rol denominado MyReadOnlyRole que solo contenga acciones de lectura:

$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 "/"

Cree un rol denominado MyReadWriteRole que contenga todas las acciones:

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 "/"

Enumere las definiciones de roles que ha creado para capturar sus identificadores:

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>}

Uso de la CLI de Azure

Cree un rol denominado MyReadOnlyRole que solo contenga acciones de lectura en un archivo denominado 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 

Cree un rol denominado MyReadOnlyRole que contenga todas las acciones en un archivo denominado 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 

Enumere las definiciones de roles que ha creado para capturar sus identificadores:

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"
  }
]

Uso de plantillas del Administrador de recursos de Azure

Para una referencia y ejemplos del uso de plantillas de Azure Resource Manager para crear definiciones de roles, consulte Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

Crear asignaciones de roles

Puede asociar definiciones de rol integradas o personalizadas con sus identidades Microsoft Entra. Al crear una asignación de roles, debe proporcionar:

  • El nombre de la cuenta de Azure Cosmos DB.

  • El grupo de recursos que contiene la cuenta.

  • El identificador de la definición de rol que se va a asignar.

  • El identificador de la entidad de seguridad de la identidad a la que debe asignarse la definición de roles.

  • El ámbito de la asignación de roles; los ámbitos admitidos son:

    • / (nivel de cuenta)
    • /dbs/<database-name> (nivel de base de datos)
    • /dbs/<database-name>/colls/<container-name> (nivel de contenedor)

    El ámbito debe coincidir o ser un subámbito de uno de los ámbitos asignables de la definición de roles.

Nota:

Si desea crear una asignación de funciones para una entidad de seguridad de servicio, asegúrese de utilizar su ID de objeto tal como se encuentra en la sección de Aplicaciones empresariales de la hoja de portal de Microsoft Entra ID.

Nota:

Las operaciones que se describen están disponibles en:

Uso de Azure PowerShell

Asigne un rol a una identidad:

$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

Uso de la CLI de Azure

Asigne un rol a una identidad:

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 --principal-type "ServicePrincipal"

Uso de plantillas de Bicep/Azure Resource Manager

Para una asignación integrada utilizando una plantilla 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>
  }
}

Para una referencia y ejemplos del uso de plantillas de Azure Resource Manager para crear asignaciones de roles, consulte Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

Inicializar el SDK con Microsoft Entra ID

Para usar el control de acceso basado en roles de Azure Cosmos DB en la aplicación, tiene que actualizar la forma en que inicializa el SDK de Azure Cosmos DB. En lugar de pasar la clave principal de la cuenta, debe pasar una instancia de una clase TokenCredential. Esta instancia proporciona al SDK de Azure Cosmos DB el contexto necesario para obtener un token de Microsoft Entra en nombre de la identidad que desea utilizar.

La forma de crear una instancia de TokenCredential queda fuera del ámbito de este artículo. Hay muchas maneras de crear tal instancia dependiendo del tipo de identidad Microsoft Entra que desee utilizar (usuario principal, servicio principal, grupo, etc.). Y lo que es más importante, la instancia de TokenCredential debe resolverse en la identidad (identificador de la entidad de seguridad) a la que ha asignado sus roles. Puede encontrar ejemplos de creación de una clase TokenCredential:

En los ejemplos siguientes se usa una entidad de servicio con una instancia de ClientSecretCredential.

En .NET

El control de acceso basado en roles de Azure Cosmos DB se admite actualmente en el SDK de .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

El control de acceso basado en roles de Azure Cosmos DB se admite actualmente en el SDK de 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

El control de acceso basado en roles de Azure Cosmos DB se admite actualmente en el SDK de 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

El control de acceso basado en roles de Azure Cosmos DB se admite en las versiones 4.3.0b4 y superiores de Python SDK.

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)

Autenticación de solicitudes en la API de REST

Al crear el encabezado de autorización de la API REST, establezca el parámetro tipo en Microsoft Entra ID y la firma hash (sig) en el token OAuth como se muestra en el siguiente ejemplo:

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

Uso del Explorador de datos

El uso del control de acceso basado en rol de Azure Cosmos DB en el Explorador de datos (ya sea expuesto en Azure Portal o en https://cosmos.azure.com) se rige por la configuración de Habilitar Entra ID RBAC. Puede acceder a esta configuración a través del icono "rueda" en la parte superior derecha de la interfaz del Explorador de datos.

La configuración tiene tres valores posibles:

  • Automático (valor predeterminado): En este modo, el control de acceso basado en rol se usará automáticamente si la cuenta ha deshabilitado el uso de claves. De lo contrario, el Explorador de datos usará claves de cuenta para las solicitudes de datos.

  • True: En este modo, siempre se usará el acceso basado en roles para las solicitudes de datos del Explorador de datos. Si la cuenta no se ha habilitado para el acceso basado en rol, se producirá un error en las solicitudes.

  • False: En este modo, las claves de cuenta siempre se usarán para las solicitudes de datos del Explorador de datos. Si la cuenta ha deshabilitado el uso de claves, se producirá un error en las solicitudes.

Al usar modos que habilitan el acceso basado en roles en el Explorador de datos de Azure Portal, debe hacer clic en el botón inicio de sesión de Inicio de sesión para Entra ID RBAC (ubicado en la barra de comandos del Explorador de datos) antes de realizar solicitudes de datos. Esto no es necesario cuando se usa el Explorador de Cosmos en cosmos.azure.com. Asegúrese de que la identidad con sesión iniciada se ha asignada con las definiciones de roles adecuadas para habilitar el acceso a los datos.

Tenga en cuenta también que cambiar el modo a uno que usa claves de cuenta puede desencadenar una solicitud para capturar la clave principal en nombre de la identidad que ha iniciado sesión.

Nota:

Anteriormente, el acceso basado en roles solo se admitía en el Explorador de Cosmos mediante https://cosmos.azure.com/?feature.enableAadDataPlane=true. Esto sigue siendo compatible y reemplazará el valor de la configuración de Habilitar Entra ID RBAC. El uso de este parámetro de consulta es equivalente al uso del modo "True" mencionado anteriormente.

Auditoría de solicitudes de datos

Los registros de diagnóstico se amplían con información de identidad y autorización para cada operación de datos cuando se usa el control de acceso basado en roles de Azure Cosmos DB. Este aumento le permite realizar auditorías detalladas y recuperar la identidad de Microsoft Entra utilizada para cada solicitud de datos enviada a su cuenta Azure Cosmos DB.

Esta información adicional fluye en la categoría de registro DataPlaneRequests y consta de dos columnas adicionales:

  • aadPrincipalId_g muestra el ID principal de la identidad de Microsoft Entra que se utilizó para autenticar la solicitud.
  • aadAppliedRoleAssignmentId_g muestra la asignación de roles que se ha respetado al autorizar la solicitud.

Aplicación del control de acceso basado en roles como único método de autenticación

En situaciones en las que quiera obligar a los clientes a conectarse a Azure Cosmos DB exclusivamente a través del control de acceso basado en roles, puede desactivar las claves principal/secundaria de la cuenta. Al hacerlo, se rechaza de forma activa cualquier solicitud entrante que use una clave principal o secundaria, o un token de recurso.

Utilización de plantillas del Administrador de recursos de Azure

Al crear o actualizar la cuenta de Azure Cosmos DB mediante plantillas de Azure Resource Manager, establezca la propiedad disableLocalAuth en true:

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

Límites

  • Puede crear hasta 100 definiciones de roles y 2000 asignaciones de roles por cuenta de Azure Cosmos DB.
  • Solo puede asignar definiciones de roles a identidades de Microsoft Entra que pertenecen al mismo inquilino de Microsoft Entra que la cuenta de Azure Cosmos DB.
  • La resolución de grupos de Microsoft Entra no se admite actualmente para las identidades que pertenecen a más de 200 grupos.
  • El token de Microsoft Entra se pasa actualmente como encabezado con cada solicitud individual enviada al servicio Azure Cosmos DB, lo que aumenta el tamaño total de la carga útil.

Preguntas más frecuentes

Esta sección incluye las preguntas más frecuentes sobre el control de acceso basado en roles y Azure Cosmos DB.

¿Qué API de Azure Cosmos DB admiten el control de acceso basado en roles?

A partir de ahora, solo se admite la API NoSQL.

¿Es posible administrar las definiciones de roles y las asignaciones de roles desde Azure Portal?

Todavía no está disponible la compatibilidad de Azure Portal con la administración de roles.

¿Qué SDK de la API de Azure Cosmos DB para NoSQL admite el control de acceso basado en roles?

Actualmente se admiten los SDK de .NET V3, Java V4, JavaScript V3 y Python V4.3 y versiones posteriores.

¿Actualizan automáticamente los SDK de Azure Cosmos DB el token de Microsoft Entra cuando este expira?

Sí.

¿Es posible deshabilitar el uso de las claves principal o secundaria de la cuenta al usar el control de acceso basado en roles?

Sí, vea Aplicación del control de acceso basado en roles como único método de autenticación.

Pasos siguientes