AWS Signature Version 4 para solicitudes de API - AWS Identity and Access Management

AWS Signature Version 4 para solicitudes de API

importante

Si utiliza un SDK de AWS (consulte Bibliotecas y código de muestra) o la herramienta AWS Command Line Interface (AWS CLI) para enviar solicitudes de API a AWS, puede omitir el proceso de firma porque los clientes del SDK y la CLI autentican sus solicitudes mediante las claves de acceso que les 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 hacen referencia a 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. AWS Signature Version 4 (SigV4) es el protocolo de firma de AWS para agregar información de autenticación a solicitudes de API de AWS.

No se utiliza su clave de acceso secreta para firmar las solicitudes de API. En su lugar, se utiliza el proceso de firma de SigV4. Firmar solicitudes implica:

  1. Crear una solicitud canónica en función de los detalles de la solicitud.

  2. Calcular una firma con sus credenciales de AWS.

  3. Agregar esta firma a la solicitud como encabezado de autorización.

Luego, AWS replica este proceso y verifica la firma, concediendo o denegando el acceso en consecuencia.

nota

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

Cómo funciona AWS SigV4

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

  2. La clave de firma consiste en una serie de cálculos en los que el resultado de cada paso se incorpora al siguiente. El último paso es la clave de firma.

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

Para obtener más información, consulte Elementos de una firma de solicitud a la API de AWS.

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.

Mientras que las solicitudes de API autentican el acceso con AWS SigV4, los SDK de AWS y la AWS CLI también autentican sus solicitudes mediante las claves de acceso que proporciona. Para obtener más información sobre la autenticación con los SDK de AWS y la AWS CLI, consulte Recursos adicionales.

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

AWS SigV4 se puede expresar en el encabezado de autorización HTTP o como una cadena de consulta en la URL. Para obtener más información, consulte Métodos de autenticación.

Recursos adicionales