Definición de una directiva de acceso almacenada
Una directiva de acceso almacenada proporciona un nivel adicional de control sobre las firmas de acceso compartido (SAS) de nivel de servicio en el lado servidor. Establecer una directiva de acceso almacenada para agrupar firmas de acceso compartido y proporcionar restricciones adicionales para firmas sujetas a la directiva.
Puede usar una directiva de acceso almacenada para cambiar la hora de inicio, la hora de expiración o los permisos para una firma. También puede usar una directiva de acceso almacenada para revocar una firma después de su emisión.
Los siguientes recursos de almacenamiento admiten directivas de acceso almacenadas:
- Contenedores de blobs
- Recursos compartidos de archivos
- Colas
- Tablas
Nota:
Una directiva de acceso almacenada en un contenedor se puede asociar a una firma de acceso compartido que conceda permisos al propio contenedor o a los blobs que contiene. De forma similar, una directiva de acceso almacenada en un recurso compartido de archivos se puede asociar a una firma de acceso compartido que conceda permisos al propio recurso compartido o a los archivos que contiene.
Las directivas de acceso almacenadas no son compatibles con la SAS de delegación de usuarios ni de cuenta.
Crear o modificar una directiva de acceso almacenada
La directiva de acceso para una firma de acceso compartido consiste en la hora de inicio, la hora de expiración y los permisos de la firma. Puede especificar cualquiera de las siguientes opciones o combinarlas:
- Todos estos parámetros en el URI de firma y ninguno en la directiva de acceso almacenada
- Todos estos parámetros en la directiva de acceso almacenada y ninguno en el URI
Sin embargo, no se puede especificar un parámetro en el token de SAS y en la directiva de acceso almacenada.
Para crear o modificar una directiva de acceso almacenada, llame a la operación Set ACL
para el recurso (consulte Set Container ACL, Set Queue ACL, Set Table ACL o Set Share ACL) con un cuerpo de solicitud que especifica los términos y condiciones de la directiva de acceso. El cuerpo de la solicitud incluye un identificador único firmado de su elección, de hasta 64 caracteres de longitud. El cuerpo de la solicitud también incluye parámetros opcionales de la directiva de acceso, como se indica a continuación:
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>unique-64-char-value</Id>
<AccessPolicy>
<Start>start-time</Start>
<Expiry>expiry-time</Expiry>
<Permission>abbreviated-permission-list</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
Puede establecer un máximo de cinco directivas de acceso en un contenedor, una tabla, una cola o un recurso compartido a la vez. Cada campo SignedIdentifier
, con su campo Id
único, corresponde a una directiva de acceso. Al intentar establecer más de cinco directivas de acceso al mismo tiempo, el servicio devuelve el código de estado 400 (solicitud incorrecta).
Nota
Al crear o actualizar una directiva de acceso almacenada en un contenedor, tabla, cola o recurso compartido, el cambio puede tardar hasta 30 segundos en surtir efecto. Durante este intervalo, las solicitudes en una firma de acceso compartido asociada a la directiva de acceso almacenada podrían producir un error con el código de estado 403 (Prohibido), hasta que la directiva de acceso se active.
No se pueden especificar restricciones de intervalo para las entidades de tabla (startpk
, startrk
, endpk
y endrk
) en una directiva de acceso almacenada.
Modificar o revocar una directiva de acceso almacenada
Para modificar los parámetros de una directiva de acceso almacenada, puede llamar a la operación de lista de control de acceso (ACL) para que el tipo de recurso reemplace la directiva existente. En esa operación, especifique una nueva hora de inicio, una hora de expiración o un conjunto de permisos.
Por ejemplo, si la directiva existente concede permisos de lectura y escritura a un recurso, puede modificarla para conceder únicamente permisos de lectura para todas las solicitudes futuras. En este caso, el identificador firmado de la nueva directiva, tal como se especifica en el ID
campo, sería idéntico al identificador firmado de la directiva que va a reemplazar.
Para revocar una directiva de acceso almacenada, puede eliminarla, cambiar el identificador firmado para cambiarle el nombre, o bien cambiar la hora de expiración a un valor en el pasado. Al cambiar el identificador firmado se interrumpen las asociaciones entre las firmas existentes y la directiva de acceso almacenada. El cambio de la hora de expiración a un valor en el pasado hace que las firmas asociadas expiren. La eliminación o modificación de la directiva de acceso almacenada afecta inmediatamente a todas las firmas de acceso compartido asociadas a ella.
Para quitar una única directiva de acceso, llame a la operación del Set ACL
recurso. Pase el conjunto de identificadores firmados que desea mantener en el contenedor. A fin de quitar todas las directivas de acceso del recurso, llame a la operación Set ACL
con un cuerpo de solicitud vacío.