48. 컴플라이언스 애즈 코드 (Compliance as Code)

⚠️ 이 문서는 클라우드 환경에서 수시로 인프라가 생성/소멸하는 속도를 사람이 일일이 감사(Audit)하기 불가능해짐에 따라, 회사의 보안 규정이나 법적 규제(ISMS, HIPAA 등)를 소프트웨어 코드로 작성하여 인프라 생성 전/후에 자동으로 검사하고 차단하는 '컴플라이언스 애즈 코드(Compliance as Code)' 사상을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: "모든 데이터베이스는 암호화되어야 한다"라는 두꺼운 종이 규정집의 문장을, 기계가 이해할 수 있는 스크립트 코드(예: Rego 정책 언어)로 번역하여 시스템 파이프라인에 이식하는 것이다.
  2. 가치: 개발자가 실수로 퍼블릭(Public) 접근이 허용된 AWS S3 버킷을 생성하려고 할 때, 보안팀이 나중에 문서를 보고 지적하는 것이 아니라, 배포를 누르는 즉시 코드가 규제를 위반했다며 생성을 1초 만에 원천 차단(Shift-Left)한다.
  3. 기술 체계: OPA(Open Policy Agent), AWS Config, HashiCorp Sentinel 같은 정책 엔진(Policy Engine)을 활용하여, IaC(Infrastracture as Code) 템플릿의 속성값을 배포 파이프라인(CI/CD) 상에서 자동 검증한다.

Ⅰ. 수동 컴플라이언스(규제 점검)의 붕괴

클라우드 네이티브 시대에는 전통적인 보안 감사 방식이 통하지 않는다.

  1. 종이 문서 감사의 한계:
    • 과거에는 보안팀이 엑셀 체크리스트를 들고 다니며 "방화벽 포트 닫혔나요? 패스워드 8자리 이상인가요?"라고 서버 관리자에게 물어보고 사인(Sign)을 받았다.
  2. 클라우드의 속도와 휴먼 에러:
    • 오늘날 개발자들은 테라폼(Terraform) 코드 한 줄로 하루에도 수십 번씩 인프라를 지우고 새로 만든다.
    • 단 한 명의 개발자가 실수로 PublicAccess = True라고 코딩하는 순간, 회사의 수백만 건 고객 정보가 인터넷에 노출되며, 보안팀은 이 속도를 수동으로 따라잡을 수 없다.
  3. Compliance as Code (CaC)의 등장:
    • 감사(Audit)와 규제(Compliance) 자체를 소프트웨어 코드로 탈바꿈시켜, 인프라 코드(IaC)가 실행되기 전에 기계 대 기계로 맞붙어 자동으로 규정 위반을 스캔하게 만드는 패러다임 전환이다.

📢 섹션 요약 비유: 고속도로 톨게이트에서 사람이 일일이 화물차 무게를 달고 종이 규정집과 대조하는 방식(수동 감사)을 버리고, 도로 바닥에 센서(코드)를 깔아 규정 중량 초과 트럭이 지나가면 자동으로 차단기(배포 실패)가 내려오게 만드는 시스템 혁신과 같습니다.


Ⅱ. 컴플라이언스 애즈 코드의 작동 원리 (CI/CD 파이프라인)

코드가 코드를 감시하는 24시간 무인 경찰 시스템이다.

  1. 정책의 코드화 (Policy Definition):
    • 보안 담당자는 OPA의 언어인 Rego 등을 이용해 "S3 버킷 생성 시 acl 속성은 반드시 private이어야 한다"는 룰을 코드로 작성해 저장소에 둔다.
  2. 자동화된 배포 차단 (Preventive Control):
    • 개발자가 인프라 코드를 작성하고 Git에 Push하여 배포(Apply)하려는 순간, CI/CD 파이프라인 중간에 위치한 '정책 엔진'이 가로챈다.
    • ┌─────────────────────────────────────────────────────────┐ │ [Developer: IaC 코드 (Public S3)] --> [CI/CD 파이프라인] │ │ │ (가로채기) │ │ [Policy Engine (OPA)] │ │ │ (규정 위반!) │ │ [배포 실패 및 에러 반환]│ └─────────────────────────────────────────────────────────┘
  3. 운영 중인 인프라 감시 (Detective Control):
    • 이미 배포된 인프라도 누군가 수동으로 AWS 콘솔에 들어가 설정을 바꿀 수 있다. CaC 도구(예: AWS Config)는 24시간 인프라 상태를 폴링하여 위반 상태가 적발되면 자동으로 롤백(Remediation)시킨다.

📢 섹션 요약 비유: 맞춤법 검사기가 켜진 문서 편집기(정책 엔진)에서 글(인프라 코드)을 쓸 때, 회사의 금지어를 입력하는 순간 글씨가 쳐지지 않거나 빨간 줄이 그어져 실수로라도 외부에 잘못된 문서가 나가는 것을 원천 봉쇄하는 원리입니다.


Ⅲ. 도입 가치와 DevSecOps의 완성

CaC는 보안과 개발의 갈등을 근본적으로 해결한다.

  1. 보안의 병목 현상 해소 (Agility + Security):
    • 개발팀은 보안팀의 승인을 받기 위해 며칠을 기다릴 필요 없이, 코드를 돌려보고 에러가 안 나면 규정을 완벽히 지킨 것이므로 즉시 배포할 수 있어 극도의 민첩성을 얻는다.
  2. 지속적 감사 (Continuous Auditing):
    • 일 년에 한두 번 하던 정기 감사가 1년 365일 실시간 자동 감사 체계로 바뀐다.
  3. DevSecOps의 뼈대:
    • 개발(Dev), 보안(Sec), 운영(Ops)이 하나의 파이프라인 안에서 투명하게 융합되며, 시프트 레프트(Shift-Left) 사상을 인프라 보안에 완벽하게 구현하는 핵심 도구가 된다.

📢 섹션 요약 비유: 교통경찰(보안팀)이 길거리에서 불심검문을 하느라 차(배포 속도)가 막히는 대신, 자동차 자체에 속도제한 엔진(CaC)을 달아주어 운전자(개발자)가 아무리 액셀을 밟아도 절대 규정 속도를 넘지 못하게 함으로써, 안전과 뻥 뚫린 도로라는 두 마리 토끼를 모두 잡는 방법입니다.