Firma de solicitudes API de AWS - AWS Identity and Access Management

Firma de solicitudes API de AWS

importante

Si usa un SDK de AWS (consulte Código de muestra y bibliotecas) o la herramienta de línea de comandos (CLI) de AWS para enviar solicitudes de API a AWS, puede omitir esta sección porque los clientes del SDK y la CLI autentican sus solicitudes mediante las claves de acceso que usted proporciona. A menos que tenga una razón específica para no hacerlo, le recomendamos que utilice siempre un SDK o la CLI.

En las regiones en las que se admiten varias versiones de firma, las solicitudes de firma manual significan que debe especificar qué versión de firma se utiliza. Cuando envía solicitudes a puntos de acceso de varias regiones, los SDK y la CLI cambian de forma automática a Signature Version 4A sin configuración adicional.

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 seleccionados 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 sobre cómo generar una clave de firma en diferentes lenguajes de programación, consulte Ejemplos de firmas de solicitudes.

Signature Version 4 es el protocolo de firma de AWS. AWS también admite una extensión, Signature Version 4A, la cual admite firmas para solicitudes de la API en varias regiones. Para obtener más información, consulte el proyecto sigv4a-signing-examples en GitHub.

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


            Una imagen de las partes de una firma, incluida la cadena para firmar, la clave de firma y la firma calculada.
  • 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.

  • 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.

  • Cuando un servicio de AWS recibe una solicitud autenticada, vuelve a crear la firma con la información de autenticación incluida en la solicitud. Si las firmas coinciden, el servicio procesa la solicitud. De lo contrario, se rechaza la solicitud.

Cuándo firmar las solicitudes

Cuando escribe código personalizado que envía solicitudes de la API a AWS, debe incluir código que firme las solicitudes. Puede escribir código personalizado porque:

  • Si trabaja con un lenguaje de programación para el que no hay un AWS SDK disponible.

  • Necesita control total sobre el modo en que se envían las solicitudes a AWS.

¿Por qué se firman las solicitudes?

El proceso de firma ayuda a proteger las solicitudes de las siguientes formas:

  • Comprobació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). 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 Acceso programático de credenciales de seguridad de AWS.

  • Protección de los datos en tránsito

    Para evitar que se altere una solicitud mientras están en tránsito, algunos de sus elementos se utilizan para calcular un resumen (hash) de la solicitud y el valor hash resultante se incluye como parte de la solicitud. Cuando un Servicio de AWS recibe la solicitud, utiliza la misma información para calcular un hash y lo compara con el valor de hash contenido en su solicitud. Si los valores no coinciden, AWS deniega la solicitud.

  • Protección contra posibles ataques de reproducción

    En la mayoría de los casos, una solicitud debe llegar a AWS en el plazo de cinco minutos a partir de la marca de tiempo que figura en ella. De lo contrario, AWS deniega la solicitud.