본문으로 건너뛰기
현장 노트

E6 · 컴투스플랫폼 · 2023.02 – 2026.02

같은 지적이 다시 나오지 않게

영향도로 나누고, 대안으로 합의하고, 코드 기본값으로 막다

60% → 85%+

  • CSPM
  • Terraform
  • GitLab CI/CD
  • Jenkins
  • 협업
서비스 영향 없음서비스 영향 있음위험 높음위험 낮음지적지적지적지적지적지적지적지적지적지적차단개발팀특정 포트 전면 차단?IP 제한 + WAFTerraform 모듈기본값60%85%감사 조치율
게이지가 60%에서 85%로 차오릅니다.

한 줄 요약

보안 지적을 서비스 영향도로 나누고 보완 통제로 합의하며, 반복 지적은 코드 기본값으로 막아 감사 조치율을 60%에서 85% 이상으로 올렸습니다.

배경

보안팀이 CSPM(클라우드 설정 점검 도구)으로 4개 클라우드를 점검해 지적 목록을 주면, 제가 주 담당자로서 분류와 조치를 주도했습니다.

첫 해 조치율은 약 60%였습니다. 라이브 서비스에 영향을 줄 수 있다는 이유로 조치가 미뤄지는 항목이 있었기 때문입니다.

실행

① 서비스 영향도 기준으로 분류

칸을 누르면 처리 방식이 나옵니다.

서비스 영향 없음서비스 영향 있음
위험 높음
위험 낮음

위험이 높고 서비스 영향이 없으면 즉시 조치합니다.

실행

② 막을 수 없을 때는 보완 통제로 합의

특정 포트를 전면 차단하라는 지적이 있었지만, 그 포트를 서비스가 실제로 쓰고 있었습니다.

“차단 / 유지” 둘 중 하나가 아니라, 위험을 줄이는 다른 방법을 제시했습니다.

  • 접근 출발지를 필요한 IP 대역으로만 제한
  • 웹 경로에는 WAF(웹 방화벽) 규칙 추가

노출 범위가 “인터넷 전체”에서 “필요한 대역”으로 줄어 보안팀도 받아들였고, 개발팀은 서비스 변경 없이 적용할 수 있었습니다.

실행

③ 반복 지적은 Terraform 기본값으로

지적을 사람이 매번 고치면, 새 리소스를 만들 때 같은 문제가 다시 생깁니다. 그래서 원인을 “사람이 깜빡함”이 아니라 “기본값이 안전하지 않음” 으로 보고, Terraform 모듈의 기본 설정 자체를 바꿨습니다. 코드 리뷰 체크리스트도 함께 만들었습니다.

기본값 예시(설명용)

# 관리 포트를 인터넷 전체(0.0.0.0/0)에 여는 것을 코드 단계에서 막음
variable "admin_ingress_cidrs" {
  type = list(string)
  validation {
    condition     = !contains(var.admin_ingress_cidrs, "0.0.0.0/0")
    error_message = "관리 포트에 0.0.0.0/0 허용 금지. 필요한 대역만 지정하세요."
  }
}

# 디스크는 기본으로 암호화
resource "aws_ebs_volume" "this" {
  encrypted = true
  # ...
}

④ 배포 파이프라인에 관문 추가

GitLab CI/CD와 Jenkins 파이프라인에 Terraform validate(문법·설정 검사)와 plan(변경 미리보기) 단계를 필수 관문으로 넣었습니다. 모듈의 검증 조건에 걸리는 변경은 이 단계에서 실패해 배포로 넘어가지 못합니다.

개발자 코드 변경 → terraform validate (실패하면 배포 중단) → terraform plan → 리뷰·체크리스트 확인 → apply 배포

결과

감사 조치율이 첫 해 약 60%에서 이듬해 85% 이상으로 올랐습니다.

새로 만드는 리소스는 처음부터 안전한 설정으로 시작합니다.

배운 점

보안 담당자가 “안 된다”로 끝내면 대화가 끝나고, 대안을 들고 가야 실제로 조치가 일어납니다.

한 번 조치하는 것보다 다시 생기지 않는 구조가 중요하고, 그 구조는 개발팀이 받아들일 수 있을 때 유지됩니다.

관련 저장소

이어지는 경험

Open to work · 클라우드 인프라/보안