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 Sample Code and Libraries) 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.

El SigV4 simétrico requiere que obtenga una clave que esté destinada a un solo servicio de AWS, en una sola región de AWS, en un día determinado. Esto hace que la clave y la firma calculada sean diferentes para cada región, lo que significa que debes saber a qué región está destinada la firma.

La versión 4 de la firma asimétrica (SigV4a) es una extensión que permite firmar con un nuevo algoritmo y generar firmas individuales que se puedan verificar en más de una región de AWS. Con SigV4a, puede firmar una solicitud para varias regiones, con un enrutamiento y conmutación por error sin problemas entre regiones. Cuando utiliza el SDK de AWS o la AWS CLI para invocar una funcionalidad que requiere la firma en varias regiones, el tipo de firma se cambia automáticamente para usar SigV4a. Para obtener más información, consulte Cómo funciona AWS SigV4a.

Cómo funciona AWS SigV4

Los siguientes pasos describen el proceso general de cálculo de una firma con SigV4:

  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.

Cómo funciona AWS SigV4a

SigV4a utiliza firmas asimétricas basadas en la criptografía de clave público-privada. SIGv4a pasa por un proceso de derivación de credenciales con un alcance similar al de SIGv4a, excepto que Sigv4a usa la misma clave para firmar todas las solicitudes sin necesidad de obtener una clave de firma distinta en función de la fecha, el servicio y la región. Se puede obtener un par de claves del algoritmo de firma digital de curva elíptica (ECDSA) a partir de su clave de acceso secreta de AWS existente.

El sistema utiliza criptografía asimétrica para verificar las firmas multirregionales, por lo que AWS solo necesita almacenar las claves públicas. Las claves públicas no son secretas y no se pueden utilizar para firmar solicitudes. Las firmas asimétricas son obligatorias para las solicitudes de API multirregionales, por ejemplo, con puntos de acceso multirregionales Amazon S3.

Los siguientes pasos describen el proceso general de cálculo de una firma con SigV4a:

  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 deriva de una clave de acceso secreta de AWS mediante una serie de cálculos en los que el resultado de cada paso se incorpora al siguiente. El paso final produce el par de claves.

  3. Cuando un servicio de AWS recibe una solicitud firmada con Sigv4a, AWS verifica la firma utilizando solo la mitad pública del par de claves. Si la firma es válida, la solicitud se autentica y el servicio procesa la solicitud. Se rechazan las solicitudes con firmas no válidas.

Para obtener más información sobre SigV4a para solicitudes de API multirregionales, consulte el proyecto sigv4a-signing-examples en GitHub.

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