Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configurar el acceso privado a un bucket de Amazon S3 a través de un VPC punto de conexión
Creada por Martin Maritsch (AWS), Gabriel Rodriguez Garcia (), Shukhrat Khodjaev (AWS), Nicolas Jacob Baer (), Mohan Gowda AWS Purushothama () y Joaquín Rinaudo (AWS) AWS AWS
Resumen
En Amazon Simple Storage Service (Amazon S3), los URLs prefirmados le permiten compartir archivos de tamaño arbitrario con los usuarios de destino. De forma predeterminada, URLs se puede acceder a Amazon S3 prefirmados desde Internet dentro de un período de tiempo de caducidad, lo que facilita su uso. Sin embargo, los entornos corporativos a menudo requieren que el acceso a Amazon S3 esté prefirmado URLs para estar limitado únicamente a una red privada.
Este patrón presenta una solución sin servidor para interactuar de forma segura con los objetos de S3 mediante el uso de objetos prefirmados URLs desde una red privada sin acceso a Internet. En la arquitectura, los usuarios acceden a un Application Load Balancer a través de un nombre de dominio interno. El tráfico se enruta internamente a través de Amazon API Gateway y un punto final de nube privada virtual (VPC) para el bucket de S3. La AWS Lambda función genera archivos prefirmados URLs para su descarga a través del VPC terminal privado, lo que ayuda a mejorar la seguridad y la privacidad de los datos confidenciales.
Requisitos previos y limitaciones
Requisitos previos
A VPC que incluye una subred implementada en una Cuenta de AWS que está conectada a la red corporativa (por ejemplo, a través AWS Direct Connect de).
Limitaciones
El bucket S3 debe tener el mismo nombre que el dominio, por lo que le recomendamos que consulte las reglas de nomenclatura del bucket de Amazon S3.
Este ejemplo de arquitectura no incluye funciones de monitoreo para la infraestructura implementada. Si su caso de uso requiere supervisión, considere la posibilidad de añadir servicios AWS de supervisión.
Este ejemplo de arquitectura no incluye la validación de entradas. Si su caso de uso requiere la validación de las entradas y un mayor nivel de seguridad, considere la posibilidad de usarlo AWS WAF para protegerlo API.
Esta arquitectura de ejemplo no incluye el registro de acceso con Application Load Balancer. Si tu caso de uso requiere el registro de acceso, considera habilitar los registros de acceso del balanceador de carga.
Versiones
Python versión 3.11 o posterior
Terraform versión 1.6 o posterior
Arquitectura
Pila de tecnología de destino
En el conjunto de tecnologías de destino se utilizan los siguientes AWS servicios:
Amazon S3 es el servicio de almacenamiento principal que se utiliza para cargar, descargar y almacenar archivos de forma segura.
Amazon API Gateway expone los recursos y los puntos de enlace para interactuar con el bucket de S3. Este servicio desempeña un papel en la generación de datos prefirmados URLs para descargar o cargar.
AWS Lambdagenera archivos prefirmados URLs para descargar desde Amazon S3. Gateway llama a la función Lambda. API
Amazon VPC despliega recursos dentro de a VPC para proporcionar aislamiento de la red. VPCIncluye subredes y tablas de enrutamiento para controlar el flujo de tráfico.
Application Load Balancer dirige el tráfico entrante a API Gateway o al VPC punto final del bucket de S3. Permite a los usuarios de la red corporativa acceder a los recursos internamente.
VPCEl punto de conexión para Amazon S3 permite la comunicación directa y privada entre los recursos de Amazon S3 VPC y Amazon S3 sin tener que atravesar la Internet pública.
AWS Identity and Access Management (IAM) controla el acceso a los recursos. AWS Los permisos se configuran para garantizar interacciones seguras con este API y otros servicios.
Arquitectura de destino
En el siguiente diagrama se ilustra lo siguiente:
Los usuarios de la red corporativa pueden acceder a Application Load Balancer a través de un nombre de dominio interno. Suponemos que existe una conexión entre la red corporativa y la subred de la intranet Cuenta de AWS (por ejemplo, a través de una AWS Direct Connect conexión).
El Application Load Balancer dirige el tráfico entrante a API Gateway para generar datos prefirmados URLs para descargar o cargar en Amazon S3, o al VPC punto final del bucket de S3. En ambos casos, las solicitudes se enrutan internamente y no es necesario que atraviesen Internet.
APIGateway expone los recursos y los puntos finales para que interactúen con el bucket de S3. En este ejemplo, proporcionamos un punto final para descargar archivos del depósito de S3, pero esto podría ampliarse para proporcionar también la funcionalidad de carga.
La función Lambda genera el prefirmado URL para descargar un archivo de Amazon S3 mediante el nombre de dominio del Application Load Balancer en lugar del dominio público de Amazon S3.
El usuario recibe el archivo prefirmado URL y lo utiliza para descargar el archivo de Amazon S3 mediante el Application Load Balancer. El balanceador de cargas incluye una ruta predeterminada para enviar el tráfico que no esté destinado al VPC punto API final del bucket de S3.
El VPC punto final enruta lo prefirmado URL con el nombre de dominio personalizado al bucket de S3. El bucket de S3 debe tener el mismo nombre que el dominio.
Automatizar y escalar
Este patrón utiliza Terraform para implementar la infraestructura del repositorio de código en un Cuenta de AWS.
Herramientas
Herramientas
Python
es un lenguaje de programación informático de uso general. Terraform
es una herramienta de infraestructura como código (IaC) HashiCorp que le ayuda a crear y administrar recursos locales y en la nube. AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar con los AWS servicios mediante comandos en su consola de línea de comandos.
Repositorio de código
Prácticas recomendadas
La arquitectura de ejemplo de este patrón utiliza IAMpermisos para controlar el acceso a. API Cualquier persona que tenga IAM credenciales válidas puede llamar alAPI. Si su caso de uso requiere un modelo de autorización más complejo, es posible que desee utilizar un mecanismo de control de acceso diferente.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Obtenga AWS las credenciales. | Revise sus AWS credenciales y el acceso a su cuenta. Para obtener instrucciones, consulte los ajustes de configuración y del archivo de credenciales en la AWS CLI documentación. | AWS DevOps, General AWS |
Clonar el repositorio. | Clona el GitHub repositorio proporcionado con este patrón:
| AWS DevOps, General AWS |
Configure las variables. |
| AWS DevOps, General AWS |
Implemente la solución. |
| AWS DevOps, General AWS |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un archivo de prueba. | Cargue un archivo en Amazon S3 para crear un escenario de prueba para la descarga del archivo. Puede utilizar la consola Amazon S3
| AWS DevOps, General AWS |
Pruebe la URL funcionalidad prefirmada. |
| AWS DevOps, General AWS |
Elimine recursos. | Asegúrese de eliminar los recursos cuando ya no los necesite:
| AWS DevOps, General AWS |
Resolución de problemas
Problema | Solución |
---|---|
Los nombres clave de los objetos S3 con caracteres especiales, como signos numéricos (#), rompen URL los parámetros y provocan errores. | Codifique URL los parámetros correctamente y asegúrese de que el nombre de la clave del objeto S3 siga las directrices de Amazon S3. |
Recursos relacionados
Amazon S3:
Amazon API Gateway:
Application Load Balancer:
Alojamiento de sitios web HTTPS estáticos internos con ALB S3 y PrivateLink
(AWS entrada de blog)