View a markdown version of this page

Autenticación de solicitudes (AWS Signature Version 4) - Amazon Simple Storage Service

Autenticación de solicitudes (AWS Signature Version 4)

Toda interacción con Amazon S3 es o autenticada o anónima. En esta sección, se explica la autenticación de solicitudes con el algoritmo de AWS Signature Version 4.

nota

Si utiliza los AWS SDK (consulte Bibliotecas y código de ejemplo) para enviar las solicitudes, no necesita leer esta sección porque los clientes del SDK autentican las solicitudes mediante las claves de acceso que proporciona. A menos que tenga una buena razón para no hacerlo, debería usar siempre los AWS SDK. En las regiones que admiten ambas versiones de firma, puede solicitar que los AWS SDK usen una versión de firma específica. Para obtener más información, consulte Envío de solicitudes autenticadas mediante los SDK de AWS. Debe leer esta sección solo si está implementando el algoritmo de AWS Signature Version 4 en el cliente personalizado.

La autenticación con AWS Signature Version 4 proporciona algunos o todos los elementos siguientes, según la forma en que elija firmar la solicitud:

  • Verificación de la identidad del solicitante: las solicitudes autenticadas requieren una firma que se crea con las claves de acceso (ID de clave de acceso, clave de acceso secreta). Para obtener información acerca de cómo obtener las claves de acceso, consulte Descripción y obtención de las credenciales de seguridad en Referencia general de AWS. Si utiliza credenciales de seguridad temporales, los cálculos de la firma también requieren un token de seguridad. Para obtener más información, consulte Solicitud de credenciales de seguridad temporales en la Guía del usuario de IAM.

  • Protección de datos en tránsito: para evitar la manipulación de una solicitud mientras está en tránsito, se utilizan algunos de los elementos de la solicitud para calcular la firma de la solicitud. Al recibir la solicitud, Amazon S3 calcula la firma con los mismos elementos de la solicitud. Si algún componente de la solicitud recibido por Amazon S3 no coincide con el componente que se utilizó para calcular la firma, Amazon S3 rechazará la solicitud.

  • Protección frente a la reutilización de las partes firmadas de la solicitud: las partes firmadas (mediante AWS Signatures) de las solicitudes son válidas en un plazo de 15 minutos a partir de la marca temporal de la solicitud. Una parte no autorizada que tenga acceso a una solicitud firmada puede modificar las partes no firmadas de la solicitud sin que ello afecte a la validez de la solicitud en un plazo de 15 minutos. Por ello, recomendamos que se maximice la protección firmando los encabezados y el cuerpo de las solicitudes, realizando solicitudes HTTPS a Amazon S3 y utilizando la clave de condición s3:x-amz-content-sha256 (consulte Claves de política específica de autenticación de Signature Version 4 de Amazon S3) en las políticas de AWS para exigir a los usuarios que firmen los cuerpos de las solicitudes de Amazon S3.

nota

Amazon S3 admite Signature Version 4, un protocolo para autenticar las solicitudes de la API entrantes para los servicios de AWS, en todas las Regiones de AWS. En este momento, las Regiones de AWS creadas antes del 30 de enero de 2014 seguirán admitiendo el protocolo anterior, Signature Version 2. Cualquier región nueva después del 30 de enero de 2014 solo admitirá Signature Version 4, y por lo tanto, todas las solicitudes de esas regiones se deben realizar con Signature Version 4. Para obtener más autorización sobre AWS Signature Version 2, consulte Firma y autenticación de solicitudes REST en la Guía del usuario de Amazon Simple Storage Service.

Métodos de autenticación

Puede expresar la información de autenticación mediante uno de los siguientes métodos:

  • Encabezado de HTTP Authorization: el uso del encabezado de HTTP Authorization es el método más común para autenticar una solicitud de Amazon S3. Todas las operaciones REST de Amazon S3 (excepto las cargas basadas en el navegador mediante solicitudes POST) requieren este encabezado. Para obtener más información sobre el valor del encabezado Authorization y sobre cómo calcular la firma y las opciones relacionadas, consulte Autenticación de solicitudes: uso del encabezado de Authorization (AWS Signature Version 4).

  • Parámetros de cadena de consulta: puede utilizar una cadena de consulta para expresar una solicitud en su totalidad en una URL. En este caso, utiliza los parámetros de consulta para proporcionar la información de la solicitud, incluida la información de autenticación. Dado que la firma de la solicitud forma parte de la dirección URL, este tipo de URL suele denominarse como URL prefirmada. Puede utilizar URL prefirmadas para incrustar enlaces en los que se puede hacer clic, que pueden tener una validez de hasta siete días, en HTML. Para obtener más información, consulte Autenticación de solicitudes: uso de parámetros de consulta (AWS Signature Version 4).

Amazon S3 también admite las cargas basadas en el navegador que utilizan solicitudes HTTP POST. Con una solicitud HTTP POST, puede cargar contenido en Amazon S3 directamente desde el navegador. Para obtener información acerca de la autenticación de solicitudes POST, consulte Cargas basadas en el navegador con POST (AWS Signature Version 4).

Introducción a la firma de solicitudes

La información de autenticación que envíe en una solicitud debe incluir una firma. Para calcular una firma, primero debe concatenar los elementos de la solicitud Select para formar una cadena, denominada cadena para firmar. A continuación, debe utilizar una clave de firma para calcular el código de autenticación de mensajes basado en hash (HMAC) de la cadena para firmar.

En AWS Signature Version 4, no usa su clave de acceso secreta para firmar la solicitud. En cambio, primero usa su clave de acceso secreta para derivar una clave de firma. La clave de firma derivada es específica de la fecha, el servicio y la región. Para obtener más información acerca de cómo generar una clave de firma en diferentes lenguajes de programación, consulte Ejemplos de cómo generar una clave de firma para Signature Version 4.

En el siguiente diagrama, se ilustra el proceso general de cálculo de una firma.

Proceso de tres pasos que muestra la creación de StringToSign, la derivación de la clave de firma y el cálculo de la firma mediante HMAC-SHA256.

La cadena para firmar depende del tipo de solicitud. Por ejemplo, cuando utiliza el encabezado de autorización HTTP o los parámetros de consulta para la autenticación, utiliza una combinación variable de elementos de solicitud a fin de crear la cadena para firmar. Para una solicitud HTTP POST, la política POST de la solicitud es la cadena que firma. Para obtener más información acerca de cómo calcular la cadena para firmar, siga los enlaces que se proporcionan al final de esta sección.

En clave de firma, el diagrama muestra una serie de cálculos, donde el resultado de cada paso se suma al siguiente paso. El último paso es la clave de firma.

Al recibir una solicitud autenticada, los servidores de Amazon S3 vuelven a crear la firma con la información de autenticación incluida en la solicitud. Si las firmas coinciden, Amazon S3 procesa la solicitud; de lo contrario, se rechaza.

Para obtener más información sobe la autenticación de solicitudes, consulte los siguientes temas: