En esta página, se describe un algoritmo para implementar el proceso de firma V4 a fin de que puedas crear URL firmadas con clave RSA de Cloud Storage en tu propio flujo de trabajo con el lenguaje de programación que elijas.
Antes de comenzar
Antes de crear un programa que implemente el proceso de firma V4, debes completar los siguientes pasos:
Crea una cuenta de servicio. Si ya tienes una, puedes omitir este paso. Para obtener más información sobre las cuentas de servicio, consulta Descripción general de las cuentas de servicio.
Otorga suficientes permisos a la cuenta de servicio para que pueda llevar a cabo la solicitud que realizará la URL firmada.
Por ejemplo, si la URL firmada permitirá que un usuario lea datos de objetos, la cuenta de servicio debe tener permiso para leer los datos del objeto.
Si el algoritmo de firma que deseas usar no está integrado en Google Cloud, genera una clave privada nueva o usa una clave privada existente para la cuenta de servicio. La clave puede estar en formato JSON o PKCS12.
Algoritmo para firmar URL
En el programa, se deben incluir los siguientes pasos:
Crea la solicitud canónica como una string. La solicitud canónica define los elementos que los usuarios deben incluir en su solicitud cuando usan tu URL firmada.
Consulta Solicitudes canónicas para obtener detalles sobre las piezas y el formato necesarios.
Construir la string para firmar. La string para firmar es la base de la creación de una firma y en ella se incluye el valor de hash codificado en hexadecimal de la solicitud canónica.
Consulta Firmas a fin de obtener detalles sobre el formato de la string para firmar.
Usa una firma RSA con SHA-256 en la string para firmar. El resultado de esta firma es tu firma de solicitud. Existen varias opciones para firmar:
Puedes usar el método
signBlob
de IAM que proporciona Google Cloud. Para usar este método, debes habilitar la API de credenciales de la cuenta de servicio.Puedes usar un lenguaje de programación que tenga una biblioteca para realizar firmas RSA.
Construye la URL firmada con la siguiente concatenación:
HOSTNAME + PATH_TO_RESOURCE + "?" + CANONICAL_QUERY_STRING + "&X-Goog-Signature=" + REQUEST_SIGNATURE
La URL firmada tiene los siguientes componentes:
HOSTNAME: Debe ser
https://storage.googleapis.com
.PATH_TO_RESOURCE: Debe coincidir con el valor que usaste para construir la solicitud canónica.
CANONICAL_QUERY_STRING: Debe coincidir con los valores que usaste para construir la solicitud canónica.
REQUEST_SIGNATURE: Es el resultado del uso de una firma RSA en el paso anterior.
A continuación, se muestra un ejemplo de una URL completada:
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%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T211942Z&X-Goog -expires=3600&X-Goog-Signedheaders=host&X-Goog-Signature=2d2a6f5055eb004b8690b 9479883292ae7450cdc15f17d7f99bc49b916f9e7429106ed7e5858ae6b4ab0bbbdb1a8ccc364d ad3a0da2caebd30887a70c5b2569d089ceb8afbde3eed4dff5086f0db5483998c175980991fe89 9fbd2cd8cb813b00165e8d56e0a8aa7b3d7a12ee1baa8400611040f05b50a1a8eab5ba223fe137 5747748de950ec7a4dc50f8382a6ffd4994ac42498d7daa703d9a414d4475154d0e7edaa92d4f2 507d92c1f7e8efa7cab64df68b5df48575b9259d8d0bdb5dc752bdf07bd162d98ff2924f2e4a26 fa6b3cede73ad5333c47d146a21c2ab2d97115986a12c68ff37346d6c2ca83e56b8ec8ad956327 10b489b75c35697d781c38e
Programa de muestra de Python
Puedes usar las bibliotecas cliente de Cloud Storage a fin de crear URL firmadas para muchos lenguajes de programación comunes. Consulta la página Proceso de firma V4 con herramientas de Cloud Storage para ver algunos ejemplos.
En el siguiente ejemplo, se muestra una implementación del algoritmo para firmar URL que no usa las bibliotecas cliente de Cloud Storage. La muestra usa el lenguaje de programación Python, pero se puede adaptar al lenguaje que elijas.
¿Qué sigue?
- Obtén información sobre cómo firmar las URL con las herramientas de Cloud Storage, como las bibliotecas cliente o Google Cloud CLI.
- Obtén más información sobre las URL firmadas.
- Obtén información sobre las solicitudes canónicas, que respaldan las URL firmadas.