VENTAS: 1-800-867-1389

Construir el URI de la firma de acceso compartido

Actualizado: mayo de 2014

El URI de una firma de acceso compartido incluye componentes que especifican el recurso que se va a hacer accesible, el intervalo durante el cual la firma de acceso compartido es válida, los permisos asociados a la firma, un identificador de directiva de acceso opcional asociado a la solicitud y la firma propiamente dicha. En la ilustración siguiente se representan las partes del URI de firma de acceso compartido. Los elementos necesarios aparecen en color naranja. Las partes del URI se describen en las secciones posteriores.

Elementos de parámetros de una dirección URL de firma de acceso compartido (SAS)

El campo signedversion contiene la versión del servicio de la firma de acceso compartido. Este valor especifica la versión de autenticación de acceso compartido que esta firma de acceso compartido utiliza (en el campo signature) y también especifica la versión del servicio de las solicitudes realizadas con esta firma de acceso compartido. Consulta Versiones de los servicios Blob, Cola y Tabla de Windows Azure y Servicios de almacenamiento de Azure, versiones 2013-08-15 y anteriores para obtener información sobre qué versión se usa al ejecutar solicitudes mediante una firma de acceso compartido. Consulta Delegar el acceso con una firma de acceso compartido para saber cómo afecta este parámetro a la autenticación de las solicitudes realizadas con una firma de acceso compartido.

 

Nombre de campo Parámetro de consulta Descripción

signedversion

sv

Requerido y solo se permite en las versiones 2012-02-12 y posteriores. La versión del servicio de almacenamiento que se va a usar para autenticar solicitudes realizadas con esta firma de acceso compartido y la versión del servicio que se va a usar cuando se controlan solicitudes realizadas con esta firma de acceso compartido. Consulta Versiones de los servicios Blob, Cola y Tabla de Windows Azure y Servicios de almacenamiento de Azure, versiones 2013-08-15 y anteriores para obtener información sobre qué versión se usa al ejecutar solicitudes mediante una firma de acceso compartido y cómo los clientes que ejecutan la solicitud pueden controlar la versión mediante el parámetro de consulta api-version o el encabezado x-ms-version.

En escenarios heredados en los que no se utiliza signedversion, el servicio Blob aplica ciertas reglas para determinar la versión. Vea Versiones de los servicios Blob, Cola y Tabla de Windows Azure para obtener más información acerca de estas reglas.

ImportantImportante
El software cliente puede experimentar un comportamiento de protocolo inesperado cuando se utiliza un URI de firma de acceso compartido que usa una versión del servicio de almacenamiento más reciente que el software cliente. El código que crea los URI de firma de acceso compartido debe utilizar versiones que el software cliente que realiza solicitudes de servicio de almacenamiento pueda entender.

El campo signedresource especifica qué recursos son accesibles a través de la firma de acceso compartido. En la tabla siguiente se describe cómo hacer referencia a un recurso de blob o contenedor en el URI.

 

Nombre de campo Parámetro de consulta Descripción

signedresource

sr

Obligatorio.

Especifique b si el recurso compartido es un blob. Esto concede acceso al contenido y los metadatos del blob.

Especifique c si el recurso compartido es un contenedor. Esto concede acceso al contenido y los metadatos de cualquier blob del contenedor, y a la lista de blobs del contenedor.

Para definir los valores de ciertos encabezados de respuesta que se van a devolver cuando se utiliza la firma de acceso compartido en una solicitud, puede especificar encabezados de respuesta en los parámetros de consulta. Esta característica se admite a partir de la versión 2013-08-15; las firmas de acceso compartido que utilizan esta característica deben incluir el parámetro sv establecido en 2013-08-15.

Los encabezados de respuesta y los parámetros de consulta correspondientes son los siguientes:

 

Nombre del encabezado de respuesta Parámetro de consulta de SAS correspondiente

Cache-Control

rscc

Content-Disposition

rscd

Content-Encoding

rsce

Content-Language

rscl

Content-Type

rsct

Por ejemplo, si especifica el parámetro de consulta rsct=binary en una firma de acceso compartido creada con la versión 2013-08-15, el encabezado de respuesta Content-Type se establece en binary. Este valor reemplaza el valor del encabezado Content-Type almacenado para el blob para una solicitud que usa esta firma de acceso compartido solamente.

Tenga en cuenta que si crea una firma de acceso compartido que especifica encabezados de respuesta como parámetros de consulta, debe incluirlos en el valor string-to-sign que se utiliza para crear la cadena de firma. Vea la sección sobre Construir la cadena de firma más adelante para obtener detalles y Ejemplos de firmas de acceso compartido para obtener ejemplos adicionales.

El campo tablename especifica el nombre de la tabla que se va a compartir.

 

Nombre de campo Parámetro de consulta Descripción

tablename

tn

Obligatorio. El objeto de la tabla que se va a compartir.

La parte de directiva de acceso del URI indica el período de tiempo durante el cual la firma de acceso compartido es válida y los permisos que se van a conceder al usuario. Las partes del URI que se describen en la tabla siguiente componen la directiva de acceso.

 

Nombre de campo Parámetro de consulta Descripción

signedstart

st

Opcional. Hora en que la firma de acceso compartido es válida, en formato ISO 8061. Si se omite, se supone que la hora de inicio de esta llamada es la hora a la que el servicio de almacenamiento recibe la solicitud.

En las versiones anteriores a 2012-02-12, la duración entre signedstart y signedexpiry no puede superar una hora a menos que se utilice una directiva de contenedor.

signedexpiry

se

Obligatorio. Hora en que la firma de acceso compartido deja de ser válida, en formato ISO 8061. Este campo se debe omitir si se ha especificado en una directiva de acceso almacenada asociada. Para obtener información detallada, vea Duración y revocación de una firma de acceso compartido.

signedpermissions

sp

Obligatorio. Permisos asociados a la firma de acceso compartido. El usuario está restringido a las operaciones permitidas por los permisos. Este campo se debe omitir si se ha especificado en una directiva de acceso almacenada asociada.

startpk

startrk

spk

srk

Solo el servicio Tabla.

Opcional, pero startpk debe acompañar a startrk. Claves mínimas de partición y fila accesibles con esta firma de acceso compartido. Los valores de clave son inclusivos. Si se omite, no hay ningún límite inferior en las entidades de tabla a las que se puede tener acceso.

endpk

endrk

epk

erk

Solo el servicio Tabla.

Opcional, pero endpk debe acompañar a endrk. Claves máximas de partición y fila accesibles con esta firma de acceso compartido. Los valores de clave son inclusivos. Si se omite, no hay ningún límite superior en las entidades de tabla a las que se puede tener acceso.

El campo signedpermissions es obligatorio en el URI a menos que se especifique como parte de una directiva de acceso almacenada. Los campos startpk, startrk, endpk y endrk solo se pueden especificar en un recurso de tabla.

Los campos signedstart y signedexpiry 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

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 y ss es la representación de dos dígitos de los segundos. Un designador de hora T separa las partes de fecha y de hora de la cadena, mientras que un designador de zona horaria TZD especifica una zona horaria.

Los permisos especificados en el URI de la firma de acceso compartido indican qué operaciones se permiten en el recurso compartido. En las tablas siguientes se muestran los permisos que admite cada tipo de recurso.

Permisos para un blob

 

Permiso Símbolo de URI Operaciones permitidas

Lectura

r

Leer el contenido, las propiedades, los metadatos y la lista de bloqueo. Utilizar el blob como origen de una operación de copia.

Escribir

w

Crear o escribir contenido, propiedades, metadatos o listas de bloqueo. Tomar una instantánea o conceder el blob. Cambiar el tamaño del blob (blob en páginas solamente). Utilizar el blob como destino de una operación de copia dentro de la misma cuenta.

Eliminar

d

Eliminar el blob.

Permisos para un contenedor

 

Permiso Símbolo de URI Operaciones permitidas

Lectura

r

Leer el contenido, las propiedades, los metadatos o la lista de bloqueo de cualquier blob del contenedor. Usar cualquier blob del contenedor como origen de una operación de copia.

Escribir

w

Para cualquier blob del contenedor, crear o escribir contenido, propiedades, metadatos o listas de bloqueo. Tomar una instantánea o conceder el blob. Cambiar el tamaño del blob (blob en páginas solamente). Utilizar el blob como destino de una operación de copia dentro de la misma cuenta.

noteNota
No puede conceder permisos para leer o escribir propiedades o metadatos del contenedor, ni para conceder un contenedor.

Eliminar

d

Eliminar cualquier blob del contenedor.

noteNota
No puede conceder permisos para eliminar un contenedor.

Lista

g

Mostrar los blobs del contenedor.

Permisos para una cola

 

Permiso Símbolo de URI Operaciones permitidas

Lectura

r

Leer metadatos y propiedades, incluidos el número de mensajes. Consultar mensajes.

Agregar

un

Agregar mensajes a la cola.

Actualizar

u

Actualizar mensajes en la cola.

noteNota
Utilice el permiso Procesar con Actualizar para que pueda obtener primero el mensaje que desea actualizar.

Procesar

p

Obtener y eliminar mensajes de la cola.

Permisos para una tabla

 

Permiso Símbolo de URI Operaciones permitidas

Query

r (de read, lectura)

Obtener y consultar entidades.

Agregar

un

Agregar entidades.

noteNota
Los permisos Agregar y Actualizar son necesarios para las operaciones upsert (actualización e inserción).

Actualizar

u

Actualizar entidades.

noteNota
Los permisos Agregar y Actualizar son necesarios para las operaciones upsert (actualización e inserción).

Eliminar

d

Eliminar entidades.

Especifique los permisos combinando los símbolos de URI en el campo signedpermissions del URI de SAS. Se pueden agrupar permisos para permitir que se realicen varias operaciones con la firma dada. Debe incluir los permisos en el orden en que aparecen en la tabla para el tipo de recurso. Por ejemplo, para conceder todos los permisos a un contenedor, el URI debe especificar sp=rwdl. Para conceder únicamente permisos de lectura y escritura, el URI debe especificar sp=rw.

Las firmas de acceso compartido no pueden conceder acceso a algunas operaciones:

  • Los contenedores, las colas y las tablas no se pueden crear, eliminar ni enumerar.

  • Los metadatos y las propiedades de los contenedores no se pueden leer o escribir.

  • Las colas no se pueden borrar y sus metadatos no se pueden escribir.

  • Los contenedores no se pueden conceder.

ImportantImportante
Los URI de la firma de acceso compartido son claves que conceden permisos para los recursos de almacenamiento y se deben proteger de la misma manera que una clave compartida. Las operaciones que utilizan URI de firma de acceso compartido deben realizarse únicamente sobre una conexión HTTPS y los URI de firma de acceso compartido solo se deben distribuir en una conexión segura como HTTPS.

Los campos startpk, startrk, endpk y endrk definen un intervalo de entidades de tabla asociadas a una firma de acceso compartido. Las consultas de tabla solo devolverán resultados que estén dentro del intervalo, y los intentos de utilizar la firma de acceso compartido para agregar, actualizar o eliminar entidades fuera de este intervalo producirán un error. Si startpk es igual a endpk, la firma de acceso compartido solo autoriza el acceso a entidades de una partición de la tabla. Si startpk es igual a endpk y startrk es igual a endrk, la firma de acceso compartido solo puede tener acceso a una entidad de una partición. Utilice la tabla siguiente para entender cómo estos campos restringen el acceso a las entidades de una tabla.

 

Campos presentes Ámbito de restricción

startpk

partitionKey >= startpk

endpk

partitionKey <= endpk

startpk, startrk

(partitionKey > startpk) || (partitionKey == startpk && rowKey >= startrk)

endpk, endrk

(partitionKey < endpk) || (partitionKey == endpk && rowKey <= endrk)

Al especificar el campo signedidentifier en el URI se relaciona la firma de acceso compartido dada con una directiva de acceso almacenada correspondiente. Una directiva de acceso almacenada proporciona una medida adicional de control sobre una o varias firmas de acceso compartido, incluida la posibilidad de revocar la firma si es necesario. Cada contenedor, cola o tabla puede tener hasta 5 directivas de acceso almacenadas.

En la tabla siguiente se describe cómo hacer referencia a un identificador firmado en el URI.

 

Nombre de campo Parámetro de consulta Descripción

signedidentifier

si

Opcional. Un valor único de 64 caracteres de longitud como máximo que se correlaciona con una directiva de acceso especificada para el contenedor, la cola o la tabla.

Una directiva de acceso almacenada incluye un identificador firmado, que es un valor de hasta 64 caracteres que es único dentro del recurso. El valor de este identificador firmado se puede especificar para el campo signedidentifier en el URI de la firma de acceso compartido. Al especificar un identificador firmado en el URI se asocia la firma a la directiva de acceso almacenada. Para establecer una directiva de acceso de nivel de contenedor mediante la API de REST, vea Delegar el acceso con una firma de acceso compartido.

Las firmas de acceso compartido conceden derechos de acceso a los usuarios para los recursos de la cuenta de almacenamiento. A la hora de planear el uso de una firma de acceso compartido, piense en la duración de la firma y si la aplicación puede necesitar revocar los derechos de acceso en determinadas circunstancias.

Una manera de administrar una firma de acceso compartido es controlar su duración estableciendo el campo signedexpiry de la directiva de acceso. Si desea seguir concediendo acceso al recurso a un cliente después de que transcurra la hora de expiración, debe emitir una nueva firma. Se recomienda usar una duración breve de la firma de acceso compartido. Antes de la versión 2012-02-12, una firma de acceso compartido no asociada a una directiva de acceso almacenada no podía tener un período activo superior a una hora.

Otra manera de administrar una firma de acceso compartido es asociar la firma a una directiva de acceso almacenada. La directiva de acceso almacenada se representa mediante el campo signedidentifier del URI. Una directiva de acceso almacenada proporciona una medida adicional de control sobre una o varias firmas de acceso compartido, incluida la posibilidad de revocar la firma si es necesario.

Para revocar una firma de acceso compartido que está vinculada a una directiva de acceso almacenada, puede quitar la directiva de acceso almacenada. Si el servicio de almacenamiento no encuentra la directiva de acceso almacenada especificada en la firma de acceso compartido, el cliente no podrá obtener acceso al recurso indicado por el URI.

Para revocar una firma de acceso compartido que no está vinculada a una directiva de acceso almacenada, debe cambiar la clave compartida de la cuenta de almacenamiento utilizada para crear la firma.

Las prácticas recomendadas recomiendan usar una firma de acceso compartido junto con un identificador firmado que haga referencia una directiva de acceso almacenada; o bien, si no se especifica ningún identificador firmado, que el intervalo durante el cual la firma es válida sea corto. Para obtener más información sobre cómo asociar una firma a una directiva de acceso almacenada, vea Usar una directiva de acceso almacenada.

noteNota
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 todos estos parámetros en el URI de la firma y ninguno en la directiva de acceso almacenada; todos en el contenedor y ninguno en el URI; o alguna combinación de ambos. Sin embargo, no puede especificar un parámetro determinado tanto en el URI de la firma como en la directiva de acceso almacenada. Vea Usar una directiva de acceso almacenada para obtener más información.

La parte de firma del URI se utiliza para autenticar la solicitud realizada con la firma de acceso compartido. El servicio Blob utiliza un esquema de autenticación de clave compartida para autenticar la firma de acceso compartido. En la tabla siguiente se describe cómo especificar la firma en el URI.

 

Nombre de campo Parámetro de consulta Descripción

signature

sig

String-to-sign es una cadena única que se construye a partir de los campos que se deben comprobar para autenticar la solicitud. La firma es un HMAC calculado sobre string-to-sign (la cadena para firmar) y una clave con el algoritmo SHA256, y después codificado con Base64.

Para construir la cadena de firma de una firma de acceso compartido, construya primero el valor string-to-sign a partir de los campos que componen la solicitud y codifique después la cadena como UTF-8 y calcule la firma mediante el algoritmo HMAC-SHA256. Tenga en cuenta que los campos incluidos en string-to-sign se deben descodificar como una dirección URL.

Versiones anteriores a 12.02.12

Para construir el valor string-to-sign de los recursos del servicio Blob para las versiones anteriores a 12.02.12, utilice el formato siguiente:

 StringToSign = signedpermissions + "\n"                signedstart + "\n"                signedexpiry + "\n"                canonicalizedresource + "\n"                signedidentifier 

Versión 12.02.12

Para construir el valor string-to-sign de los recursos del servicio Blob para la versión 2012-02-12, utilice el formato siguiente:

 StringToSign = signedpermissions + "\n"                signedstart + "\n"                signedexpiry + "\n"                canonicalizedresource + "\n"                signedidentifier + "\n"                signedversion

Versión 15.08.13

Para construir el valor string-to-sign de los recursos del servicio Blob usando la versión 2013-08-15 o posterior, utilice el formato siguiente:

StringToSign = signedpermissions + "\n"                signedstart + "\n"                signedexpiry + "\n"                canonicalizedresource + "\n"                signedidentifier + "\n"                signedversion + "\n"                rscc + "\n"                rscd + "\n"                rsce + "\n"                rscl + "\n"                rsct

Para construir el valor string-to-sign para una tabla, utilice el formato siguiente:

 TableStringToSign = StringToSign + "\n"                     startpk + "\n"                     startrk + "\n"                     endpk + "\n"                     endrk

Al construir la cadena que se va a firmar, tenga en cuenta lo siguiente:

  • Si un campo es opcional y no se proporciona como parte de la solicitud, especifique una cadena vacía para ese campo. No olvide incluir el carácter de nueva línea (\n) después de la cadena vacía.

  • El valor string-to-sign para una tabla debe incluir los parámetros adicionales, incluso aunque sean cadenas vacías.

  • La parte signedpermission de la cadena debe incluir las designaciones de permisos en un orden fijo que es específico de cada tipo de recurso. Cualquier combinación de estos permisos es aceptable, pero el orden de las letras de los permisos debe coincidir con el orden de la tabla siguiente.

     

    Tipo de recurso Orden de los permisos

    blob

    rwd

    contenedor

    rwdl

    cola

    raup

    tabla

    raud

    Por ejemplo, los valores de permisos válidos para un contenedor incluyen rw, rd, rl, wd, wl y rl. Algunos valores no válidos serían wr, dr, lr y dw. No se permite especificar una designación de permisos más de una vez.

  • La parte canonicalizedresouce de la cadena es una ruta de acceso canónica al recurso firmado. Debe incluir el nombre de la cuenta de almacenamiento y el nombre del recurso, y debe ser una dirección URL descodificada. Los nombres de los blobs deben incluir el contenedor del blob. Los nombres de tabla deben estar en minúsculas. En los ejemplos siguientes se muestra cómo construir la parte canonicalizedresource de la cadena.

    Si el recurso firmado es un contenedor:

    URL = https://myaccount.blob.core.windows.net/music canonicalizedresource = "/myaccount/music"
    
    Si el recurso firmado es un blob:

    URL = https://myaccount.blob.core.windows.net/music/intro.mp3 canonicalizedresource = "/myaccount/music/intro.mp3" 
    
    Si el recurso firmado es una cola:

    URL = https://myaccount.queue.core.windows.net/thumbnails canonicalizedresource = "/myaccount/thumbnails" 
    
    Si el recurso firmado es una tabla, asegúrese de que el nombre de tabla está en minúsculas en formato canónico:

    URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price') canonicalizedresource = "/myaccount/employees" 
    
  • Proporcione un valor para la parte signedidentifier de la cadena si va a asociar la solicitud a una directiva de acceso almacenada.

  • Una firma de acceso compartido que especifica una versión del servicio de almacenamiento anterior a 2012-02-12 solo puede compartir un blob o un contenedor, y debe omitir signedversion y la nueva línea delante de ella.

Vea también

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2015 Microsoft