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

SE APLICA A: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API para MongoDB

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 de SQL, 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 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. Los usuarios con un perfil en Azure Active Directory pueden 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 (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.
Lector de cuentas de Cosmos DB Puede leer los datos de cuentas de Azure Cosmos DB.
Operador de copias de seguridad de Cosmos Puede enviar una solicitud de restauración de 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 en la cuenta de Azure Cosmos DB con el modo de copia de seguridad continua.
Operador de Cosmos DB Puede aprovisionar cuentas, las bases de datos y los contenedores de Azure Cosmos. 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. 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:

Control de acceso (IAM) en Azure Portal: demostración de la seguridad de base de datos

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 Cosmos DB o que deban usar Data Explorer en Azure Portal deben tener la acción Microsoft.DocumentDB/databaseAccounts/listKeys/*.

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), 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. Esto no afecta a las operaciones que implican la lectura y la escritura de datos en contenedores de Cosmos.

Cuando esta característica está habilitada, solo pueden realizar cambios en los recursos los usuarios con el rol de Azure correspondiente y credenciales de Azure Active Directory, incluidas las instancias de Managed Service Identity.

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 realicen cambios en cualquier recurso de Cosmos desde cualquier cliente que se conecte mediante claves de cuenta, como cualquier SDK de 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.

  • 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