Restringir acceso a un bucket de AWS s3 por IP

Escenario

Una de nuestra aplicaciones web usa el servicio de almacenaje del webservice s3 de Amazon para guardar los ficheros que se suben a la web. Para ello el usuario dispone de un formulario y, una vez enviado, la aplicación utiliza el API de AWS para guardarlo en su bucket de s3.

Problema

En ningún momento se expone la dirección de s3, del tipo https://s3.eu-central-1.amazonaws.com/acme-documents/4e8c61c7ca8ca26ed8a3d4eac6123226, porque las peticiones de descarga de la aplicación pasan por un controlador, accesible desde https://acme.com/file/3/download, que de manera interna invoca un servicio que se encarga de solicitar el fichero a AWS para que lo devuelva el controlador. Ahora bien, el bucket de s3 es público y no dispone de ninguna restricción por ACL, de modo que si alguien se hiciera con la URL podría descargarse el fichero. Una manera de solucionarlo sería definiendo los controles de acceso, pero para ello habría que actualizar el código que ya está desplegado en producción.

Solución

A parte de definir una política de acceso al bucket con ACL, s3 también permite restringir el acceso a cualquier dirección que no haya sido especificada. Para ello basta con entrar en la consola de AWS de s3 y sustituir el bucket policy por un JSON de este tipo: Como se puede leer, el efecto de esta regla es denegar el acceso a los recursos especificados para las direcciones IPS que no hayan sido autorizadas. En la clave Resource se listan los buckets afectados, con el formato nombre-del-bucket precedido por arn:aws:s3::: En la clave aws:SoruceIp de la condición NotIpAddress hay que listar las direcciones IPS en formato CIDR

Publicaciones Similares

  • Extracción del texto de un pdf creado a partir de una imagen

    Escenario Una manera de preparar los exámenes es practicando con aquellos de años anteriores. Para los que estudiamos en la UNED, el centro de Calatayud cuenta con un extenso repositorio de PDFs de exámenes de previas convocatorias. Problema Los PDFs suelen ser de aquellos generados a partir de imágenes y no de texto lo que…

  • Instalación certificado raíz Comodo

    Escenario Hemos migrado nuestro repositorio de git a un nuevo servidor y tenemos que actualizar las URLs de los orígenes de nuestros repositorios locales. Problema Cambiamos la url remota del repositorio local de git con el comando git remote set-url y, tras hacer un pull git nos devuelve el siguiente error: fatal: unable to access 'https://git.technoage.es/acme.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none Solución Por lo visto nuestra…

  • Actualización de Mautic 4

    Este artículo va dedicado a aquellos administradores web entre cuyas labores se encuentre el mantenimiento de una instalación Mautic. Por eso no voy a explicar qué es Mautic: si no lo conoces, este artículo carece de interés. Vamos a partir de la base que el usuario UNIX, propietario de la instalación, es mautic y que…

  • Sonata Admin: el calendario no se cierra

    Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:

    Y la siguiente clave bajo form_themesen el fichero config/packages/twig.yaml:

    Problema El calendario no se cierra automáticamente cuando se selecciona…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *