서머너즈워: 천공의 아레나 멀티클라우드와 방화벽 재설계 설계 및 구현
GCP와 Tencent Cloud에 걸친 서버 600대·DB 70개 환경의 방화벽 정책을 전수 재설계하고, 무점검 원칙으로 운영한 대규모 게임 인프라입니다.
규칙 맵으로 만드는 방화벽 (관련 공개 저장소 pf-02)
이 코드가 하는 일: 규칙 맵(var.rules)의 항목마다 GCP 방화벽 규칙을 하나씩 만들고, 맵의 키를 규칙 이름으로 씁니다. 방향이 INGRESS면 대역을 출발지로, EGRESS면 목적지로 넣고, use_service_accounts 값에 따라 대상과 출발지를 네트워크 태그로 지정할지 서비스 계정으로 지정할지 고릅니다. 규칙 하나하나를 리소스 블록으로 쓰지 않고 맵 항목으로 선언하므로, 역할별로 묶은 정책을 그대로 데이터로 관리할 수 있습니다.
resource "google_compute_firewall" "rules" {
for_each = var.rules
network = each.value.network
name = each.key
direction = each.value.direction
source_ranges = each.value.direction == "INGRESS" ? each.value.ranges : null
destination_ranges = each.value.direction == "EGRESS" ? each.value.ranges : null
source_tags = each.value.use_service_accounts || each.value.direction == "EGRESS" ? null : each.value.sources
source_service_accounts = each.value.use_service_accounts && each.value.direction == "INGRESS" ? each.value.sources : null
target_tags = each.value.use_service_accounts ? null : each.value.targets
target_service_accounts = each.value.use_service_accounts ? each.value.targets : null
priority = each.value.priority