URL firmadas

En esta página se ofrece una descripción general de las URLs firmadas, que usan firmas para dar acceso por tiempo limitado a un recurso específico de Cloud Storage. Cualquier persona que tenga la URL firmada puede usarla mientras esté activa, independientemente de si tiene una cuenta válida. Para saber cómo crear una URL firmada, consulta Proceso de firma V4 con herramientas de Cloud Storage y Proceso de firma V4 con tu propio programa. Para obtener información sobre otras formas de controlar el acceso a los segmentos y objetos, consulta Descripción general del control de acceso.

Información general

Una URL firmada es una URL que proporciona permiso y tiempo limitados para hacer una solicitud. Las URLs firmadas contienen información de autenticación, incluida una firma, en su cadena de consulta, lo que permite a los usuarios sin credenciales realizar acciones específicas en un recurso.

  • Cuando generas una URL firmada, debes especificar una cuenta que tenga permisos suficientes para hacer la solicitud que hará la URL firmada.

    • En la mayoría de los casos, la cuenta es una cuenta de servicio.

    • En los casos en los que creas tu propio programa para generar URLs firmadas, puedes usar una cuenta de usuario si tiene una clave HMAC asociada.

Una vez que haya generado una URL firmada, cualquier persona que la tenga podrá usarla para realizar acciones específicas, como leer un objeto, durante un periodo determinado.

¿Cuándo debes usar una URL firmada?

En algunos casos, es posible que no quieras que tus usuarios tengan su propia cuenta para acceder a Cloud Storage, pero sí quieras controlar el acceso mediante la lógica específica de tu aplicación. La forma habitual de abordar este caso práctico es proporcionar una URL firmada a un usuario, lo que le da acceso de lectura, escritura o eliminación a ese recurso durante un tiempo limitado. Cuando creas la URL firmada, especificas un tiempo de vencimiento. Cualquier persona que conozca la URL puede acceder al recurso hasta que se alcance la hora de vencimiento de la URL o se rote la clave usada para firmar la URL.

Los usos más habituales de las URLs firmadas son las subidas y descargas, ya que en estas solicitudes los datos de los objetos se transfieren entre los solicitantes y Cloud Storage. En la mayoría de los demás casos, como copiar, componer o eliminar objetos, o editar metadatos, crear una URL firmada y dársela a alguien para que la use es un paso adicional innecesario. En su lugar, deberías plantearte un diseño en el que la entidad responsable de crear la URL firmada realice directamente la solicitud deseada a Cloud Storage.

Ejemplo de URL firmada

A continuación, se muestra un ejemplo de una URL firmada que se ha creado siguiendo el proceso de firma de la versión 4 con autenticación de cuenta de servicio:

https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com
%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
2ea7abedc098d2eb14a7

Esta URL firmada proporcionaba acceso de lectura al objeto cat.jpeg del segmento example-bucket. Los parámetros de consulta que hacen que sea una URL firmada son los siguientes:

  • X-Goog-Algorithm: algoritmo usado para firmar la URL.

  • X-Goog-Credential: información sobre las credenciales usadas para crear la URL firmada.

  • X-Goog-Date: fecha y hora en las que la URL firmada se puede usar, en el formato básico ISO 8601 YYYYMMDD'T'HHMMSS'Z'.

  • X-Goog-Expires: periodo durante el que la URL firmada ha sido válida, medido en segundos a partir del valor de X-Goog-Date. En este ejemplo, la URL firmada caduca en 15 minutos. El valor de caducidad más largo es de 604.800 segundos (7 días).

  • X-Goog-SignedHeaders: encabezados que se debían incluir en cualquier solicitud que usara la URL firmada.

  • X-Goog-Signature: cadena de autenticación que permite que las solicitudes que usan esta URL firmada accedan a cat.jpeg.

Usar URLs firmadas con subidas reanudables

Por lo general, no es necesario crear URLs firmadas para las subidas reanudables, ya que, después de la solicitud para iniciar la subida, las solicitudes posteriores PUT para subir los datos del objeto utilizan un URI de sesión, que actúa como token de autenticación. Esto significa que las solicitudes de PUT no usan ninguna URL firmada.

Aunque puedes crear y usar una URL firmada para la solicitud POST inicial para iniciar la subida, en la mayoría de los casos, el servidor puede iniciar la subida reanudable. A continuación, el servidor envía el URI de la sesión al cliente para realizar la subida. De esta forma, se evita la complejidad de que el servidor cree una URL firmada, así como la de que el cliente gestione la URL firmada e inicie la subida reanudable.

Al igual que las URLs firmadas, cualquier persona que tenga un URI de sesión puede usarlo para subir datos. Asegúrate de transmitir el URI de sesión a través de HTTPS cuando se lo proporciones a un cliente.

Consideraciones sobre las URLs firmadas

Cuando trabajes con URLs firmadas, ten en cuenta lo siguiente:

  • Las URLs firmadas solo se pueden usar para acceder a recursos de Cloud Storage a través de endpoints de la API XML.

  • Cuando especifiques las credenciales, te recomendamos que identifiques tu cuenta de servicio mediante su dirección de correo electrónico. Sin embargo, también se puede usar el ID de la cuenta de servicio.

Solicitudes canónicas

Las URLs firmadas usan solicitudes canónicas como parte de la información codificada en su parámetro de cadena de consulta X-Goog-Signature. Cuando crea una URL firmada con las herramientas de Cloud Storage, se crea y se incorpora automáticamente la solicitud canónica necesaria. Sin embargo, cuando crees una URL firmada con tu propio programa, tendrás que definir la solicitud canónica y usarla para crear una firma.

Ámbito de las credenciales

El ámbito de la credencial aparece tanto en la cadena que se va a firmar como en el parámetro de cadena de consulta X-Goog-Credential.

Siguientes pasos