Exploración de directivas de acceso almacenadas
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 agrupa las firmas de acceso compartido y proporciona más restricciones para las 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 de una firma, o para revocarla después de que se emita.
Los siguientes recursos de almacenamiento admiten directivas de acceso almacenadas:
- Contenedores de blob
- Comparticiones de archivos
- Colas
- Tablas
Creación de una directiva de acceso almacenada
La directiva de acceso para una SAS consiste en la hora de inicio, la hora de expiración y los permisos de la firma. Puede especificar todos estos parámetros en el URI de firma y ninguno dentro de la directiva de acceso almacenada; todo en la directiva de acceso almacenada y ninguno en el URI; o alguna combinación de los dos. Sin embargo, no se puede especificar un parámetro determinado 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 de 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 especifique los términos de la directiva de acceso. El cuerpo de la solicitud incluye un identificador firmado único de su elección, hasta 64 caracteres de longitud y los parámetros opcionales de la directiva de acceso, como se indica a continuación:
Nota
Al establecer una directiva de acceso almacenada en un contenedor, una tabla, una cola o un recurso compartido, puede tardar hasta 30 segundos en surtir efecto. Durante este tiempo, las solicitudes contra una SAS asociada a la directiva de acceso almacenada pueden producir un error con el código de estado 403 (Prohibido), hasta que la directiva de acceso se active. Las restricciones de intervalo de entidades de tabla (startpk, startrk, endpky endrk) no se pueden especificar en una directiva de acceso almacenada.
A continuación se muestran ejemplos de creación de una directiva de acceso almacenada mediante C# .NET y la CLI de Azure.
BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
Id = "stored access policy identifier",
AccessPolicy = new BlobAccessPolicy
{
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
Permissions = "rw"
}
};
blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
az storage container policy create \
--name <stored access policy identifier> \
--container-name <container name> \
--start <start time UTC datetime> \
--expiry <expiry time UTC datetime> \
--permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
--account-key <storage account key> \
--account-name <storage account name> \
Modificación o revocación de una directiva de acceso almacenada
Para modificar los parámetros de la directiva de acceso almacenada, puede llamar a la operación de lista de control de acceso para que el tipo de recurso reemplace la directiva existente. Por ejemplo, si la directiva existente concede permisos de lectura y escritura a un recurso, puede modificarlo para conceder solo permisos de lectura para todas las solicitudes futuras.
Para revocar una directiva de acceso almacenada, puede eliminarla, cambiar su nombre cambiando el identificador firmado o cambiando 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 SAS asociadas a ella.
Para quitar una sola directiva de acceso, realice la operación Set ACL en el recurso y pase el conjunto de identificadores firmados que desea conservar en el contenedor. Para quitar todas las directivas de acceso del recurso, llame a la operación Set ACL con un cuerpo de solicitud vacío.