View a markdown version of this page

Especificación de Signature Version en la autenticación de solicitudes - Amazon Simple Storage Service

Especificación de Signature Version en la autenticación de solicitudes

Amazon S3 solo es compatible con AWS Signature Version 4 en la mayoría de las Regiones de AWS. En algunas de las Regiones de AWS más antiguas, Amazon S3 admite Signature Version 4 y Signature Version 2. Sin embargo, Signature Version 2 se va a desactivar (esta característica quedará obsoleta). Para obtener más información sobre el final del servicio de soporte de Signature Version 2, consulte AWS Signature Version 2 se va a desactivar (obsoleta) para Amazon S3.

Para ver una lista de todas las regiones de Amazon S3 y las versiones de Signature que admiten, consulte Regiones y puntos de enlace en la Referencia general de AWS.

Para todas las Regiones de AWS, los SDK de AWS utilizan Signature Version 4 de forma predeterminada con el fin de autenticar solicitudes. Si utiliza los SDK de AWS lanzados antes de mayo de 2016, es posible que deba solicitar Signature Version 4, como se muestra en la siguiente tabla.

SDK Solicitud de Signature Version 4 para una autenticación de solicitud
AWS CLI

Para el perfil predeterminado, ejecute el siguiente comando:

$ aws configure set default.s3.signature_version s3v4

Para un perfil común, ejecute el siguiente comando:

$ aws configure set profile.your_profile_name.s3.signature_version s3v4
SDK de Java

Añada lo siguiente en su código:

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

O bien, en la línea de comando, especifique lo siguiente:

-Dcom.amazonaws.services.s3.enableV4
SDK de JavaScript

Configure el parámetro signatureVersion en v4 cuando cree el cliente:

var s3 = new AWS.S3({signatureVersion: 'v4'});
SDK de PHP

Configure el parámetro signature en v4 cuando cree el cliente del servicio de Amazon S3 para PHP SDK v2:

<?php $client = S3Client::factory([ 'region' => 'YOUR-REGION', 'version' => 'latest', 'signature' => 'v4' ]);

Cuando utilice el SDK de PHP v3, establezca el parámetro signature_version en v4 durante la construcción del cliente de servicio de Amazon S3:

<?php $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'YOUR-REGION', 'signature_version' => 'v4' ]);
SDK de Python-Boto

Especifique lo siguiente en el archivo de configuración predeterminado boto:

[s3] use-sigv4 = True
SDK de Ruby

SDK de Ruby - Version 1: configure el parámetro :s3_signature_version en :v4 cuando cree el cliente:

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

SDK de Ruby - Version 3: configure el parámetro signature_version en v4 cuando cree el cliente:

s3 = Aws::S3::Client.new(signature_version: 'v4')
SDK de .NET

Añada lo siguiente al código antes de crear el cliente de Amazon S3:

AWSConfigsS3.UseSignatureVersion4 = true;

O bien, añada lo siguiente al archivo de configuración:

<appSettings> <add key="AWS.S3.UseSignatureVersion4" value="true" /> </appSettings>

 

AWS Signature Version 2 se va a desactivar (obsoleta) para Amazon S3

Sin embargo, Signature Version 2 se va a desactivar (quedará obsoleta) en Amazon S3. Amazon S3 solo aceptará solicitudes de API que estén firmadas con Signature Version 4.

En esta sección, se incluyen algunas respuestas a preguntas comunes sobre el final del servicio de soporte de Signature Version 2.

¿Qué es Signature Version 2/4 y qué significa la firma de solicitudes?

El proceso de firma Signature Version 2 o Signature Version 4 se utiliza para autenticar las solicitudes de API de Amazon S3. La firma de solicitudes permite que Amazon S3 pueda identificar quién está enviando la solicitud y ayuda a proteger las solicitudes frente a agentes malintencionados.

Para obtener más información sobre la firma de solicitudes de AWS, consulte Firma de solicitudes de AWS en la Referencia general de AWS.

¿En qué consiste la actualización?

En la actualidad, pueden utilizarse solicitudes de la API de Amazon S3 firmadas con Signature Version 2 y Signature Version 4. Cuando esto suceda, Amazon S3 solamente aceptará solicitudes que estén firmadas con Signature Version 4.

Para obtener más información sobre la firma de solicitudes de AWS, consulte Cambios de Signature Version 4 en la Referencia general de AWS.

¿Por qué se realiza la actualización?

En lugar de utilizar una clave de acceso secreta, Signature Version 4 usa una clave de firma, lo que mejora la seguridad. En la actualidad, Signature Version 4 puede utilizarse en todas las Regiones de AWS, mientras que Signature Version 2 solo se admite en las regiones que se lanzaron antes de enero de 2014. Esta actualización nos permite proporcionar una experiencia más uniforme en todas las regiones.

¿Cómo sé si estoy utilizando Signature Version 4 y qué actualizaciones tengo que hacer?

Normalmente, la versión de Signature que se utiliza para firmar las solicitudes viene determinada por la herramienta o el SDK del lado del cliente. De forma predeterminada, las últimas versiones de los SDK de AWS utilizan Signature Version 4. En el caso del software de terceros, póngase en contacto con el equipo de soporte del software correspondiente para confirmar la versión que necesita. Si envía llamadas REST directas a Amazon S3, debe modificar la aplicación para que utilice el proceso de firma Signature Version 4.

Para obtener información acerca de qué versión de los SDK de AWS debe usarse al pasar a Signature Version 4, consulte Transición de Signature Version 2 a Signature Version 4.

Para obtener información acerca del uso de Signature Version 4 con la API de REST de Amazon S3, consulte Autenticación de solicitudes (AWS Signature Version 4) en la Referencia de la API de Amazon Simple Storage Service.

¿Qué sucede si no realizo la actualización?

Las solicitudes firmadas con Signature Version 2 que se generen cuando esto suceda, no podrán autenticarse con Amazon S3. Los solicitantes recibirán mensajes de error en los que se informará de que la solicitud debe firmarse con Signature Version 4.

¿Debo hacer algún cambio aunque utilice una URL prefirmada que requiera mi firma durante más de siete días?

Si utiliza una URL prefirmada que necesita su firma durante más de siete días, no tiene que hacer nada por el momento. Podrá seguir utilizando AWS Signature Version 2 para firmar y autenticar la URL prefirmada. Seguiremos investigando y le proporcionaremos más detalles sobre la migración a Signature Version 4 con direcciones URL prefirmadas.

Más información

Transición de Signature Version 2 a Signature Version 4

Si en la actualidad utiliza Signature Version 2 para autenticar las solicitudes de API de Amazon S3, debe cambiar a Signature Version 4. Tal y como se describe en , el servicio de soporte de Signature Version 2 está a punto de finaliza AWS Signature Version 2 se va a desactivar (obsoleta) para Amazon S3.

Para obtener información acerca del uso de Signature Version 4 con la API de REST de Amazon S3, consulte Autenticación de solicitudes (AWS Signature Version 4) en la Referencia de la API de Amazon Simple Storage Service.

En la tabla siguiente, se muestran los SDK con la versión mínima necesaria para utilizar Signature Version 4 (SigV4). Si utiliza URL prefirmadas con los SDK de AWS para Java, JavaScript (Node.js) o Python (Boto/CLI), debe especificar la Región de AWS apropiada y configurar Signature Version 4 para el cliente. Para obtener información acerca de la configuración de SigV4 en el cliente, consulte Especificación de Signature Version en la autenticación de solicitudes.

Si utiliza este SDK o producto Actualice a esta versión del SDK ¿Es necesario cambiar el código para que el cliente utilice Sigv4? Enlace a la documentación del SDK

AWS SDK para Java v1

Actualice a Java 1.11.201+ o v2. Especificación de Signature Version en la autenticación de solicitudes

AWS SDK para Java  v2

No es necesario actualizar el SDK. No AWS SDK para Java

AWS SDK para .NET v1

Actualice a 3.1.10 o versiones posteriores. AWS SDK para .NET

AWS SDK para .NET v2

Actualice a 3.1.10 o versiones posteriores. No AWS SDK para .NET v2

AWS SDK para .NET v3

Actualice a 3.3.0.0 o versiones posteriores. AWS SDK para .NET v3

AWS SDK para JavaScript v1

Actualice a 2.68.0 o versiones posteriores. AWS SDK para JavaScript

AWS SDK para JavaScript v2

Actualice a 2.68.0 o versiones posteriores. AWS SDK para JavaScript

AWS SDK para JavaScript v3

No tiene que hacer nada por el momento. Actualice a la versión principal V3 en el tercer trimestre de 2019. No AWS SDK para JavaScript

AWS SDK para PHP v1

Se recomienda actualizar a la versión más reciente de PHP o, al menos, a la v2.7.4 con el parámetro de firma establecido en v4 en la configuración del cliente de S3. AWS SDK para PHP

AWS SDK para PHP v2

Se recomienda actualizar a la versión más reciente de PHP o, al menos, a la v2.7.4 con el parámetro de firma establecido en v4 en la configuración del cliente de S3. No AWS SDK para PHP

AWS SDK para PHP v3

No es necesario actualizar el SDK. No AWS SDK para PHP

Boto2

Actualice a Boto2 v2.49.0. Actualización a Boto

Boto3

Actualice a 1.5.71 (Botocore), 1.4.6 (Boto3). Boto 3: SDK de AWS para Python

AWS CLI

Actualice a 1.11.108. AWS Command Line Interface

AWS CLI v2 (vista previa)

No es necesario actualizar el SDK. No AWS Command Line Interface Versión 2 de la 2

AWS SDK para Ruby v1

Actualice a Ruby V3. Ruby V3 para AWS

AWS SDK para Ruby v2

Actualice a Ruby V3. Ruby V3 para AWS

AWS SDK para Ruby v3

No es necesario actualizar el SDK. No Ruby V3 para AWS

Go

No es necesario actualizar el SDK. No AWS SDK para Go

C++

No es necesario actualizar el SDK. No AWS SDK para C++
AWS Tools for Windows PowerShell o bien AWS Tools for PowerShell Core

Si utiliza versiones del módulo anteriores a 3.3.0.0, debe actualizar a 3.3.0.0.

Para obtener información sobre la versión, utilice el cmdlet Get-Module:

Get-Module –Name AWSPowershell Get-Module –Name AWSPowershell.NetCore

Para actualizar a la versión 3.3.0.0, utilice el cmdlet Update-Module:

Update-Module –Name AWSPowershell Update-Module –Name AWSPowershell.NetCore

Puede utilizar direcciones URL prefirmadas que sean válidas durante más siete días en las que el tráfico se envíe con Signature Version 2.