GCP - VPC & Networking
GCP Compute Networking in a Nutshell
VPCs는 VPC로 들어오는 트래픽을 허용하는 Firewall 규칙을 포함합니다. VPC는 또한 가상 머신이 연결될 서브네트워크를 포함합니다. AWS와 비교하면, Firewall은 AWS Security Groups 및 NACLs와 가장 유사하지만, 이 경우에는 각 인스턴스가 아닌 VPC에 정의됩니다.
VPC, Subnetworks & Firewalls in GCP
Compute Instances는 VPCs (Virtual Private Clouds)의 일부인 서브네트워크에 연결됩니다. GCP에는 security groups가 없으며, 네트워크 수준에서 정의되지만 각 VM 인스턴스에 적용되는 VPC firewalls가 있습니다.
Subnetworks
VPC는 여러 서브네트워크를 가질 수 있습니다. 각 서브네트워크는 1개의 지역에 있습니다.
Firewalls
기본적으로, 모든 네트워크에는 두 개의 암시적 방화벽 규칙이 있습니다: 아웃바운드 허용 및 인바운드 거부.
GCP 프로젝트가 생성되면, **default
**라는 VPC가 생성되며, 다음 방화벽 규칙이 포함됩니다:
default-allow-internal:
default
네트워크의 다른 인스턴스에서 오는 모든 트래픽 허용default-allow-ssh: 모든 곳에서 22 허용
default-allow-rdp: 모든 곳에서 3389 허용
default-allow-icmp: 모든 곳에서 ping 허용
보시다시피, 방화벽 규칙은 내부 IP 주소에 대해 더 관대한 경향이 있습니다. 기본 VPC는 Compute Instances 간의 모든 트래픽을 허용합니다.
기본 VPC 또는 새로운 VPC에 대해 더 많은 방화벽 규칙을 만들 수 있습니다. 방화벽 규칙은 다음 방법을 통해 인스턴스에 적용될 수 있습니다:
VPC 내의 모든 인스턴스
불행히도, 인터넷에서 열린 포트가 있는 모든 Compute Instances를 나열하는 간단한 gcloud
명령어는 없습니다. 방화벽 규칙, 네트워크 태그, 서비스 계정 및 인스턴스 간의 관계를 연결해야 합니다.
이 과정은 이 파이썬 스크립트를 사용하여 자동화되었습니다. 이 스크립트는 다음을 내보냅니다:
인스턴스, 공용 IP, 허용된 TCP, 허용된 UDP를 보여주는 CSV 파일
공용 인터넷(0.0.0.0/0)에서 인그레스가 허용된 포트에서 모든 인스턴스를 대상으로 하는 nmap 스캔
공용 인터넷(0.0.0.0/0)에서 모든 TCP 포트를 허용하는 인스턴스를 대상으로 하는 masscan
Hierarchical Firewall Policies
_Hierarchical firewall policies_는 조직 전체에 일관된 방화벽 정책을 생성하고 적용할 수 있게 합니다. 조직 전체 또는 개별 폴더에 계층적 방화벽 정책을 할당할 수 있습니다. 이러한 정책에는 연결을 명시적으로 거부하거나 허용하는 규칙이 포함될 수 있습니다.
방화벽 정책을 생성하고 적용하는 것은 별도의 단계로 수행됩니다. 방화벽 정책은 리소스 계층 구조의 조직 또는 폴더 노드에서 생성하고 적용할 수 있습니다. 방화벽 정책 규칙은 연결을 차단하거나, 허용하거나, 방화벽 규칙 평가를 하위 폴더 또는 VPC 네트워크에 정의된 VPC 방화벽 규칙으로 위임할 수 있습니다.
기본적으로, 모든 계층적 방화벽 정책 규칙은 정책이 연결된 조직 또는 폴더 아래의 모든 프로젝트의 모든 VM에 적용됩니다. 그러나 대상 네트워크 또는 대상 서비스 계정을 지정하여 특정 VM에만 규칙을 적용할 수 있습니다.
계층적 방화벽 정책 생성 방법을 여기에서 읽을 수 있습니다.
Firewall Rules Evaluation
Org: 조직에 할당된 방화벽 정책
Folder: 폴더에 할당된 방화벽 정책
VPC: VPC에 할당된 방화벽 규칙
Global: VPC에 할당될 수 있는 또 다른 유형의 방화벽 규칙
Regional: VM의 NIC 및 지역의 VPC 네트워크와 연결된 방화벽 규칙
VPC Network Peering
두 개의 Virtual Private Cloud (VPC) 네트워크를 연결하여 각 네트워크의 리소스가 서로 통신할 수 있도록 합니다. 피어링된 VPC 네트워크는 동일한 프로젝트, 동일한 조직의 다른 프로젝트 또는 다른 조직의 다른 프로젝트에 있을 수 있습니다.
필요한 권한은 다음과 같습니다:
compute.networks.addPeering
compute.networks.updatePeering
compute.networks.removePeering
compute.networks.listPeeringRoutes
References
Last updated