Set Container ACL

La operación Set Container ACL establece los permisos del contenedor especificado. Los permisos indican si el acceso a los blobs de un contenedor es público.

A partir de la versión 2009-09-19, los permisos de contenedor proporcionan las siguientes opciones para administrar el acceso al contenedor:

  • Acceso de lectura público completo: los datos del contenedor y blobs se pueden leer mediante una solicitud anónima. Los clientes pueden enumerar blobs dentro del contenedor a través de una solicitud anónima, pero no pueden enumerar contenedores dentro de la cuenta de almacenamiento.

  • Acceso de lectura público solo para blobs: Los datos de blobs de este contenedor se pueden leer a través de una solicitud anónima, pero los datos del contenedor no están disponibles. Los clientes no pueden enumerar blobs dentro del contenedor a través de una solicitud anónima.

  • Sin acceso público de lectura: solamente el dueño de la cuenta puede leer los datos del contenedor y del blob.

Set Container ACL también establece una directiva de acceso almacenada que se podrá usar con firmas de acceso compartido. Para obtener más información, consulte Definición de una directiva de acceso almacenada.

Todo el acceso público al contenedor es anónimo, como lo es el acceso mediante una firma de acceso compartido.

Solicitud

La solicitud Set Container ACL se puede construir como sigue. Se recomienda usar HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento:

Método URI de solicitud Versión de HTTP
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1

Solicitud del servicio de almacenamiento emulado

Al realizar una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto del servicio Blob como 127.0.0.1:10000, seguido del nombre de la cuenta de almacenamiento emulado:

Método URI de solicitud Versión de HTTP
PUT http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl HTTP/1.1

Para más información, consulte Uso del emulador de Azurite para desarrollo y pruebas locales de Azure Storage.

Parámetros del identificador URI

Puede especificar los siguientes parámetros adicionales en el URI de solicitud:

Parámetro Descripción
timeout Opcional. El parámetro timeout se expresa en segundos. Para más información, consulte Establecimiento de tiempos de espera para las operaciones de Blob Service.

Encabezados de solicitud

Los encabezados de solicitud obligatorios y opcionales se describen en la tabla siguiente:

Encabezado de solicitud Descripción
Authorization Necesario. Especifica el esquema de autorización, el nombre de cuenta y la firma. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
Date o x-ms-date Necesario. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
x-ms-version Opcional. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Versiones de los servicios de Azure Storage.
x-ms-blob-public-access Opcional. Especifica si el acceso a los datos del contenedor es público, así como el nivel de acceso. Los valores posibles son:

- container: especifica el acceso de lectura público completo para los datos de contenedor y blob. Los clientes pueden enumerar blobs dentro del contenedor a través de una solicitud anónima, pero no pueden enumerar contenedores dentro de la cuenta de almacenamiento.
- blob: Especifica el acceso de lectura público para blobs. Los datos de blobs de este contenedor se pueden leer a través de una solicitud anónima, pero los datos del contenedor no están disponibles. Los clientes no pueden enumerar blobs dentro del contenedor a través de una solicitud anónima.

Si este encabezado no se incluye en la solicitud, los datos del contenedor son privados para el propietario de la cuenta.

Tenga en cuenta que no se permite establecer el acceso público para un contenedor en una cuenta de Azure Premium Storage.
x-ms-lease-id: <ID> Opcional, versión 2012-02-12 y posteriores. Si se especifica, Set Container ACL solo se realiza correctamente si la concesión del contenedor está activa y coincide con este identificador. Si no hay ninguna concesión activa o el identificador no coincide, se devuelve 412 (error de condición previa).
x-ms-client-request-id Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 kibibyte (KiB) que se registra en los registros cuando se configura el registro. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes que recibe el servidor. Para obtener más información, consulte Supervisión de Azure Blob Storage.

Esta operación también admite el uso de encabezados condicionales que permiten ejecutar la operación solo si se cumple una condición especificada. Para más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Service.

Cuerpo de la solicitud

Para especificar una directiva de acceso almacenada, proporcione un identificador y una directiva de acceso únicos en el cuerpo de la solicitud para la operación Set Container ACL.

El elemento SignedIdentifier incluye el identificador único, tal como se especifica en el elemento Id, y los detalles de la directiva de acceso, tal como se especifica en el elemento AccessPolicy. La longitud máxima del identificador único es de 64 caracteres.

Los campos Start y Expiry deben expresarse como horas UTC y deben cumplir los requisitos de un formato ISO 8061 válido. Entre los formatos ISO 8061 admitidos se incluyen los siguientes:

  • YYYY-MM-DD
  • YYYY-MM-DDThh:mmTZD
  • YYYY-MM-DDThh:mm:ssTZD
  • YYYY-MM-DDThh:mm:ss.fffffffTZD

Para la parte de fecha de estos formatos, YYYY es una representación de cuatro dígitos del año, MM es una representación de dos dígitos del mes y DD es una representación de dos dígitos del día. Para la parte de hora, hh es la representación de la hora en la notación de 24 horas, mm es la representación de dos dígitos de los minutos, ss es la representación de dos dígitos de los segundos y fffffff es la representación de siete dígitos de los milisegundos. Un designador T de hora separa las partes de fecha y hora de la cadena y un designador TZD de zona horaria especifica una zona horaria.

<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>unique-64-character-value</Id>  
    <AccessPolicy>  
      <Start>start-time</Start>  
      <Expiry>expiry-time</Expiry>  
      <Permission>abbreviated-permission-list</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

Solicitud de ejemplo

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT  
x-ms-blob-public-access: container  
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>  
    <AccessPolicy>  
      <Start>2009-09-28T08:49:37.0000000Z</Start>  
      <Expiry>2009-09-29T08:49:37.0000000Z</Expiry>  
      <Permission>rwd</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

Response

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

status code

Una operación correcta devuelve el código de estado 200 Correcto.

Para obtener más información sobre los códigos de estado, consulte Códigos de estado y error.

Encabezados de respuesta

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.

Encabezado de respuesta Descripción
ETag La ETag del contenedor. Si la versión de la solicitud es 2011-08-18 o posterior, el valor ETag se incluye entre comillas.
Last-Modified Devuelve la fecha y hora en que se modificó por última vez el contenedor. El formato de la fecha sigue las convenciones de RFC 1123. Para obtener más información, vea Representar valores de fecha y hora en encabezados.

Cualquier operación que modifique el contenedor o sus propiedades o metadatos actualiza la hora de la última modificación, incluido el establecimiento de los permisos del contenedor. Las operaciones en blobs no afectan a la hora de la última modificación del contenedor.
x-ms-request-id Identifica de forma única la solicitud que se realizó y se puede usar para solucionar problemas de la solicitud. Para más información, consulte Solución de problemas de operaciones de API.
x-ms-version Indica la versión de Blob Service que se usó para ejecutar la solicitud. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.
Date Valor de fecha y hora UTC generado por el servicio, que indica la hora en que se inició la respuesta.
x-ms-client-request-id Se puede usar para solucionar problemas de solicitudes y respuestas correspondientes. El valor de este encabezado es igual al valor del x-ms-client-request-id encabezado si está presente en la solicitud y el valor no contiene más de 1024 caracteres ASCII visibles. Si el x-ms-client-request-id encabezado no está presente en la solicitud, no estará presente en la respuesta.

Respuesta de muestra

Response Status:  
HTTP/1.1 200 OK  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 22:42:55 GMT  
ETag: "0x8CB171613397EAB"  
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT  
x-ms-version: 2011-08-18  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

Authorization

La Set Container ACL operación solo admite la autorización de clave compartida.

Comentarios

Solo el propietario de la cuenta puede tener acceso a los recursos de un determinado contenedor, a menos que él mismo haya especificado que el acceso a los recursos del contenedor es público, o haya emitido una firma de acceso compartido para un recurso del contenedor.

Al establecer los permisos para un contenedor, los permisos existentes se reemplazan. Para actualizar los permisos del contenedor, llame a Get Container ACL para capturar todas las directivas de acceso asociadas al contenedor. Modifique la directiva de acceso que desea cambiar y, a continuación, llame a Set Container ACL con el conjunto completo de datos para realizar la actualización.

Habilitación del acceso público anónimo en los datos del contenedor

Para habilitar el acceso de lectura público anónimo para los datos del contenedor, llame a Set Container ACL con el encabezado x-ms-blob-public-access establecido en container o blob. Para deshabilitar el acceso anónimo, llame a Set Container ACL sin especificar el encabezado x-ms-blob-public-access.

Si establece x-ms-blob-public-access en blob, los clientes pueden llamar a las operaciones siguientes de manera anónima:

Si establece x-ms-blob-public-access en container, los clientes pueden llamar a las operaciones siguientes de manera anónima:

Establecimiento de directivas de acceso de nivel de contenedor

Una directiva de acceso almacenada puede especificar la hora de inicio, la hora de expiración y los permisos para las firmas de acceso compartido con las que está asociada. En función de cómo quiera controlar el acceso al recurso de contenedor o blob, puede especificar todos estos parámetros dentro de la directiva de acceso almacenado y omitirlos desde la dirección URL de la firma de acceso compartido. Al hacerlo, puede modificar el comportamiento de la firma asociada en cualquier momento o revocarlo. O bien, puede especificar uno o varios parámetros de directiva de acceso dentro de la directiva de acceso almacenada y los demás en la dirección URL. Por último, puede especificar todos los parámetros en la dirección URL. En este caso, puede utilizar la directiva de acceso almacenada para revocar la firma, pero no para modificar su comportamiento. Para obtener más información, consulte Definición de una directiva de acceso almacenada.

Juntos, la firma de acceso compartido y la directiva de acceso almacenada deben incluir todos los campos necesarios para autorizar la firma. Si faltan campos obligatorios, se produce un error en la solicitud. Del mismo modo, si se especifica un campo tanto en la dirección URL de firma de acceso compartido como en la directiva de acceso almacenada, se produce un error en la solicitud con el código de estado 400 (solicitud incorrecta).

Como máximo, se pueden establecer cinco directivas de acceso independientes para un único contenedor en cualquier momento. Si se pasan más de cinco directivas de acceso en el cuerpo de la solicitud, el servicio devuelve el código de estado 400 (solicitud incorrecta).

Una firma de acceso compartido se puede emitir en un contenedor o en un blob independientemente de si los datos del contenedor está disponibles para el acceso de lectura anónimo. Una firma de acceso compartido proporciona un mayor grado de control sobre cómo, cuándo y quién puede acceder a un recurso.

Nota

Al establecer una directiva de acceso almacenada en un contenedor, la directiva puede tardar hasta 30 segundos en surtir efecto. Durante este intervalo, hasta que la directiva se active, se produce un error en una firma de acceso compartido asociada a la directiva de acceso almacenada con el código de estado 403 (Prohibido).

Facturación

Las solicitudes de precios pueden originarse en clientes que usan API de Blob Storage, ya sea directamente a través de la API REST de Blob Storage o desde una biblioteca cliente de Azure Storage. Estas solicitudes acumulan cargos por transacción. El tipo de transacción afecta a cómo se cobra la cuenta. Por ejemplo, las transacciones de lectura se acumulan en una categoría de facturación diferente a las transacciones de escritura. En la tabla siguiente se muestra la categoría de facturación de Set Container ACL las solicitudes basadas en el tipo de cuenta de almacenamiento:

Operación Tipo de cuenta de almacenamiento Categoría de facturación
Set Container ACL Blobs en bloques Premium
De uso general, estándar, v2
Otras operaciones
Set Container ACL De uso general, estándar, v1 Operaciones de escritura

Para obtener información sobre los precios de la categoría de facturación especificada, consulte precios Azure Blob Storage.

Consulte también

Restricción del acceso a contenedores y blobs
Delegar el acceso con una firma de acceso compartido
Creación y uso de una firma de acceso compartido
Definición de una directiva de acceso almacenada
Get Container ACL
Autorización de solicitudes a Azure Storage
Estado y códigos de error
Códigos de error de Blob Service