Configuración de acceso de lectura público anónimo a contenedores y blobs

Azure Storage admite el acceso de lectura público anónimo opcional a 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. Si se configura el nivel de acceso público de un contenedor para permitir el acceso anónimo, los clientes pueden leer los datos de dicho contenedor sin autorizar la solicitud.

Advertencia

Cuando se configura un contenedor para el acceso público, cualquier cliente puede leer los datos del mismo. El acceso público presenta un riesgo de seguridad potencial, por lo que si el escenario no lo requiere, Microsoft recomienda no permitirlo para la cuenta de almacenamiento. Para más información, consulte el artículo en el que se explica cómo impedir el acceso de lectura público anónimo a contenedores y blobs.

En este artículo se describe cómo configurar el acceso público anónimo de lectura para un contenedor y sus blobs. Para más información sobre cómo acceder a los datos de blobs de forma anónima desde una aplicación cliente, consulte Acceso anónimo a contenedores y blobs públicos con .NET.

Acerca del acceso de lectura público anónimo

El acceso público a los datos siempre está prohibido de forma predeterminada. Hay dos configuraciones independientes que afectan al acceso público:

  1. Permitir el acceso público para la cuenta de almacenamiento. De forma predeterminada, una cuenta de almacenamiento permite a un usuario con los permisos adecuados configurar el acceso público a un contenedor. Los datos de blobs no están disponibles para el acceso público a menos que el usuario lleve a cabo el paso adicional para configurar explícitamente la configuración de acceso público del contenedor.
  2. Configurar el acceso público del contenedor. De forma predeterminada, la configuración de acceso público de un contenedor está deshabilitada, lo que significa que se requiere autorización para cada solicitud al contenedor o sus datos. Un usuario con los permisos adecuados puede modificar la configuración de acceso público 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 el modo en que ambas opciones afectan a acceso público a un contenedor.

Configuración de acceso público El acceso público está deshabilitado para un contenedor (configuración predeterminada) El acceso público para un contenedor está establecido en Contenedor El acceso público para un contenedor está establecido en Blob
El acceso público no está permitido para la cuenta de almacenamiento No hay acceso público a ningún contenedor de la cuenta de almacenamiento. No hay acceso público a ningún contenedor de la cuenta de almacenamiento. La configuración de la cuenta de almacenamiento invalida la configuración del contenedor. No hay acceso público a ningún contenedor de la cuenta de almacenamiento. La configuración de la cuenta de almacenamiento invalida la configuración del contenedor.
El acceso público está permitido para la cuenta de almacenamiento (configuración predeterminada) No hay acceso público a este contenedor (configuración predeterminada). Se permite el acceso público a este contenedor y sus blobs. Se permite el acceso público a los blobs de este contenedor, pero no al propio contenedor.

Habilitación o deshabilitación del permiso de acceso de lectura público a una cuenta de almacenamiento

De forma predeterminada, una cuenta de almacenamiento está configurada para permitir a los usuarios con los permisos adecuados configurar el acceso público a contenedores y blobs. Cuando se permite el acceso público, un usuario con los permisos adecuados puede modificar la configuración de acceso público de un contenedor para permitir el acceso público anónimo a los datos de ese contenedor. Los datos de blobs no están nunca disponibles para el acceso público a menos que el usuario lleve a cabo el paso adicional para configurar explícitamente la configuración de acceso público del contenedor.

Tenga en cuenta que el acceso público a un contenedor está siempre desactivado de forma predeterminada y se debe configurar 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 público a menos que un usuario con los permisos adecuados lleve a cabo este paso adicional para habilitar el acceso público en el contenedor.

No permitir el acceso público para la cuenta de almacenamiento impide el acceso anónimo a todos los contenedores y blobs de esa cuenta. Cuando no se permite el acceso público a la cuenta, no es posible configurar el acceso público para un contenedor para permitir el acceso anónimo. Para mejorar la seguridad, Microsoft recomienda no permitir el acceso público para las cuentas de almacenamiento, salvo que el escenario requiera que los usuarios accedan a los recursos de los blobs de forma anónima.

Importante

Cuando no se permite el acceso público a una cuenta de almacenamiento, se invalida la configuración de acceso público de todos los contenedores de esta. Además, todas las solicitudes anónimas futuras a esa cuenta generarán un error. Antes de cambiar esta configuración, asegúrese de que entiende el impacto en las aplicaciones cliente que pueden tener acceso a los datos de la cuenta de almacenamiento de forma anónima. Para más información, consulte el artículo en el que se explica cómo impedir el acceso de lectura público anónimo a contenedores y blobs.

Para permitir o denegar el acceso público a una cuenta de almacenamiento, configure 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.

De manera predeterminada la propiedad AllowBlobPublicAccess no se establece para una cuenta de almacenamiento y no devuelve ningún valor hasta que se establece de forma explícita. La cuenta de almacenamiento permite el acceso público cuando el valor de la propiedad es NULL o true.

Para permitir o no permitir el acceso público a una cuenta de almacenamiento en Azure Portal, siga estos pasos:

  1. Vaya a la cuenta de almacenamiento en Azure Portal.

  2. Busque la opción Configuración en Configuración.

  3. Defina Blob public access (Acceso público a blobs) como Habilitado o Deshabilitado.

    Captura de pantalla que muestra cómo permitir o no permitir el acceso público a blobs en una cuenta

Nota

No permitir el acceso público 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 público de la cuenta de almacenamiento, el cambio puede tardar hasta 30 segundos en propagarse por completo.

Recuerde que permitir o denegar el acceso público al blob requiere la versión 2019-04-01 o posterior del proveedor de recursos de Azure Storage. Para obtener más información, consulte la API de REST del proveedor de recursos de Azure Storage.

En los ejemplos de esta sección se ha mostrado cómo leer la propiedad AllowBlobPublicAccess de la cuenta de almacenamiento para determinar si actualmente se permite el acceso público o no. Para obtener más información sobre cómo comprobar que la configuración de acceso público de una cuenta está configurada para evitar accesos anónimos, consulte Corregir el acceso público anónimo.

Establecimiento del nivel de acceso público en un contenedor

Para conceder a usuarios anónimos acceso de lectura a un contenedor y sus blobs, primero hay que permitir el acceso público en la cuenta de almacenamiento y, después, establecer el nivel de acceso público del contenedor. Si el acceso público no está permitido en la cuenta de almacenamiento, no podrá configurar un acceso público en un contenedor.

Cuando está permitido el acceso público para una cuenta de almacenamiento, puede configurar un contenedor con los siguientes permisos:

  • 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: Los blobs del contenedor los puede leer 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 puede cambiar el nivel de acceso público para un blob individual. El nivel de acceso público se establece en el nivel de contenedor. El nivel de acceso público del contenedor se puede establecer al crear el contenedor o al actualizar este valor de configuración en un contenedor existente.

Para actualizar el nivel de acceso público en uno o varios contenedores desde Azure Portal, siga estos pasos:

  1. Vaya a la información general de su cuenta de almacenamiento en Azure Portal.

  2. En Almacenamiento de datos en la hoja de menú, seleccione Contenedores de blob.

  3. Seleccione los contenedores para el que quiere establecer el nivel de acceso público.

  4. Use el botón Cambiar nivel de acceso para mostrar la configuración de acceso público.

  5. Seleccione el nivel de acceso público deseado en la lista desplegable Nivel de acceso público y haga clic en el botón Aceptar para aplicar el cambio a los contenedores seleccionados.

    Captura de pantalla que muestra cómo establecer el nivel de acceso público en el portal.

Cuando el acceso público no está permitido en la cuenta de almacenamiento, no es posible establecer el nivel de acceso público de ningún contenedor. Si intenta establecer el nivel de acceso público del contenedor, verá que el valor está deshabilitado porque el acceso público no está permitido para la cuenta.

Captura de pantalla que muestra que el valor del nivel de acceso público del contenedor está bloqueado cuando no se permite el acceso público

Comprobación de la configuración del acceso público de un conjunto de contenedores

Para comprobar qué contenedores de una o varias cuentas de almacenamiento están configurados para el acceso público, puede enumerar los contenedores y consultar la configuración del acceso público. Este enfoque es una opción práctica cuando una cuenta de almacenamiento no contiene un elevado número de contenedores, o bien cuando se comprueba la configuración de 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 público 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

Pasos siguientes