본문으로 건너뛰기
hannctl
PDF

case-studies woori-aws-security DESIGN.md

우리금융그룹 AWS 클라우드 보안 아키텍처 설계 및 구현

다중 AWS 계정의 망분리 요건을 서브넷과 방화벽 구조로 옮기고, 보안 구성을 Terraform 코드 한 벌로 표준화했습니다.

DMZPrivate인터넷ShieldStandardCloudFront /WAF웹 공격 필터링ALBDMZ 서브넷NetworkFirewallVPC 경로의 방화벽VPC 워크로드공인 IP 없음아웃바운드: 허용 대상만Terraform 코드 한 벌다중 AWS 계정에 같은 기준으로 적용
이 구성을 Terraform 코드 한 벌로 정의해 다중 AWS 계정에 같은 기준으로 적용합니다.
GuardDutySecurity HubWAFNetwork FirewallShieldSplunk SIEM로그를 한곳에서 분석SOAR 대응정해진 절차로 대응
Splunk 기반 SOAR로 대응 절차까지 연결합니다.
계정계정계정담당자별로 다른 정책Terraform 코드 한 벌Network Firewall · WAF · Shield같은 코드, 모든 계정에 같은 기준
계정이 늘어나도 같은 기준이 코드로 반복됩니다.

통신 범위 계산 (관련 공개 저장소 pf-09)

이 코드가 하는 일: 확인하려는 대상 대역 목록과 방화벽 규칙의 CIDR 목록을 받아, 어떤 규칙에도 덮이지 않는 대역만 돌려줍니다. 규칙을 하나씩 적용하면서 그 규칙 안에 완전히 들어가는 대역은 지우고, 규칙이 대역의 일부만 덮으면 덮인 부분을 잘라 낸 나머지 대역만 남기며, 형식이 잘못된 CIDR은 건너뜁니다. 결과가 비어 있으면 요청한 통신이 이미 규칙으로 열려 있다는 뜻이고, 남은 대역이 있으면 정확히 그 범위만 새로 열면 된다는 뜻이라 중복 규칙 없이 필요한 만큼만 판단할 수 있습니다.

def uncovered_networks(
    targets: Iterable[ipaddress.IPv4Network], rule_cidrs: Iterable[str]
) -> list[ipaddress.IPv4Network]:
    """The parts of the targets that no rule reaches."""
    remaining = list(targets)
    for cidr in rule_cidrs:
        try:
            rule = ipaddress.IPv4Network(cidr, strict=False)
        except ValueError:
            continue
        next_round: list[ipaddress.IPv4Network] = []
        for network in remaining:
            if network.subnet_of(rule):
                continue
            if rule.subnet_of(network):
                next_round.extend(network.address_exclude(rule))
            else:
                next_round.append(network)
        remaining = next_round
    return remaining
© 2026 Kim JunHyun · Built with Astro · 이 사이트의 인프라도 코드로 관리합니다

↑↓ 이동 · Enter 열기 · Esc 닫기

테마 고르기

사원증을 누르면 그 테마로, 보던 내용과 같은 곳으로 이동합니다. 끌면 흔들리기만 합니다.

처음 화면으로 →