Establecimiento de la ACL del contenedor
La operación Set Container ACL
establece los permisos para el contenedor especificado. Los permisos indican si se puede acceder a los blobs de un contenedor públicamente.
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 de contenedor y blob se pueden leer a través de 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.
no hay acceso de lectura público: solo el propietario de la cuenta puede leer datos de contenedor y blob.
Set Container ACL
también establece una directiva de acceso almacenada para su uso con firmas de acceso compartido. Para obtener más información, vea Definir una directiva de acceso almacenada.
Todo el acceso público al contenedor es anónimo, al igual que el acceso a través de una firma de acceso compartido.
Pedir
La solicitud de Set Container ACL
se puede construir de la siguiente manera. Se recomienda usar HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento:
Método | URI de solicitud | Versión HTTP |
---|---|---|
PUT |
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl |
HTTP/1.1 |
Solicitud de servicio de almacenamiento emulado
Al realizar una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto de Blob service como 127.0.0.1:10000
, seguido del nombre de la cuenta de almacenamiento emulada:
Método | URI de solicitud | Versión 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 el desarrollo local de Azure Storage.
Parámetros de 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 obtener más información, consulte Establecer 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 |
Obligatorio. Especifica el esquema de autorización, el nombre de la cuenta y la firma. Para más información, consulte Autorizar solicitudes a Azure Storage. |
Date o x-ms-date |
Obligatorio. Especifica la hora universal coordinada (UTC) de la solicitud. Para más información, consulte Autorizar solicitudes a Azure Storage. |
x-ms-version |
Opcional. Especifica la versión de la operación que se va a usar para esta solicitud. Para más información, consulte Control de versiones de para los servicios de Azure Storage. |
x-ms-blob-public-access |
Opcional. Especifica si se puede acceder a los datos del contenedor públicamente y el nivel de acceso. Entre los valores posibles se incluyen: - 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 los 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 más información, consulte Monitor Azure Blob Storage. |
Esta operación también admite el uso de encabezados condicionales para ejecutar la operación solo si se cumple una condición especificada. Para obtener más información, consulte Especificar encabezados condicionales para las operaciones de Blob service.
Cuerpo de la solicitud
Para especificar una directiva de acceso almacenada, proporcione un identificador único y una directiva de acceso en el cuerpo de la solicitud para la operación de 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 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 año de cuatro dígitos, MM
es una representación mensual de dos dígitos y DD
es una representación de día de dos dígitos. Para la parte de tiempo, hh
es la representación de hora en notación de 24 horas, mm
es la representación de minuto de dos dígitos, ss
es la representación de segundo dígitos y fffffff
es la representación de siete dígitos milisegundos. Un designador de hora T
separa las partes de fecha y hora de la cadena, y un designador de zona horaria TZD
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>
Respuesta
La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.
Código de estado
Una operación correcta devuelve el código de estado 200 (Correcto).
Para obtener más información sobre los códigos de estado, vea Códigos de estado y de error.
Encabezados de respuesta
La respuesta de esta operación incluye los siguientes encabezados. La respuesta también puede incluir encabezados HTTP estándar adicionales. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1 de .
Encabezado de respuesta | Descripción |
---|---|
ETag |
ETag del contenedor. Si la versión de la solicitud es 2011-08-18 o posterior, el valor de ETag se incluye entre comillas. |
Last-Modified |
Devuelve la fecha y hora en que se modificó por última vez el contenedor. El formato de fecha sigue a 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 última modificación, incluida la configuración 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 realizada y se puede usar para solucionar problemas de la solicitud. Para obtener 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 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 encabezado x-ms-client-request-id si está presente en la solicitud y el valor no contiene más de 1024 caracteres ASCII visibles. Si el encabezado x-ms-client-request-id no está presente en la solicitud, no estará presente en la respuesta. |
Respuesta de ejemplo
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
Autorización
Se requiere autorización al llamar a cualquier operación de acceso a datos en Azure Storage. Puede autorizar la operación de Set Container ACL
como se describe a continuación.
Importante
Microsoft recomienda usar el identificador de Entra de Microsoft con identidades administradas para autorizar solicitudes a Azure Storage. Microsoft Entra ID proporciona seguridad y facilidad de uso superiores en comparación con la autorización de clave compartida.
Azure Storage admite el uso de Microsoft Entra ID para autorizar solicitudes a datos de blobs. Con microsoft Entra ID, puede usar el control de acceso basado en rol de Azure (RBAC de Azure) para conceder permisos a una entidad de seguridad. La entidad de seguridad puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada de Azure. Microsoft Entra ID autentica la entidad de seguridad para devolver un token de OAuth 2.0. Después, el token se puede usar para autorizar una solicitud en Blob service.
Para obtener más información sobre la autorización mediante el identificador de Entra de Microsoft, consulte Autorizar el acceso a blobs mediante el identificador de Microsoft Entra.
Permisos
A continuación se enumeran las acciones de RBAC necesarias para que un usuario, grupo, identidad administrada o entidad de servicio de Microsoft Entra llame a la operación de Set Container ACL
y el rol RBAC integrado con privilegios mínimos que incluye esta acción:
- acción RBAC de Azure:Microsoft.Storage/storageAccounts/blobServices/containers/setAcl/action
- rol integrado con privilegios mínimos:propietario de datos de blobs de almacenamiento
Para más información sobre cómo asignar roles mediante Azure RBAC, consulte Asignación de un rol de Azure para el acceso a datos de blobs.
Observaciones
Al establecer permisos para un contenedor, se reemplazan los permisos existentes. 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.
Habilitar el acceso público anónimo en de datos de contenedor
Para habilitar el acceso de lectura público anónimo en 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 siguientes operaciones de forma anónima:
Obtener lista de bloqueos (solo para la lista de bloqueados confirmada)
Si establece x-ms-blob-public-access
en container
, los clientes pueden llamar a las siguientes operaciones de forma anónima:
Las operaciones de acceso a blobs que aparecen en la sección anterior.
Establecer 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 almacenada y omitirlos de 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 usar la directiva de acceso almacenada para revocar la firma, pero no para modificar su comportamiento. Para obtener más información, vea Definir 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 en la dirección URL de la firma de acceso compartido y 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).
Se puede emitir una firma de acceso compartido en un contenedor o en un blob, independientemente de si los datos del contenedor están disponibles para el acceso de lectura anónimo. Una firma de acceso compartido proporciona una medida mayor de control sobre cómo, cuándo y a quién se hace accesible 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 las solicitudes de Set Container ACL
en función del tipo de cuenta de almacenamiento:
Operación | Tipo de cuenta de almacenamiento | Categoría de facturación |
---|---|---|
Establecimiento de la ACL del contenedor | Blob en bloques Premium Uso general estándar v2 |
Otras operaciones |
Establecimiento de la ACL del contenedor | 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 de Azure Blob Storage.
Consulte también
Restringir el acceso a contenedores y blobs
Delegar acceso con una firma de acceso compartido
Crear y usar una firma de acceso compartido
Definir una directiva de acceso almacenada
obtener de ACL de contenedor
Autorizar solicitudes a Azure Storage
códigos de error y estado
códigos de error de Blob service