Control de acceso basado en rol de Azure en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Nota:

En este artículo se trata el control de acceso basado en rol para las operaciones del plano de administración en Azure Cosmos DB. Si usa operaciones de plano de datos, los datos se protegen mediante claves principales, tokens de recursos o control de acceso basado en rol de Azure Cosmos DB.

Para más información sobre el control de acceso basado en rol que se aplica a las operaciones del plano de datos en la API para NoSQL, consulte los artículos Protección del acceso a los datos de Azure Cosmos DB y Configuración del control de acceso basado en roles con Azure Active Directory para la cuenta de Azure Cosmos DB. Para obtener la API de Azure Cosmos DB para MongoDB, consulte RBAC de plano de datos en la API para MongoDB.

Azure Cosmos DB proporciona un control de acceso basado en rol de Azure (Azure RBAC) integrado para escenarios de administración comunes en Azure Cosmos DB. Un usuario que tiene un perfil en Microsoft Entra ID puede asignar estos roles de Azure a usuarios, grupos, entidades de servicio o identidades administradas para conceder o denegar el acceso a recursos y operaciones en los recursos de Azure Cosmos DB. Las asignaciones de roles están dirigidas únicamente al acceso al plano de control, que incluye el acceso a las cuentas, bases de datos, contenedores y ofertas de Azure Cosmos DB (rendimiento).

Roles integrados

Los siguientes son los roles integrados compatibles que se admiten en Azure Cosmos DB:

Rol integrado Descripción
Colaborador de cuenta de DocumentDB Puede administrar cuentas de Azure Cosmos DB.
Rol de lector de cuentas de Cosmos DB Puede leer los datos de cuentas de Azure Cosmos DB.
CosmosBackupOperator Puede enviar una solicitud de restauración en Azure Portal para una base de datos o un contenedor que tengan habilitada una copia de seguridad periódica. Puede modificar la retención y el intervalo de copia de seguridad en Azure Portal. No se puede tener acceso a los datos ni utilizar Data Explorer.
CosmosRestoreOperator Puede realizar una acción de restauración de una cuenta de Azure Cosmos DB con el modo de copia de seguridad continua.
Operador de Cosmos DB Puede aprovisionar cuentas, bases de datos y contenedores de Azure Cosmos DB. No se puede tener acceso a los datos ni utilizar Data Explorer.

Administración de identidad y acceso (IAM)

El panel Control de acceso (IAM) de Azure Portal se utiliza para configurar el control de acceso basado en rol de Azure en los recursos de Azure Cosmos DB. Los roles se aplican a usuarios, grupos, entidades de servicio e identidades administradas en Active Directory. Puede usar roles integrados o personalizados para usuarios y grupos. En la captura de pantalla siguiente se muestra la integración de Active Directory (Azure RBAC) con control de acceso (IAM) en Azure Portal:

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

Roles personalizados

Además de los roles integrados, los usuarios también pueden crear roles personalizados en Azure y aplicar estos roles a las entidades de servicio en todas las suscripciones dentro de su inquilino de Active Directory. Los roles personalizados proporcionan a los usuarios una forma de crear definiciones de roles de Azure con un conjunto personalizado de operaciones de los proveedores de recursos. Para saber qué operaciones están disponibles para crear roles personalizados para Azure Cosmos DB, consulte Operaciones del proveedor de recursos de Azure Cosmos DB.

Sugerencia

Los roles personalizados que necesiten acceso a los datos almacenados en Azure Cosmos DB o que deban usar Explorador de datos en Azure Portal deben tener la acción Microsoft.DocumentDB/databaseAccounts/listKeys/*.

Nota

Es posible que las asignaciones de roles personalizados no siempre estén visibles Azure Portal.

Advertencia

Las claves de cuenta no se rotan ni se revocan automáticamente después de los cambios de RBAC de administración. Estas claves proporcionan acceso a las operaciones del plano de datos. Al quitar el acceso a las claves de un usuario, también se recomienda rotar las claves. En el plano de datos RBAC, el back-end de Cosmos DB rechazará las solicitudes una vez que los roles o notificaciones ya no coincidan. Si un usuario requiere acceso temporal a las operaciones del plano de datos, se recomienda usar el plano de datos RBAC de Azure Cosmos DB.

Bloqueo en los SDK de Azure Cosmos DB para evitar cambios

El proveedor de recursos de Azure Cosmos DB se puede bloquear para evitar cambios en los recursos desde clientes que se conecten mediante claves de cuenta (es decir, aplicaciones que se conecten mediante el SDK de Azure Cosmos DB). Esta característica puede resultar útil para los usuarios que deseen mayores grados de control y gobernanza para los entornos de producción. Evitar los cambios desde el SDK también habilita características como los bloqueos de recurso y de registro de diagnóstico para las operaciones en el plano de control. Los clientes que se conecten mediante el SDK de Azure Cosmos DB no podrán cambiar ninguna propiedad de las cuentas, las bases de datos, los contenedores y el rendimiento de Azure Cosmos DB. Esto no afecta a las operaciones que implican la lectura y la escritura de datos en contenedores de Azure Cosmos DB.

Cuando esta característica está habilitada, solo pueden realizar cambios en los recursos los usuarios con el rol de Azure correspondiente y credenciales de Microsoft Entra, incluidas las identidades de servicio administrado.

Advertencia

La habilitación de esta característica puede afectar la aplicación. Asegúrese de que entiende el riesgo antes de habilitarlo.

Lista de comprobación anterior a la habilitación

Esta configuración impedirá que se hagan cambios en cualquier recurso de Azure Cosmos DB desde cualquier cliente que se conecte mediante claves de cuenta, como cualquier SDK de Azure Cosmos DB, cualquier herramienta que se conecte a través de claves de cuenta. Para evitar problemas o errores de aplicaciones después de habilitar esta característica, compruebe si las aplicaciones realizan alguna de las siguientes acciones antes de habilitar esta característica; por ejemplo:

  • Crear o eliminar recursos secundarios, como bases de datos y contenedores. Esto incluye recursos para otras API, como Cassandra, MongoDB, Gremlin y recursos de tabla.

  • Leer o actualizar el rendimiento de los recursos de nivel de base de datos o de contenedor.

  • Modificar las propiedades de los contenedores, incluida la directiva de índice, TTL y las claves únicas.

  • Modificar procedimientos almacenados, desencadenadores o funciones definidas por el usuario.

Si las aplicaciones (o usuarios mediante Azure Portal) realizan alguna de estas acciones, deberán migrarse para ejecutarse mediante Plantillas ARM, PowerShell, la CLI de Azure, REST o la Biblioteca de administración de Azure. Tenga en cuenta que la administración de Azure está disponible en varios idiomas.

Definición mediante una plantilla de ARM

Para establecer esta propiedad mediante una plantilla de ARM, actualice la plantilla existente o exporte una nueva para la implementación actual e incluya "disableKeyBasedMetadataWriteAccess": true en las propiedades de los recursos de databaseAccounts. A continuación se muestra un ejemplo básico de una plantilla de Azure Resource Manager con este valor de propiedad.

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

Importante

Asegúrese de incluir las otras propiedades de la cuenta y los recursos secundarios al volver a implementar esta propiedad. No implemente esta plantilla tal cual o se restablecerán todas las propiedades de la cuenta.

Definir mediante la CLI de Azure

Para la habilitación mediante la CLI de Azure, use el siguiente comando:

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

Definir mediante PowerShell

Para habilitar el uso de Azure PowerShell, use el siguiente comando:

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

Pasos siguientes