Uso de URL prefirmadas - Amazon Simple Storage Service

Uso de URL prefirmadas

Puede utilizar direcciones URL prefirmadas para otorgar acceso limitado en el tiempo a objetos en Amazon S3 sin necesidad de actualizar su política de buckets. Una URL prefirmada puede introducirse en un navegador o utilizarse por un programa para descargar un objeto. Las credenciales que utiliza la URL prefirmada son las del usuario de AWS que generó la URL.

También puede utilizar URL prefirmadas para permitir que alguien cargue un objeto específico en su bucket de Amazon S3. Esto permite una carga sin necesidad de que otra parte tenga credenciales o permisos de seguridad de AWS. Si ya existe un objeto con la misma clave en el bucket especificado en la URL prefirmada, Amazon S3 reemplazará el objeto existente por el objeto cargado.

Puede utilizar la URL prefirmada varias veces, hasta la fecha y hora de vencimiento.

Cuando crea una URL prefirmada, debe proporcionar sus credenciales de seguridad y luego especificar lo siguiente:

  • Un bucket de Amazon S3.

  • Una clave de objeto (si está descargando, este objeto estará en su bucket de Amazon S3; si está cargando, este es el nombre del archivo que se cargará).

  • Un método HTTP (GET para descargar objetos o PUT para cargarlos)

  • Un intervalo de tiempo de vencimiento

Actualmente, las URL prefirmadas de Amazon S3 no admiten el uso de los siguientes algoritmos de suma de comprobación de la integridad de los datos (CRC32, CRC32C, SHA-1, SHA-256) al cargar objetos. Para verificar la integridad del objeto después de cargarlo, puede proporcionar un resumen MD5 del objeto al cargarlo con una URL prefirmada. Para obtener más información acerca de la integración de objetos, consulte Comprobación de la integridad de objetos.

Quién puede crear una URL prefirmada

Cualquiera que tenga credenciales de seguridad válidas puede crear una URL prefirmada. Sin embargo, para poder obtener acceso a un objeto correctamente, la URL prefirmada debe haber sido creada por alguien que tenga permiso para realizar la operación en la que se basa la URL prefirmada.

Los siguientes son los tipos de credenciales que puede utilizar para crear una URL prefirmada:

  • Perfil de instancia de IAM: válido hasta 6 horas.

  • AWS Security Token Service: válido hasta un máximo de 36 horas cuando se firma con credenciales de seguridad de larga duración o la duración de la credencial temporal, lo que termine antes.

  • Usuario de IAM: válido hasta 7 días cuando se utiliza AWS Signature Version 4.

    Para crear una URL prefirmada válida durante un máximo de 7 días, delegue primero las credenciales de usuario de IAM (la clave de acceso y la clave secreta) en el método que va a utilizar para crear la URL prefirmada.

nota

Si creó una URL prefirmada con una credencial temporal, la URL caducará cuando caduque la credencial. Esto ocurre incluso si la URL se creó con un tiempo de caducidad posterior. Para conocer la duración temporal de las credenciales de seguridad, consulte Comparación de las operaciones de la API de AWS STS en la Guía del usuario de IAM.

Tiempo de caducidad de las URL prefirmadas

Una URL prefirmada sigue siendo válida durante el período de tiempo especificado cuando se generó la URL. Si crea una URL prefirmada con la consola de Amazon S3, el tiempo de caducidad puede establecerse entre 1 minuto y 12 horas. Si utiliza la AWS CLI o los SDK de AWS, el tiempo de caducidad puede establecerse hasta en 7 días.

Si creó una URL prefirmada con un token temporal, la URL caducará cuando caduque el token, incluso si creó la URL con un tiempo de vencimiento posterior. Para obtener más información sobre cómo las credenciales que utiliza afectan al tiempo de caducidad, consulte Quién puede crear una URL prefirmada.

Simple Storage Service (Amazon S3) comprueba la fecha y hora de vencimiento de una URL firmada al realizarse la solicitud HTTP. Por ejemplo, si un cliente comienza a descargar un archivo grande inmediatamente antes de la fecha de vencimiento, la descarga continúa incluso si se sobrepasa la hora de vencimiento durante la descarga. Sin embargo, si la conexión se interrumpe y el cliente intenta reiniciar la descarga después de la hora de vencimiento, la descarga produce un error.

Limitación de las capacidades de URL prefirmadas

Las capacidades de una URL están limitadas por los permisos del usuario que la creó. En esencia, las URL prefirmadas son tokens al portador que otorgan acceso a quienes las poseen. Por lo tanto, le recomendamos que los proteja adecuadamente. A continuación, se muestran algunos métodos que puede utilizar para restringir el uso de las URL prefirmadas.

AWS Signature Version 4 (SigV4)

Para aplicar un comportamiento específico cuando las solicitudes de URL prefirmadas se autentican mediante AWS Signature Version 4 (SigV4), puede usar claves de condición en las políticas de bucket y en las políticas de punto de acceso. Por ejemplo, puede crear la siguiente política de buckets que use la condición s3:signatureAge para denegar cualquier solicitud de URL prefirmada de Amazon S3 en los objetos del bucket DOC-EXAMPLE-BUCKET1 si la firma tiene más de 10 minutos de antigüedad. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": {"AWS":"*"}, "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

Para obtener más información sobre las claves de política relacionadas con AWS Signature Version 4, consulte Autenticación de AWS Signature Version 4 en la Referencia de la API de Amazon Simple Storage Service.

Restricción de ruta de red

Si desea restringir el uso de URL prefirmadas y todo el acceso a Amazon S3 a rutas de red concretas, puede escribir políticas de AWS Identity and Access Management (IAM). Estas políticas se pueden establecer en la entidad principal de IAM que realiza la llamada, en el bucket de Amazon S3 o en ambos.

Una restricción de ruta de red en la entidad principal de IAM requiere que el usuario de esas credenciales realice solicitudes desde la red especificada. Una restricción en el bucket o en el punto de acceso requiere que todas las solicitudes a ese recurso se originen desde la red especificada. Estas restricciones también se aplican fuera del escenario de URL prefirmada.

La clave de condición global de IAM que utilice depende del tipo de punto de conexión. Si utiliza el punto de conexión público para Amazon S3, utilice aws:SourceIp. Si utiliza un punto de conexión de la nube privada virtual (VPC) para Amazon S3, utilice aws:SourceVpc o aws:SourceVpce.

La siguiente instrucción de política de IAM requiere que la entidad principal acceda a AWS solo desde el rango de red especificado. Con esta declaración de política, todo acceso debe originarse desde ese rango. Esto incluye el caso de alguien que usa una URL prefirmada para Amazon S3. Para utilizar este ejemplo, reemplace los user input placeholders con su propia información.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }

Para ver ejemplos adicionales de políticas de buckets que utilizan la clave de condición global aws:SourceIp de AWS para restringir el acceso a un bucket de Amazon S3 a un intervalo de red específico, consulte Administración del acceso en función de direcciones IP específicas.