Autorizar el acceso a los blobs mediante Microsoft Entra ID

Azure Storage admite el uso de Microsoft Entra ID para autorizar solicitudes a datos de blobs. Mediante Microsoft Entra ID, puede usar el control de acceso basado en roles de Azure (Azure RBAC) para conceder permisos a una entidad de seguridad, que puede ser un usuario, grupo o una entidad de servicio de aplicaciones. Microsoft Entra ID autentica la entidad de seguridad y devuelve un token de OAuth 2.0. Usa el token para autorizar una solicitud contra el servicio Blob.

Puede usar la autorización de Microsoft Entra ID con todas las cuentas de almacenamiento de uso general y de Blob en todas las regiones públicas y nubes nacionales. Solo las cuentas de almacenamiento creadas mediante el modelo de implementación de Azure Resource Manager admiten Microsoft Entra autorización.

Importante

Para una seguridad óptima, Microsoft recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes contra datos de blob, cola y tabla, siempre que sea posible. La autorización con Microsoft Entra ID e identidades administradas proporciona más seguridad y facilidad de uso que la autorización con claves compartidas. Para más información sobre las identidades administradas, consulte ¿Qué son las identidades administradas para recursos de Azure? Para obtener un ejemplo de cómo habilitar y usar una identidad administrada para una aplicación .NET, consulte Autenticación de aplicaciones hospedadas en Azure para recursos de Azure con .NET.

En el caso de los recursos hospedados fuera de Azure, como las aplicaciones locales, puede usar identidades administradas a través de Azure Arc. Por ejemplo, las aplicaciones que se ejecutan en servidores habilitados para Azure Arc pueden usar identidades administradas para conectarse a los servicios de Azure. Para más información, consulte Autenticación en recursos de Azure con servidores habilitados para Azure Arc.

Para escenarios en los que se utilizan firmas de acceso compartido (SAS), Microsoft recomienda usar un SAS de delegación de usuario. Una SAS de delegación de usuarios está protegida con credenciales de Microsoft Entra en lugar de la clave de cuenta. Para obtener información sobre las firmas de acceso compartido, consulte Conceder acceso limitado a los datos con firmas de acceso compartido. Para ver un ejemplo de cómo crear y utilizar un SAS de delegación de usuario con .NET, consulte Crear un SAS de delegación de usuario para un blob con .NET.

Visión general de Microsoft Entra ID para blobs

Cuando una entidad de seguridad (un usuario, un grupo o una aplicación) intenta acceder a un recurso de blob, la solicitud debe autorizarse, a menos que sea un blob disponible para acceso anónimo. Mediante Microsoft Entra ID, el acceso a un recurso es un proceso de dos pasos:

  1. En primer lugar, se autentica la identidad de la entidad de seguridad y se devuelve un token de OAuth 2.0.

    El paso de autenticación exige que una aplicación solicite un token de acceso de OAuth 2.0 en tiempo de ejecución. Si una aplicación se ejecuta desde una entidad de Azure como una máquina virtual de Azure, un conjunto de escalado de máquinas virtuales o una aplicación de Azure Functions, puede usar una identidad administrada para acceder a los datos de blobs.

  2. A continuación, el token se pasa como parte de una solicitud al servicio Blob y el servicio lo usa para autorizar el acceso al recurso especificado.

    El paso de autorización requiere que se asignen uno o varios roles de Azure RBAC a la entidad de seguridad que realiza la solicitud. Para más información, vea Asignación de roles de Azure para derechos de acceso.

Uso de una cuenta de Microsoft Entra con el portal, PowerShell o la CLI de Azure

Para obtener información sobre cómo acceder a los datos en el portal de Azure mediante una cuenta de Microsoft Entra, consulte Data access from the Azure portal. Para obtener información sobre cómo llamar a comandos de Azure PowerShell o CLI de Azure mediante una cuenta de Microsoft Entra, consulte Acceso a datos desde PowerShell o CLI de Azure.

Uso de Microsoft Entra ID para autorizar el acceso en el código de la aplicación

Para autorizar el acceso a Azure Storage mediante Microsoft Entra ID, use una de las siguientes bibliotecas cliente para adquirir un token de OAuth 2.0:

Biblioteca cliente de Azure Identity

La biblioteca cliente de Azure Identity simplifica el proceso de obtención de un token de acceso de OAuth 2.0 para la autorización mediante Microsoft Entra ID mediante el SDK de Azure. Las versiones más recientes de las bibliotecas cliente de Azure Storage para .NET, Java, Python, JavaScript y Go se integran con las bibliotecas de Azure Identity para cada uno de esos lenguajes para proporcionar una manera sencilla y segura de adquirir un token de acceso para la autorización de solicitudes de Azure Storage.

Una ventaja de la biblioteca cliente de Azure Identity es que permite usar el mismo código para adquirir el token de acceso tanto si la aplicación se ejecuta en el entorno de desarrollo como en Azure. La biblioteca cliente de Azure Identity retorna un token de acceso para una entidad de seguridad. Cuando el código se ejecuta en Azure, la entidad de seguridad puede ser una identidad administrada para los recursos de Azure, un principal de servicio, o bien un usuario o un grupo. En el entorno de desarrollo, la biblioteca cliente proporciona un token de acceso para un usuario o una entidad de servicio con fines de prueba.

El token de acceso que devuelve la biblioteca cliente de Azure Identity se encapsula en una credencial de token. A continuación, puede usar la credencial de token para obtener un objeto de cliente de servicio que se usará para realizar operaciones autorizadas en Azure Storage. Una manera sencilla de obtener el token de acceso y la credencial de token es usar la clase DefaultAzureCredential que proporciona la biblioteca cliente de Azure Identity. DefaultAzureCredential intenta obtener la credencial del token probando secuencialmente varios tipos de credenciales diferentes. DefaultAzureCredential funciona tanto en el entorno de desarrollo como en Azure.

En la tabla siguiente se señala información adicional para autorizar el acceso a los datos en varios escenarios:

Lenguaje .NET Java JavaScript Pitón Ir
Información general sobre la autenticación con Microsoft Entra ID Autenticación de aplicaciones de .NET con los servicios de Azure Autenticación de Azure con Java y Azure Identity Autenticación de aplicaciones JavaScript en Azure mediante el SDK de Azure Autenticación de aplicaciones de Python en Azure mediante el SDK de Azure
Autenticación mediante entidades de servicio para desarrolladores Autenticación de aplicaciones NET en servicios de Azure durante el desarrollo local mediante entidades de servicio Autenticación de Azure con entidades de servicio Autenticación de aplicaciones JS en servicios de Azure con entidad de servicio Autenticar aplicaciones Python en servicios de Azure durante el desarrollo local utilizando entidades de servicio Autenticación de SDK de Azure para Go con una entidad de servicio
Autenticación mediante cuentas de desarrollador o de usuario Autenticación de aplicaciones .NET en servicios de Azure durante el desarrollo local mediante cuentas de desarrollador Autenticación de Azure con credenciales de usuario Autenticación de aplicaciones JS en servicios de Azure con cuentas de desarrollo Autenticación de aplicaciones Python en servicios de Azure durante el desarrollo local mediante cuentas de desarrollador Autenticación de Azure con SDK de Azure para Go
Autenticación desde aplicaciones hospedadas en Azure Autenticación de aplicaciones hospedadas en recursos de Azure con el SDK de Azure para .NET Autenticación de aplicaciones de Java hospedadas en Azure Autenticación de aplicaciones JavaScript hospedadas en Azure en recursos de Azure con el SDK de Azure para JavaScript Autenticación de aplicaciones hospedadas en recursos de Azure con el SDK de Azure para Python Autenticación con SDK de Azure para Go mediante una identidad administrada
Autenticación desde aplicaciones locales Autenticación en recursos de Azure desde aplicaciones .NET hospedadas en el entorno local Autenticación de aplicaciones JavaScript locales en recursos de Azure Autenticación en recursos de Azure desde aplicaciones Python hospedadas en el entorno local
Información general de la biblioteca de cliente de Identidad Biblioteca de cliente de Azure Identity para .NET Biblioteca cliente de Azure Identity para Java Biblioteca cliente de Azure Identity para JavaScript Biblioteca cliente de Azure Identity para Python Biblioteca de cliente de Azure Identity para Go

Biblioteca de autenticación de Microsoft (MSAL)

Aunque Microsoft recomienda usar la biblioteca cliente de Azure Identity siempre que sea posible, la biblioteca MSAL podría ser adecuada para usarla en determinados escenarios avanzados. Para más información, consulte Más información sobre MSAL.

Cuando use MSAL para adquirir un token de OAuth para acceder a Azure Storage, debe proporcionar un ID de recurso de Microsoft Entra. Un identificador de recurso de Microsoft Entra indica el público con el que se puede usar un token emitido para proporcionar acceso a un recurso de Azure. En el caso de Azure Storage, el identificador de recurso puede ser específico de una sola cuenta de almacenamiento o puede aplicarse a cualquier cuenta de almacenamiento.

Cuando se proporciona un identificador de recurso específico de una sola cuenta de almacenamiento y servicio, el identificador de recurso se usa para adquirir un token para autorizar solicitudes a la cuenta y el servicio especificados. En la tabla siguiente se muestra el valor que se usará para el identificador de recurso, en función de la nube con la que esté trabajando. Reemplace <account-name> por el nombre de la cuenta de almacenamiento.

Nube Identificador del recurso
Azure global https://<account-name>.blob.core.windows.net
Azure Government (servicio de nube de Microsoft para el gobierno) https://<account-name>.blob.core.usgovcloudapi.net
Azure China 21Vianet https://<account-name>.blob.core.chinacloudapi.cn

También puede proporcionar un id. de recurso que se aplique a cualquier cuenta de almacenamiento, como se muestra en la tabla siguiente. Este id. de recurso es el mismo para todas las nubes públicas y soberanas y se usa para adquirir un token para autorizar las solicitudes a cualquier cuenta de almacenamiento.

Nube Identificador del recurso
Azure global
Azure Government (servicio de nube de Microsoft para el gobierno)
Azure China 21Vianet
https://storage.azure.com/

Asignación de roles de Azure para derechos de acceso

Microsoft Entra autoriza los derechos de acceso a los recursos protegidos mediante el RBAC de Azure. Azure Storage define un conjunto de roles RBAC integrados que abarcan conjuntos comunes de permisos utilizados para acceder a los datos de blob. También puede definir roles personalizados para el acceso a datos de blobs. Para más información sobre la asignación de roles de Azure para acceder a blobs, consulte Asignación de un rol de Azure para acceder a datos de blobs.

Una entidad de seguridad de Microsoft Entra puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada para los recursos de Azure. Los roles de RBAC que se asignan a un principal de seguridad determinan los permisos que el principal tiene para el recurso especificado.

Para obtener información sobre cómo asignar roles de Azure para el acceso a blobs, consulte Asignar un rol de Azure para acceder a datos de blobs.

En algunos casos, es posible que tenga que habilitar el acceso específico a los recursos de blobs o simplificar los permisos cuando tenga un gran número de asignaciones de roles para un recurso de almacenamiento. Utilice el control de acceso basado en atributos de Azure (Azure ABAC) para configurar condiciones en las asignaciones de roles. Puede usar condiciones con un rol personalizado o seleccionar roles integrados. Para más información sobre cómo configurar condiciones para los recursos de almacenamiento de Azure con ABAC, consulte Autorización del acceso a blobs mediante condiciones de asignación de roles de Azure (versión preliminar). Para más información sobre las condiciones admitidas para las operaciones de datos de blob, consulte Acciones y atributos para las condiciones de asignación de roles de Azure en Azure Storage (versión preliminar).

Nota:

Al crear una cuenta de Azure Storage, no se le asignan automáticamente permisos para acceder a los datos a través de Microsoft Entra ID. Tiene que asignarse a sí mismo de forma explícita un rol de Azure para acceder a Blob Storage. Puede asignarlo al nivel de su suscripción, grupo de recursos, cuenta de almacenamiento o un contenedor.

Ámbito de recursos

Antes de asignar un rol de Azure RBAC a una entidad de seguridad, determine el ámbito de acceso que debería tener la entidad de seguridad. Conceda siempre el ámbito más estrecho posible. Los roles de Azure RBAC definidos en un ámbito más amplio los heredan los recursos que están debajo de ellos.

Puede limitar el acceso a los recursos de blobs de Azure en los niveles siguientes, empezando por el ámbito más reducido:

  • Un contenedor individual. En este ámbito, una asignación de rol se aplica a todos los blobs del contenedor, y a las propiedades y metadatos del contenedor.
  • La cuenta de almacenamiento. En este ámbito, la asignación de un rol se aplica a todos los contenedores y sus blobs.
  • el grupo de recursos. En este ámbito, se aplica una asignación de roles a todos los contenedores de todas las cuentas de almacenamiento del grupo de recursos.
  • La suscripción. En este ámbito, se aplica una asignación de roles a todos los contenedores de todas las cuentas de almacenamiento de todos los grupos de recursos de la suscripción.
  • Un grupo de administración. En este ámbito, se aplica una asignación de roles a todos los contenedores de todas las cuentas de almacenamiento de todos los grupos de recursos de todas las suscripciones del grupo de administración.

Para obtener más información sobre el ámbito de las asignaciones de roles de RBAC de Azure, consulte Información sobre el ámbito de RBAC de Azure.

Roles integrados de Azure para blobs

Azure RBAC proporciona varios roles integrados para autorizar el acceso a datos de blobs mediante Microsoft Entra ID y OAuth. Entre los roles que proporcionan permisos a los recursos de datos en Azure Storage están, por ejemplo, los siguientes:

Para obtener información sobre cómo asignar un rol integrado de Azure a una entidad de seguridad, vea Asignación de un rol de Azure para acceder a datos de blobs. Para obtener información sobre cómo enumerar los roles RBAC de Azure y sus permisos, consulte Enumeración de las definiciones de roles de Azure.

Para más información acerca de cómo se definen los roles integrados para Azure Storage, consulte Descripción de definiciones de roles. Para más información acerca de la creación de roles personalizados de Azure, consulte Roles personalizados de Azure.

Solo los roles definidos explícitamente para el acceso a datos permiten que una entidad de seguridad acceda a datos blob. Los roles integrados, como Propietario, Colaborador y Colaborador de la cuenta de almacenamiento, permiten que una entidad de seguridad administre una cuenta de almacenamiento, pero no proporcionan acceso a los datos de blob dentro de esa cuenta a través de Microsoft Entra ID. Sin embargo, si un rol incluye Microsoft. Storage/storageAccounts/listKeys/action, un usuario al que se asigna ese rol puede acceder a los datos de la cuenta de almacenamiento a través de la autorización de clave compartida mediante las claves de acceso de la cuenta. Para obtener más información, vea Elección de la forma de autorizar el acceso a los datos de blob en Azure Portal.

Para obtener información detallada sobre los roles integrados de Azure para Azure Storage para los servicios de datos y el servicio de administración, consulte la sección Almacenamiento en Roles integrados de Azure para RBAC de Azure. Además, para obtener información sobre los diferentes tipos de roles que proporcionan permisos en Azure, consulte Roles de Azure, roles de Microsoft Entra y roles de administrador de suscripciones clásicas.

Importante

Las asignaciones de roles de Azure pueden tardar hasta 30 minutos en propagarse.

Permisos de acceso para operaciones de datos

Para obtener información sobre los permisos necesarios para llamar a operaciones concretas de Blob service, consulte Permisos para llamar a operaciones de datos.

Retrasos de propagación de la asignación de roles para el acceso a datos Blob

Al asignar roles o quitar asignaciones de roles, los cambios pueden tardar hasta 10 minutos en aplicarse. Si asigna roles en el ámbito del grupo de administración, puede llevar mucho más tiempo.

Puede asignar roles integrados con acciones de datos en el ámbito del grupo de administración. Sin embargo, en escenarios poco frecuentes, puede haber un retraso significativo (hasta 12 horas) antes de que los permisos de acción de datos sean efectivos para determinados tipos de recursos. Los permisos se aplican eventualmente. En el caso de los roles integrados con acciones de datos, no se recomienda agregar o quitar asignaciones de roles en el ámbito del grupo de administración en escenarios en los que se requiere la activación o revocación de permisos puntuales, como Microsoft Entra Privileged Identity Management (PIM).

Si establece los permisos adecuados que permiten el acceso a los datos a través de Microsoft Entra ID y no puede acceder a los datos, por ejemplo, recibe un error "AuthorizationPermissionMismatch", asegúrese de dar suficiente tiempo para que los cambios de permisos realizados en Microsoft Entra ID se repliquen. Además, asegúrese de que no tiene ninguna asignación de denegación que bloquee el acceso. Para obtener más información, consulte Descripción de las asignaciones de denegación de Azure.

Acceso a datos con una cuenta de Microsoft Entra

Puede autorizar el acceso a datos de blobs a través del portal de Azure, PowerShell o CLI de Azure mediante la cuenta de Microsoft Entra o mediante las claves de acceso de la cuenta (autorización de clave compartida).

Precaución

No se recomienda la autorización con clave compartida, ya que puede ser menos segura. Para obtener una seguridad óptima, deshabilite la autorización mediante clave compartida para la cuenta de almacenamiento, como se describe en Impedir la autorización de clave compartida para una cuenta de Azure Storage.

El uso de claves de acceso y cadenas de conexión debe limitarse a la prueba inicial de aplicaciones de concepto o prototipos de desarrollo que no tienen acceso a datos confidenciales o de producción. De lo contrario, siempre se deben preferir las clases de autenticación basadas en tokens disponibles en el SDK de Azure al autenticarse en los recursos de Azure.

Microsoft recomienda que los clientes usen Microsoft Entra ID o una firma de acceso compartido (SAS) para autorizar el acceso a los datos de Azure Storage. Para obtener más información, consulte Autorización de operaciones para el acceso a datos.

Acceso a datos desde Azure Portal

El portal de Azure puede usar su cuenta de Microsoft Entra o las claves de acceso de la cuenta para acceder a datos de blob en una cuenta de almacenamiento de Azure. El esquema de autorización que use Azure Portal depende de los roles de Azure que tenga asignados.

Al intentar acceder a los datos de blobs, el portal de Azure comprueba primero si se le ha asignado un rol de Azure con Microsoft. Storage/storageAccounts/listkeys/action. Si se le ha asignado un rol con esta acción, el portal de Azure usa la clave de cuenta para acceder a los datos del blob a través de la autorización de clave compartida. Si no tiene asignado un rol con esta acción, el portal de Azure intenta acceder a los datos mediante la cuenta de Microsoft Entra.

Para acceder a los datos de blobs desde el portal de Azure usando su cuenta de Microsoft Entra, necesita permisos para acceder a los datos de blobs y también necesita permisos para navegar a través de los recursos de la cuenta de almacenamiento en el portal de Azure. Los roles integrados que proporciona Azure Storage conceden acceso a recursos de blobs, pero no conceden permisos a los recursos de la cuenta de almacenamiento. Por este motivo, el acceso al portal también requiere la asignación de un rol de Azure Resource Manager, como el rol Lector, con ámbito limitado al nivel de la cuenta de almacenamiento o superior. El rol Lector concede los permisos más restringidos, pero otro rol de Azure Resource Manager que conceda acceso a los recursos de administración de la cuenta de almacenamiento también es aceptable. Para obtener más información sobre cómo asignar permisos a los usuarios para el acceso a los datos de Azure Portal con una cuenta de Microsoft Entra, consulte Asignar un rol de Azure para el acceso a datos de blobs.

Azure Portal indica qué esquema de autorización se está usando al examinar un contenedor. Para obtener más información sobre acceso a los datos en el portal, consulte Elección de la forma de autorizar el acceso a los datos de blobs en Azure Portal.

Acceso a datos desde PowerShell o la CLI de Azure

La CLI de Azure y PowerShell admiten el inicio de sesión con credenciales de Microsoft Entra. Después de iniciar sesión, la sesión se lleva a cabo con esas credenciales. Para obtener más información, vea uno de los siguientes artículos:

Soporte de funciones

La compatibilidad con esta característica puede verse afectada al habilitar Data Lake Storage Gen2, el protocolo Network File System (NFS) 3.0 o el Protocolo de transferencia de archivos SSH (SFTP). Si ha habilitado cualquiera de estas funcionalidades, consulte Compatibilidad con características de Blob Storage en cuentas de Azure Storage para evaluar la compatibilidad con esta característica.

La autorización de operaciones de datos de blob con Microsoft Entra ID solo se admite para las versiones de la API REST 2017-11-09 y versiones posteriores. Para obtener más información, vea Versiones de los servicios de Azure Storage.

Pasos siguientes