URL firmadas

En esta página, se proporciona una descripción general de las URL firmadas, que usas para otorgar acceso a recursos por tiempo limitado a cualquier persona que posea la URL, sin importar si tiene una Cuenta de Google. Para obtener información sobre cómo crear una URL firmada, consulta el proceso de firma de V4 con las herramientas de Cloud Storage y el proceso de firma de V4 con tu propio programa. Para obtener más información sobre otras maneras de controlar el acceso a los depósitos y objetos, consulta la descripción general de control de acceso.

Descripción general

Una URL firmada es una URL que proporciona permisos y tiempo limitados para realizar una solicitud. Las URL firmadas contienen información de autenticación en tu string de consulta, lo que permite a los usuarios sin credenciales realizar acciones específicas en un recurso. Cuando generas una URL firmada, especificas un usuario o una cuenta de servicio que debe tener el permiso suficiente para realizar la solicitud que realizará la URL firmada. Después de generar una URL firmada, cualquier persona que la posea puede usarla para realizar acciones específicas, como leer un objeto, dentro de un período específico.

¿Cuándo debes usar una URL firmada?

En algunas situaciones, es posible que no desees solicitarles a tus usuarios una Cuenta de Google para acceder a Cloud Storage, pero deseas controlar el acceso mediante la lógica específica de tu aplicación. La forma típica de abordar este caso práctico es proporcionar una URL firmada a un usuario, que le otorga acceso de lectura, escritura o eliminación a ese recurso por un tiempo limitado. Debes especificar una hora de vencimiento cuando creas la URL firmada. Cualquier usuario que conozca la URL puede acceder al recurso hasta que se alcance la fecha de vencimiento de la URL o se cambie la clave usada para firmar la URL.

Opciones para generar una URL firmada

Cloud Storage admite varios métodos para generar una URL firmada:

  • Firma V4 con autenticación de cuenta de servicio: este mecanismo de firma se describe a continuación.

  • Firma V2 con autenticación de cuenta de servicio: obtén más información sobre este mecanismo de firma aquí.

  • Firma con autenticación de HMAC: si eres usuario de Amazon Simple Storage Service (Amazon S3), puedes usar tus flujos de trabajo existentes a fin de generar URL firmadas para Cloud Storage. Solo especifica los recursos de Cloud Storage, señala el host storage.googleapis.com y usa las credenciales de HMAC de Google en el proceso de generar la URL firmada.

Ejemplo de URL firmada

El siguiente es un ejemplo de una URL firmada que se creó después del proceso de firma de V4 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-central-1%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 proporcionó acceso para leer el objeto cat.jpeg en el depósito example-bucket. Los parámetros de búsqueda que la convierten en una URL firmada son los siguientes:

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

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

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

  • X-Goog-Expires: la cantidad de tiempo que la URL firmada siguió siendo válida, medida en segundos a partir del valor en X-Goog-Date. En este ejemplo, la URL firmada caduca en 15 minutos. El valor de vencimiento más largo es 604800 segundos (7 días)

  • X-Goog-SignedHeaders: encabezados que debían incluirse como parte de cualquier solicitud que utilizara la URL firmada

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

Usa URL firmadas con cargas reanudables

Cuando usas URL firmadas con cargas reanudables para subir objetos a tu depósito, solo debes usar la URL firmada en el URI de la solicitud POST inicial. No se suben datos en la solicitud POST. En cambio, la solicitud muestra un URI de sesión que se usa en las solicitudes PUT posteriores para subir datos. Dado que el URI de sesión es, en efecto, un token de autenticación, las solicitudes PUT no necesitan utilizar la URL firmada original. Este comportamiento permite que el servidor realice la solicitud POST y evita la necesidad de que los clientes tengan que lidiar con las URL firmadas ellos mismos.

Las cargas reanudables se fijan en la región en la que comienzan. Por ejemplo, si creas una URL de carga reanudable en EE.UU. y se la entregas a un cliente en Asia, la carga se realizará en EE.UU. Si se realiza una carga reanudable en una región donde no se inició, es posible que se suban videos de forma lenta. Para evitar esto, haz que el servidor construya y firme la solicitud inicial POST, pero luego entrega la URL firmada al cliente para que la carga se inicie desde su ubicación. Después del inicio, el cliente puede usar el URI de sesión resultante de forma normal para realizar solicitudes PUT que no necesitan firmarse.

Consideraciones de URL firmadas

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

  • Las URL firmadas generalmente se pueden realizar para cualquier solicitud a la API de XML; sin embargo, las bibliotecas cliente de Cloud Storage de Node.js actualmente solo pueden crear URL firmadas para objetos individuales. Por ejemplo, no se pueden usar para crear URL firmadas a fin de enumerar objetos en un depósito.

  • Cuando especificas las credenciales, se recomienda que identifiques tu cuenta de servicio mediante su dirección de correo electrónico. Sin embargo, también se admite el uso del ID de la cuenta de servicio.

Solicitudes canónicas

Las URL firmadas usan solicitudes canónicas como parte de la información codificada en su parámetro de string de consulta X-Goog-Signature. Cuando creas una URL firmada con las herramientas de Cloud Storage, la solicitud canónica requerida se crea y, luego, incorpora automáticamente. Sin embargo, cuando creas una URL firmada con tu propio programa, debes definir la solicitud canónica tú mismo.

Permiso de la credencial

El alcance de la credencial aparece en la string que se debe firmar y en el parámetro de string de consulta X-Goog-Credential.

Firma strings con signBlob de IAM

Cuando generas una URL firmada mediante un programa, una opción para firmar la string es usar el método signBlob de IAM que proporciona Google Cloud. La Signature que se obtiene de este método se usa cuando ensamblas la URL firmada.

El servicio signBlob rota con regularidad la clave privada que usa. Las URL firmadas se pueden usar durante al menos 12 horas, pero pueden dejar de funcionar antes de la fecha y hora de vencimiento que configuraste si ese período es superior a 12 horas. Debido a esto, las URL firmadas generadas a partir de signBlob se usan mejor para el acceso a los recursos de corta duración.

Próximos pasos