Muy buenas, me llamo Luis y aquí les traigo otro artículo.
Una nube privada virtual es la base desde la que construir un nuevo sistema. En este artículo, demuestro cómo crear uno usando CloudFormation.
Las nubes privadas virtuales (VPC) son redes en la nube. Una VPC contiene un rango de direcciones IP que se pueden subdividir en rangos más pequeños de IP conocidos como subredes. La comunicación a través de estas subredes se puede controlar mediante tablas de rutas, grupos de seguridad y listas de control de acceso. La comunicación hacia y desde Internet está habilitada por dos tipos de puerta de enlace:
- Puertas de enlace NAT que permiten el acceso a Internet.
- Pasarelas de Internet que permiten el acceso a y desde Internet.
Una subred se considera privada si utiliza una NAT en lugar de una puerta de enlace a Internet. Las tablas de ruta determinan a dónde se dirige el tráfico de red de su subred o puerta de enlace. Se requiere una ruta desde la subred hasta la puerta de enlace para habilitar el acceso a Internet.
Las VPC son importantes porque son entornos que se pueden configurar para reducir los riesgos de seguridad y mejorar la velocidad de las redes entre los componentes.
Índice
Arquitectura
Para este ejemplo, voy a crear un lugar en la nube de Amazon. La VPC consta de tres subredes públicas y tres privadas (híbridas).
Despliegue
Para implementar este sistema, estoy usando la AWS CLI con CloudFormation. Es tan simple como:
aws cloudformation create-stack --stack-name service --template-body file://template.yml --capabilities CAPABILITY_NAMED_IAM
La plantilla completa se puede encontrar aquí.
VPC
Para comenzar, la VPC más simple:
VPC: Type: AWS::EC2::VPC Properties: CidrBlock: "10.0.0.0/16"
La única propiedad que estamos obligados a proporcionar es la CidrBlock
, un rango de direcciones IP que declara disponibles para su uso en la red.
El siguiente paso es agregar subredes a la VPC. Estos ocupan secciones del rango de direcciones IP en la VPC. Debes configurar CidrBlock
que en este caso es 10.0.1.0/24
lo que significa que podemos usar las direcciones en el rango 10.0.1.0 — 10.0.1.255
.
Subnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.1.0/24"
El componente necesario para permitir el acceso desde una subred a Internet es una puerta de enlace de Internet. Esto se encuentra en el borde de la VPC y organiza cualquier tráfico enrutado desde o hacia ellos con Internet.
La siguiente plantilla configura una subred pública:
PublicSubA: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.1.0/24" AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref AWS::Region InternetGateway: Type: AWS::EC2::InternetGateway GatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref VPC InternetGatewayId: !Ref InternetGateway RouteTablePublic: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC RoutePublic: Type: AWS::EC2::Route Properties: DestinationCidrBlock: "0.0.0.0/0" GatewayId: !Ref InternetGateway RouteTableId: !Ref RouteTablePublic RouteTableAssocSubnetPublicA: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref RouteTablePublic SubnetId: !Ref PublicSubA
No se puede acceder directamente a una subred privada desde Internet. Sin embargo, es posible acceder a Internet desde una subred privada utilizando una puerta de enlace NAT. Se requiere una IP elástica porque a NatGateway no se le asigna automáticamente una IP pública.
PrivateSubA: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.4.0/24" AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref AWS::Region ElasticIPNatGatewayPrivateA: Type: AWS::EC2::EIP NatGatewayPrivateA: Type: AWS::EC2::NatGateway Properties: SubnetId: !Ref PrivateSubA AllocationId: !Ref ElasticIPNatGatewayPrivateA RouteTablePrivateA: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC RoutePrivate: Type: AWS::EC2::Route Properties: DestinationCidrBlock: "0.0.0.0/0" InstanceId: !Ref NatGatewayPrivateA RouteTableId: !Ref RouteTablePrivateA RouteTableAssocSubnetPrivateA: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref RouteTablePrivateA SubnetId: !Ref PrivateSubA
Las zonas de disponibilidad (AZ) son grupos de centros de datos dentro de una región que están aislados de la falla de otra AZ. Cada subred creada en una VPC debe colocarse en una única zona de disponibilidad y un sistema puede protegerse de una falla de zona de disponibilidad mediante el uso de varias arquitecturas de zona de disponibilidad; se recomienda tener tres subredes públicas y tres privadas que abarquen distintas zonas de zona de disponibilidad. Puede encontrar una plantilla de VPC para esto aquí.
Recursos:
- https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
Gracias por leer.
Espero que hayas disfrutado de este artículo.
Añadir comentario