DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 우아한형제들
#DevOps

멀티 어카운트 NACL 차단 자동화 도구 운영 및 개선 경험

멀티 어카운트 NACL 차단 자동화 도구 운영 및 개선 경험
01

Summary

수십 개 AWS 계정의 NACL 차단 자동화, '정합성 지옥'에서 완벽 탈출하기

우아한형제들 보안팀이 분산 아키텍처의 레이스 컨디션과 API 스로틀링을 정교한 엔지니어링으로 진화시킨 여정

본 아티클은 수십 개 AWS 계정에 분산된 NACL 공격 IP 차단을 자동화하는 도구(WOOWA-SOC-ACL-IR)의 고도화 경험을 생생하게 다룹니다. 코드 실행 단계의 묵인된 에러, 일시적 일관성 지연, 중복 실행 간섭 등 분산 컴퓨팅 환경에서 마주할 수 있는 예측 불가능한 함정들을 짚어냅니다. 단순 '모두 보호하거나 다 같이 중단하자'라는 이상적 균등 원칙 대신, 실질적으로 작동하며 스스로 복구하는 '시간을 두고 수렴하는 균등 보호'라는 철학적 성취를 제시합니다.

  • 01AWS API 일시적 지연에 따른 정합성 붕괴를 보장하기 위해 NACL 생성 후 최대 9초간 순회 확인하는 readback 루프 설계
  • 02Lambda 예약된 동시성(Reserved Concurrency)을 1로 활용하여 분산 동시 실행 제어 및 레이스 컨디션 원천 해결
  • 03전체 실패 상황을 방지하고 실패한 특정 계정만 분리해 5초 후 단 1회 집중 재시도하는 지능형 자율 복구 메커니즘 구축
  • 04불변 객체(int) 연산 오류와 비정상 종료 처리(SystemExit) 등 프로그래밍적 실수를 교정하며 투명한 모니터링 환경 확보
  • 05Botocore Adaptive 재시도 모드를 적용하여 대량 멀티 계정 API 스로틀링을 자동으로 완충 처리하도록 구현

+RECOMMENDATION

멀티 계정 환경에서 AWS NACL이나 보안 그룹 등 네트워크 인프라 자원을 다수의 람다 및 외부 트리거를 통해 대규모로 자동 제어하려는 데브옵스 및 보안 엔지니어에게 적극 추천합니다. 복잡한 분산 결함을 안전하게 방어하는 예외 처리 아키텍처 수립에 매우 훌륭한 나침반이 되어줄 것입니다.

The Problem

수십 개의 AWS 계정을 운영하는 환경에서 공격 IP를 신속하게 차단하기란 쉽지 않으며, 수동 처리는 누락과 지연을 유발했습니다. 이를 해결하고자 자동화 도구를 구축했으나 운영 과정에서 AWS API 실패, 상태 일관성 지연, 레이스 컨디션 등으로 인해 실제 NACL의 룰과 메타데이터 저장소(DynamoDB) 간의 정합성이 어긋나는 문제가 발생했습니다.

The Solution

NACL 적용 후 즉시 실제 생성 여부를 재확인하는 readback 검증 알고리즘을 도입하고 실패 시 DDB 기록을 방지했습니다. 레이스 컨디션을 제어하기 위해 Lambda 예약 동시성을 1로 제한하였으며, 1차 처리 중 누락된 계정들에 대해서만 5초 대기 후 1회 한정 즉시 재시도하는 자율 복구 흐름을 설계했습니다.

The Result

불가피한 API 오류나 스로틀링 현상을 botocore의 adaptive 재시도를 통해 완벽히 자동 흡수하게 되었고, SQS 메시지 처리 속도가 72초에서 7초 수준으로 단축되었습니다. 부분 실패가 감추어지는 현상을 방지하여 완벽하게 가시화했으며 실제 차단 상태와 관리 데이터의 일치율을 정밀하게 끌어올렸습니다.

Trade-off

람다 동시 실행 수를 1로 강제 차단하여 데이터 정합성 문제를 원천 해결했으나, 분당 처리 요구량이 매우 폭발적으로 증가하는 극단적인 시나리오에서는 SQS 큐의 적체로 인해 물리적 차단 시각이 약간 지연될 수 있는 구조적 한계가 존재합니다.

03

Key Concepts

Concept · 01

AWS NACL (Network Access Control List)

VPC 내의 서브넷 경계에서 인/아웃바운드 트래픽을 제어하는 상태 없는(Stateless) 방화벽 서비스입니다. 규칙 번호가 낮은 순서부터 엄격하게 평가되므로 순서와 한정된 규칙 개수를 최적화하여 설계하는 것이 무척 중요합니다.

  • 침해대응 전용 슬롯을 21번부터 50번까지 30개로 지정하여 보안 정책과의 충돌 위험을 제거함
  • AWS Service Quotas 한도 증설을 신청하여 네트워크 처리 비용 리스크를 통제하며 기본 20개에서 최대 40개 이상으로 확장해 운영함
Concept · 02

Reserved Concurrency (예약된 동시성)

특정 AWS Lambda 함수가 생성하고 동시에 유지할 수 있는 활성 인스턴스 개수의 한도를 명시적으로 예약 및 제안하는 메커니즘입니다. 다른 리소스의 호출 폭주 현상을 제어하거나 동시 제어로 발생하는 충돌을 방지하는 목적으로 사용합니다.

  • 동작 과정 중 발생하던 'sync_check'와 'update' 간의 타이밍 꼬임(Race Condition)을 원천 방어하고자 예약 동시성을 1로 격리 설정함
Concept · 03

Eventual Consistency (최종 정합성)

분산 데이터베이스 혹은 멀티 클라우드 리소스 시스템 전반에서 데이터 쓰기 작업이 일어날 때, 즉시 완전히 일치하는 것을 보장할 수 없으나 시간이 일정 정도 흐르면 모든 노드의 일관성이 보장된다는 설계 사상입니다.

  • NACL 생성 후 API 전파 지연 가능성에 대비하여 readback 검증 루프와 1회성 retry 방식을 연결해 최종적으로 동일한 상태로 수렴하도록 아키텍처를 유도함
Continue reading · same source

우아한형제들More from 우아한형제들

View all posts from 우아한형제들
  • 기술블로그 세 번째 책 《요즘 우아한 백엔드 개발》 출간

    KotlinApache KafkaElasticsearch
    3주 전
  • 배포 없이 앱과 로컬 웹을 잇다

    ProxyTunnelingWebSocket
    3주 전
  • BFF 서버에 SSE를 도입한 이유: 전시 서버의 통신 구조 재설계

    BFFSSEReact Query
    1개월 전
  • 기술이 없던 곳에 기술 더하기: 사내 해커톤 플랫폼 만들기

    AI-Assisted DevelopmentClaudeSpring Boot
    1개월 전
  • AI가 내 프롬프트를 흘려듣는 이유: 원리부터 다시 본 컨텍스트 엔지니어링

    LLMPrompt EngineeringContext Window
    1개월 전

Source

우아한형제들
우아한형제들
Engineering Blog

Published · July 16, 2026

Topics

AWS NACLAWS LambdaAmazon DynamoDBSecurity AutomationRace Condition