Configuración del acceso de lectura anónimo para contenedores y blobs
Azure Storage admite el acceso de lectura anónimo opcional para contenedores y blobs. De forma predeterminada, nunca se permite el acceso anónimo a los datos. A menos que habilite explícitamente el acceso anónimo, todas las solicitudes a un contenedor y sus blobs deben estar autorizadas. Al configurar la configuración de nivel de acceso de un contenedor para permitir el acceso anónimo, los clientes pueden leer datos en ese contenedor sin autorizar la solicitud.
Advertencia
Cuando se configura un contenedor para el acceso anónimo, cualquier cliente puede leer los datos del mismo. El acceso anónimo presenta un riesgo de seguridad potencial, por lo que si el escenario no lo requiere, se recomienda corregir el acceso anónimo para la cuenta de almacenamiento.
En este artículo se describe cómo configurar el acceso de lectura anónimo para un contenedor y sus blobs. Para obtener información sobre cómo corregir el acceso anónimo para una seguridad óptima, consulte uno de estos artículos:
- Corrección del acceso de lectura anónimo a datos de blobs (implementaciones de Azure Resource Manager)
- Corrección del acceso de lectura anónimo a datos de blobs (implementaciones clásicas)
Acerca del acceso de lectura anónimo
El acceso anónimo a los datos siempre está prohibido de manera predeterminada. Hay dos configuraciones independientes que afectan al acceso anónimo:
Valor de acceso anónimo para la cuenta de almacenamiento. Una cuenta de almacenamiento de Azure Resource Manager ofrece un valor para permitir o denegar el acceso anónimo a la cuenta. Microsoft recomienda no permitir el acceso anónimo para las cuentas de almacenamiento para lograr una seguridad óptima.
Cuando se permite el acceso anónimo en el nivel de cuenta, los datos de blobs no están disponibles para el acceso de lectura anónimo a menos que el usuario realice el paso adicional para configurar explícitamente el valor de acceso anónimo del contenedor.
Configure el acceso anónimo del contenedor. De manera predeterminada, el valor de acceso anónimo de un contenedor está deshabilitado, lo que significa que se requiere autorización para cada solicitud al contenedor o sus datos. Un usuario con los permisos adecuados puede modificar el valor de acceso anónimo de un contenedor para habilitar el acceso anónimo solo si se permite el acceso anónimo para la cuenta de almacenamiento.
En la tabla siguiente se resume cómo las dos opciones de configuración afectan al acceso anónimo para un contenedor.
El nivel de acceso anónimo del contenedor se establece en Privado (configuración predeterminada) | El nivel de acceso anónimo del contenedor se establece en Contenedor | El nivel de acceso anónimo del contenedor se establece en Blob | |
---|---|---|---|
El acceso público no está permitido para la cuenta de almacenamiento | No hay acceso anónimo a ningún contenedor en la cuenta de almacenamiento. | No hay acceso anónimo a ningún contenedor en la cuenta de almacenamiento. La configuración de la cuenta de almacenamiento invalida la configuración del contenedor. | No hay acceso anónimo a ningún contenedor en la cuenta de almacenamiento. La configuración de la cuenta de almacenamiento invalida la configuración del contenedor. |
Se permite el acceso anónimo para la cuenta de almacenamiento | No hay acceso anónimo a este contenedor (configuración predeterminada). | Se permite el acceso anónimo a este contenedor y sus blobs. | Se permite el acceso anónimo a los blobs de este contenedor, pero no al propio contenedor. |
Cuando se permite el acceso anónimo para una cuenta de almacenamiento y se configura para un contenedor específico, el servicio acepta una solicitud para leer un blob en ese contenedor que se pasa sin el servicio acepta un encabezado Authorization
y los datos del blob se devuelven en la respuesta. Sin embargo, si la solicitud se pasa con un encabezado Authorization
, se omite el acceso anónimo en la cuenta de almacenamiento y la solicitud se autoriza en función de las credenciales proporcionadas.
Permitir o denegar el acceso de lectura anónimo para una cuenta de almacenamiento
Cuando se permite el acceso anónimo para una cuenta de almacenamiento, un usuario con los permisos adecuados puede modificar la configuración de acceso anónimo de un contenedor para habilitar el acceso anónimo a los datos de ese contenedor. Los datos de blobs nunca están disponibles para el acceso anónimo a menos que el usuario realice el paso adicional para configurar explícitamente la configuración de acceso anónimo del contenedor.
Tenga en cuenta que el acceso anónimo a un contenedor siempre está desactivado de forma predeterminada y debe configurarse explícitamente para permitir solicitudes anónimas. Independientemente de la configuración de la cuenta de almacenamiento, los datos nunca estarán disponibles para el acceso anónimo a menos que un usuario con los permisos adecuados realice este paso adicional para habilitar el acceso anónimo en el contenedor.
Al permitir el acceso anónimo para la cuenta de almacenamiento, se invalida la configuración de acceso de todos los contenedores de esa cuenta de almacenamiento, lo que impide el acceso anónimo a los datos de blobs de esa cuenta. Cuando no se permite el acceso anónimo para la cuenta, no es posible configurar la configuración de acceso para que un contenedor permita el acceso anónimo y se produzca un error en las solicitudes anónimas futuras a esa cuenta. Antes de cambiar esta configuración, asegúrese de comprender el impacto en las aplicaciones cliente que podrían estar accediendo a los datos de la cuenta de almacenamiento de forma anónima. Para más información, vea el artículo en el que se explica cómo impedir el acceso de lectura anónimo a contenedores y blobs.
Importante
Después de no permitir el acceso anónimo para una cuenta de almacenamiento, los clientes que usan el desafío de portador anónimo encontrarán que Azure Storage devuelve un error 403 (Prohibido) en lugar de un error 401 (No autorizado). Se recomienda que todos los contenedores sean privados para mitigar este problema. Para obtener más información sobre cómo modificar la configuración de acceso anónimo para contenedores, vea Establecer el nivel de acceso de un contenedor.
Permitir o no permitir el acceso anónimo requiere la versión 2019-04-01 o posterior del proveedor de recursos de Azure Storage. Para más información, consulte la API REST del proveedor de recursos de Azure Storage.
Permisos para no permitir el acceso anónimo
Para establecer la propiedad AllowBlobAnonymousAccess para la cuenta de almacenamiento, un usuario debe tener permisos para crear y administrar cuentas de almacenamiento. Los roles de control de acceso basado en rol de Azure (Azure RBAC) que proporcionan estos permisos incluyen la acción Microsoft.Storage/storageAccounts/write. Los roles integrados con esta acción incluyen:
- El rol Propietario de Azure Resource Manager
- El rol Colaborador de Azure Resource Manager
- El rol Colaborador de la cuenta de almacenamiento
Las asignaciones de roles deben tener el ámbito del nivel de la cuenta de almacenamiento o superior para permitir que un usuario deniegue el acceso anónimo para la cuenta de almacenamiento. Para obtener más información sobre el ámbito de los roles, vea Comprensión del ámbito para RBAC de Azure.
Preste atención para restringir la asignación de estos roles solo a aquellos usuarios administrativos que requieran la capacidad de crear una cuenta de almacenamiento o actualizar sus propiedades. Use el principio de privilegios mínimos para asegurarse de que los usuarios tienen los permisos mínimos que necesitan para realizar sus tareas. Para más información sobre la administración del acceso con RBAC de Azure, consulte Procedimientos recomendados para RBAC de Azure.
Estos roles no proporcionan acceso a los datos de una cuenta de almacenamiento a través de Microsoft Entra ID. Sin embargo, incluyen Microsoft.Storage/storageAccounts/listkeys/action, que concede acceso a las claves de acceso de la cuenta. Con este permiso, un usuario puede usar las claves de acceso de la cuenta para acceder a todos los datos de una cuenta de almacenamiento.
La acción Microsoft.Storage/storageAccounts/listkeys/action en sí concede acceso a los datos a través de las claves de cuenta, pero no concede a un usuario la capacidad de cambiar la propiedad AllowBlobPublicAccess para una cuenta de almacenamiento. Para los usuarios que necesiten acceder a los datos de la cuenta de almacenamiento, pero no deban tener la capacidad de cambiar la configuración de esta, considere la posibilidad de asignar roles tipo Colaborador de datos de Storage Blob, Lector de datos de Storage Blob o Lector y acceso a los datos.
Nota
Los roles clásicos de administrador de suscripciones Administrador del servicio y Coadministrador equivalen al rol Propietario de Azure Resource Manager. El rol Propietario incluye todas las acciones, por lo que un usuario con uno de estos roles administrativos también puede crear cuentas de almacenamiento y administrar la su configuración. Para obtener más información, consulte Roles de Azure, roles de Microsoft Entra y roles de administrador de suscripción clásicos .
Establecer la propiedad AllowBlobPublicAccess de la cuenta de almacenamiento
Para permitir o no permitir el acceso anónimo para una cuenta de almacenamiento, establezca la propiedad AllowBlobPublicAccess de la cuenta. Esta propiedad está disponible para todas las cuentas de almacenamiento que se crean con el modelo de implementación de Azure Resource Manager. Para más información, consulte Introducción a las cuentas de almacenamiento.
Para permitir o denegar el acceso anónimo para una cuenta de almacenamiento en Azure Portal, siga estos pasos:
Vaya a la cuenta de almacenamiento en Azure Portal.
Busque la opción Configuración en Configuración.
Establezca Permitir acceso anónimo de blobs en Habilitado o Deshabilitado.
Nota:
No permitir el acceso anónimo en una cuenta de almacenamiento no afecta a los sitios web estáticos hospedados en dicha cuenta. Al contenedor $web siempre se puede acceder de forma pública.
Después de actualizar la configuración de acceso anónimo de la cuenta de almacenamiento, el cambio puede tardar hasta 30 segundos en propagarse por completo.
Cuando un contenedor está configurado para el acceso anónimo, no es necesario autorizar las solicitudes de lectura de blobs en ese contenedor. Sin embargo, las reglas de firewall configuradas para la cuenta de almacenamiento permanecen en vigor y bloquean el tráfico alineado con las ACL configuradas.
Permitir o no permitir el acceso anónimo requiere la versión 2019-04-01 o posterior del proveedor de recursos de Azure Storage. Para más información, consulte la API REST del proveedor de recursos de Azure Storage.
En los ejemplos de esta sección se muestra cómo leer la propiedad AllowBlobPublicAccess de la cuenta de almacenamiento para determinar si el acceso anónimo está permitido actualmente o no permitido. Para obtener información sobre cómo comprobar que la configuración de acceso anónimo de una cuenta está configurada para evitar el acceso anónimo, vea Corregir el acceso anónimo para la cuenta de almacenamiento.
Establecimiento del nivel de acceso anónimo para un contenedor
Para conceder a los usuarios anónimos acceso de lectura a un contenedor y sus blobs, primero permita el acceso anónimo para la cuenta de almacenamiento y, a continuación, establezca el nivel de acceso anónimo del contenedor. Si se deniega el acceso anónimo para la cuenta de almacenamiento, no podrá configurar el acceso anónimo para un contenedor.
Precaución
Microsoft recomienda permitir el acceso anónimo a los datos de blobs de la cuenta de almacenamiento.
Cuando se permite el acceso anónimo para una cuenta de almacenamiento, puede configurar un contenedor con los permisos siguientes:
- Sin acceso de lectura público: Solo puede acceder al contenedor y a sus blobs con una solicitud autorizada. Esta opción es el valor predeterminado para todos los contenedores nuevos.
- Acceso de lectura público solo para blobs: Blobs dentro del contenedor se pueden leer mediante una solicitud anónima, pero los datos del contenedor no están disponibles de forma anónima. Los clientes anónimos no pueden enumerar los blobs dentro del contenedor.
- Acceso de lectura público para contenedores y blobs: Los datos de los contenedores y los blobs los puede leer una solicitud anónima, excepto la configuración de los permisos de un contenedor y los metadatos de un contenedor. Los clientes pueden enumerar los blobs del contenedor a través de una solicitud anónima, pero no pueden enumerar los contenedores que están en la cuenta de almacenamiento.
No se puede cambiar el nivel de acceso anónimo de un blob individual. El nivel de acceso anónimo solo se establece en el nivel de contenedor. Puede establecer el nivel de acceso anónimo del contenedor al crear el contenedor o actualizar la configuración en un contenedor existente.
Para actualizar el nivel de acceso anónimo para uno o varios contenedores existentes en Azure Portal, siga estos pasos:
Vaya a la información general de su cuenta de almacenamiento en Azure Portal.
En Almacenamiento de datos en la hoja de menú, seleccione Contenedores.
Seleccione los contenedores para los que desea establecer el nivel de acceso anónimo.
Use el botón Cambiar nivel de acceso para mostrar la configuración de acceso anónimo.
Seleccione el nivel de acceso anónimo deseado en la lista desplegable Nivel de acceso anónimo y seleccione el botón Aceptar para aplicar el cambio a los contenedores seleccionados.
Cuando no se permite el acceso anónimo para la cuenta de almacenamiento, no se puede establecer el nivel de acceso anónimo de un contenedor. Si intenta establecer el nivel de acceso anónimo del contenedor, la configuración está deshabilitada porque no se permite el acceso anónimo para la cuenta.
Comprobación de la configuración del acceso anónimo de un conjunto de contenedores
Es posible comprobar qué contenedores de una o varias cuentas de almacenamiento están configuradas para el acceso anónimo enumerando los contenedores y comprobando la configuración de acceso anónimo. Este enfoque es una opción práctica cuando una cuenta de almacenamiento no contiene un gran número de contenedores o cuando se comprueba la configuración en un pequeño número de cuentas de almacenamiento. Sin embargo, el rendimiento puede empeorar si intenta enumerar un elevado número de contenedores.
En el ejemplo siguiente se usa PowerShell para obtener la configuración del acceso anónimo de todos los contenedores de una cuenta de almacenamiento. No olvide reemplazar los valores del marcador de posición entre corchetes con sus propios valores:
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess
Compatibilidad de características
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.