Estoy intentando utilizar un punto final de AWS VPC para acceder a un recurso de S3 sin suerte. ¿Podrías ayudar?
Detalles:
Tengo una Instancia EC2 dentro de un Grupo de Seguridad. Esto está dentro de una VPC y una subred con un punto final de Internet y una entrada en la tabla de enrutamiento para 0.0.0.0/0. Sin embargo, no quiero que esta instancia EC2 específica pueda comunicarse con Internet, pero sí quiero que pueda comunicarse con un S3 Bucket ubicado enhttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh.
En respuesta, sobrecargué la regla de salida predeterminada en el grupo de seguridad, por lo que se niegan las conexiones salientes agregando una regla de salida al puerto 22. La documentación de Amazon me dice que las direcciones locales (privadas) de AWS aún estarán permitidas. Con esto en mente, agregué un punto final de VPC a mi VPC y actualicé mi tabla de enrutamiento con pl-6da54004 (com.amazonaws.eu-west-1.s3) :: vpce-9f47a1f6.
Una vez hecho esto, no puedo acceder a mi recurso S3 desde mi instancia EC2. lo intento y lo consigohttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.shsin suerte.
¿Tienes alguna idea de lo que está mal? Mis pensamientos son:
- mi instancia ec2 parece resolver el dominio S3 en 54.231.130.244, pero esto no es lo mismo para todas las instancias. ¿Necesito agregar una regla securityGroupEgress o una ruta para un rango de IP de S3? si es así ¿cuál es el alcance?
- ¿Quizás debería acceder a mis recursos de S3 a través de un nombre de dominio diferente que en su lugar se resolvió en una dirección IP interna?
gracias toby
Respuesta1
Primero, un poco de historia. El solucionador de DNS para instancias de VPC es un componente virtual integrado en la infraestructura. Es inmune a las reglas del grupo de seguridad saliente... pero la resolución de los nombres de host para los puntos finales de S3 no cambia cuando aprovisiona un punto final de S3 para su VPC.
Lo que hace un punto final de VPC para S3 son un par de cosas diferentes. Comprender cuáles son esas cosas es clave para comprender si hará lo que necesita. tl;dr: así será, en este caso.
Primero, observa que están configurados en las tablas de rutas como "listas de prefijos". Un punto de enlace de VPC toma un conjunto de prefijos de red IPv4 predefinidos y secuestra las rutas a esos prefijos para cada tabla de rutas que incluya la lista de prefijos respectiva, de modo que su tráfico a cualquiera de esas redes atraviese el punto de enlace de VPC en lugar de la puerta de enlace de Internet y cualquier instancia NAT intermedia.
En esencia, esto abre una nueva ruta desde su VPC a los rangos de direcciones IP del servicio de AWS... pero el lugar al que lo llevan esas direcciones IP no es, inicialmente, y es el mismo lugar al que lo llevarían sin el punto final de la VPC en su lugar.
El primer lugar al que golpeasse parece a S3pero no es idéntico al S3 conectado a Internet, porque conoce las políticas de su punto final de VPC, por lo que puede controlar a qué depósitos y acciones se puede acceder. Éstas no anulan las demás políticas, sino que las aumentan.
Una política de punto final no anula ni reemplaza las políticas de usuario de IAM ni las políticas de depósito de S3. Es una política independiente para controlar el acceso desde el punto final al servicio especificado. Sin embargo, todos los tipos de políticas (políticas de usuario de IAM, políticas de endpoints, políticas de S3 y políticas de ACL de Amazon S3 (si las hay)) deben otorgar los permisos necesarios para que el acceso a Amazon S3 sea exitoso.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-access
Tenga en cuenta que si no restringe el acceso al depósito con una política adecuada y, en su lugar, habilita el acceso completo, las instancias podrán acceder a cualquier depósito en la región S3 si las políticas del depósito lo permiten, incluidos los depósitos públicos.
Ahora, la parte complicada. Si el grupo de seguridad de su instancia no permite el acceso saliente a S3 porque se eliminó la regla predeterminada "permitir", puede permitir que la instancia acceda a S3 a través del punto final de la VPC, con una regla de grupo de seguridad especialmente diseñada:
Agregue una nueva regla de salida al grupo de seguridad. Para el "tipo", elija HTTPS. Para el destino, elija "IP personalizada".
La documentación no es consistente con lo que veo en la consola:
La lista de destino muestra los ID y nombres de la lista de prefijos para los servicios de AWS disponibles.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-security
Bueno... no, no es así. No para mí, al menos, no en el momento de escribir este artículo.
La solución es elegir "IP personalizada" y luego, en lugar de un bloque de dirección IP o un ID de grupo de seguridad, escriba el ID de la lista de prefijos para su punto final de VPC, en el formato del pl-xxxxxxxx
cuadro de la dirección IP. Puede encontrar esto en la consola de la VPC mirando los destinos en una de las subredes asociadas con el punto final de la VPC.