목록 보기
멀티 어카운트 NACL 차단 자동화 도구 운영 및 개선 경험
데브옵스

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

우아한 형제들
우아한 형제들
2026년 7월 16일

두줄요약

멀티 AWS 계정 환경에서 NACL 차단 자동화를 운영하며 정합성 불일치와 race condition을 개선한 경험을 다뤘습니다. 반환값 검증, 재시도, 실패 격리로 부분 실패가 숨지 않도록 도구를 다듬었습니다.

문제 상황

  • 멀티 AWS 계정 환경에서 공격 IP 차단을 수동으로 처리할 때 누락과 지연이 발생하는 운영 문제
  • NACL 규칙과 DynamoDB 기록이 어긋나며 정합성 불일치가 누적되는 상태
  • 차단, 해제, 일괄 해제, 점검까지 포함한 자동화 도구 운영 중 숨은 실패와 경쟁 상태가 드러남

원인 분석

  • NACL 생성 실패를 반환값으로만 처리하고 예외로 올리지 않아 DDB 기록까지 진행되는 흐름
  • 계정 순회 중 한 계정의 불일치를 람다 전체 종료로 처리해 운영 흐름이 불명확해지는 구조
  • 일부 실패 값이 누적되지 않아 부분 실패가 성공 메시지로 가려지는 결과
  • 대량 삭제 과정에서 재시도와 실패 보고가 없어 잔여 룰이 남는 상황
  • SQS 기반 병렬 처리 타이밍으로 인해 다른 요청과 겹치며 sync_check가 중간 상태를 읽는 race condition

해결 방법

  • NACL 생성 후 describe_network_acls로 실제 등록 여부를 재조회하는 readback 루프 추가
  • 반환값이 False이면 예외를 발생시켜 DDB 기록을 차단하는 가드 적용
  • exit() 대신 continue와 return 중심으로 흐름을 바꿔 계정 단위로 실패를 격리
  • 실패 카운터와 반환값을 명시적으로 누적해 부분 실패가 슬랙에 드러나도록 수정
  • alldelete에 2차 재시도와 잔여 룰 실패 보고를 추가해 정직한 상태 노출

적용해볼 점

  • 자동화 결과를 저장소와 외부 시스템 양쪽에서 모두 검증하는 정합성 점검
  • 부분 실패를 성공으로 덮지 않도록 반환값과 알림 경로를 분리
  • 멀티 계정, 멀티 요청 환경에서는 동시성 제어와 재시도 정책을 함께 설계

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...