GCP - VPC & Networking
GCP Compute Networking en Resumen
VPCs contienen reglas de Firewall para permitir tráfico entrante a la VPC. Las VPCs también contienen subredes donde las máquinas virtuales estarán conectadas. Comparando con AWS, el Firewall sería lo más parecido a los Security Groups y NACLs de AWS, pero en este caso estos están definidos en la VPC y no en cada instancia.
VPC, Subredes y Firewalls en GCP
Las Compute Instances están conectadas a subredes que son parte de VPCs (Virtual Private Clouds). En GCP no hay security groups, hay VPC firewalls con reglas definidas a nivel de red pero aplicadas a cada VM Instance.
Subredes
Una VPC puede tener varias subredes. Cada subred está en 1 región.
Firewalls
Por defecto, cada red tiene dos reglas de firewall implícitas: permitir salida y denegar entrada.
Cuando se crea un proyecto de GCP, también se crea una VPC llamada default
, con las siguientes reglas de firewall:
default-allow-internal: permite todo el tráfico de otras instancias en la red
default
default-allow-ssh: permite el puerto 22 desde cualquier lugar
default-allow-rdp: permite el puerto 3389 desde cualquier lugar
default-allow-icmp: permite ping desde cualquier lugar
Como puedes ver, las reglas de firewall tienden a ser más permisivas para las direcciones IP internas. La VPC por defecto permite todo el tráfico entre Compute Instances.
Se pueden crear más reglas de Firewall para la VPC por defecto o para nuevas VPCs. Las reglas de Firewall se pueden aplicar a las instancias mediante los siguientes métodos:
Todas las instancias dentro de una VPC
Desafortunadamente, no hay un comando gcloud
simple para listar todas las Compute Instances con puertos abiertos en internet. Tienes que conectar los puntos entre las reglas de firewall, network tags, service accounts e instancias.
Este proceso fue automatizado usando este script de python que exportará lo siguiente:
Archivo CSV mostrando instancia, IP pública, TCP permitido, UDP permitido
Escaneo nmap para apuntar a todas las instancias en puertos permitidos de entrada desde internet público (0.0.0.0/0)
Escaneo masscan para apuntar al rango completo de TCP de aquellas instancias que permiten TODOS los puertos TCP desde internet público (0.0.0.0/0)
Políticas de Firewall Jerárquicas
Las políticas de firewall jerárquicas te permiten crear y aplicar una política de firewall consistente en toda tu organización. Puedes asignar políticas de firewall jerárquicas a la organización en su totalidad o a carpetas individuales. Estas políticas contienen reglas que pueden negar o permitir conexiones explícitamente.
Creas y aplicas políticas de firewall en pasos separados. Puedes crear y aplicar políticas de firewall en los nodos de organización o carpeta de la jerarquía de recursos. Una regla de política de firewall puede bloquear conexiones, permitir conexiones o diferir la evaluación de reglas de firewall a carpetas de nivel inferior o reglas de firewall de VPC definidas en redes VPC.
Por defecto, todas las reglas de políticas de firewall jerárquicas se aplican a todas las VMs en todos los proyectos bajo la organización o carpeta donde se asocia la política. Sin embargo, puedes restringir qué VMs reciben una regla dada especificando redes objetivo o cuentas de servicio objetivo.
Puedes leer aquí cómo crear una Política de Firewall Jerárquica.
Evaluación de Reglas de Firewall
Org: Políticas de firewall asignadas a la Organización
Folder: Políticas de firewall asignadas a la Carpeta
VPC: Reglas de firewall asignadas a la VPC
Global: Otro tipo de reglas de firewall que pueden ser asignadas a VPCs
Regional: Reglas de firewall asociadas con la red VPC de la NIC de la VM y la región de la VM.
VPC Network Peering
Permite conectar dos redes Virtual Private Cloud (VPC) para que los recursos en cada red puedan comunicarse entre sí. Las redes VPC emparejadas pueden estar en el mismo proyecto, en diferentes proyectos de la misma organización, o en diferentes proyectos de diferentes organizaciones.
Estos son los permisos necesarios:
compute.networks.addPeering
compute.networks.updatePeering
compute.networks.removePeering
compute.networks.listPeeringRoutes
Referencias
Last updated