오늘의 기술 토픽

Policy as Code

이번 브리프는 Policy as Code를 중심으로 클라우드 네이티브 환경에서 정책을 코드로 관리하는 흐름을 정리한다. Kyverno, OPA/Gatekeeper 같은 정책 엔진과 Crossplane 같은 리소스 관리 도구가 함께 다뤄지며, 수동 검토 대신 자동화된 검증과 강제가 표준이 되어가는 방향을 짚는다. 실제 밋업 발표 없이, 관련 생태계를 학습하고자 하는 독자를 위한 요약 자료로 구성했다.

🔑 핵심 요점

  • Policy as Code는 보안, 컴플라이언스, 리소스 규칙을 코드로 작성해 자동으로 검증하고 강제하는 방식이다.
  • Kyverno는 쿠버네티스 네이티브 문법(YAML)으로 정책을 작성할 수 있어 진입 장벽이 낮다.
  • OPA(Open Policy Agent)와 Rego 언어는 범용 정책 엔진으로 쿠버네티스뿐 아니라 다양한 시스템에 적용 가능하다.
  • Crossplane은 인프라를 쿠버네티스 리소스처럼 선언적으로 관리하며 정책 기반 거버넌스와 함께 쓰이는 경우가 많다.
  • 정책을 코드로 관리하면 Git 기반 리뷰, 버전 관리, CI/CD 파이프라인 통합이 가능해진다.
  • 플랫폼 엔지니어링 관점에서 Policy as Code는 ‘셀프서비스 + 가드레일’ 모델을 실현하는 핵심 도구로 자리잡고 있다.

🛠 핵심 기술 쉽게 이해하기

Policy as Code

조직의 보안, 컴플라이언스, 운영 규칙을 코드(주로 YAML이나 전용 정책 언어)로 작성하고, 이를 시스템이 자동으로 검증·강제하도록 만드는 접근 방식이다. 사람이 수동으로 리뷰하던 규칙을 코드화해 일관성과 반복 가능성을 높인다.

왜 필요한가 — 수작업 검토는 실수와 누락이 생기기 쉽고 확장이 어렵기 때문에, 정책을 코드로 관리해 자동화하고 감사 가능하게 만들기 위해 사용한다.

발표에서는 — 이번 브리프의 핵심 주제로 다뤄지며, 관련 생태계 도구인 Kyverno, OPA, Crossplane과의 연계 속에서 소개된다.

Kyverno

쿠버네티스 리소스를 검증(validate), 변형(mutate), 생성(generate)할 수 있는 정책 엔진으로, 별도 언어 없이 쿠버네티스에 익숙한 YAML 문법으로 정책을 작성한다.

왜 필요한가 — 쿠버네티스 사용자가 새로운 언어를 배우지 않고도 정책을 빠르게 도입할 수 있게 해준다.

발표에서는 — Policy as Code를 실제로 구현하는 대표 도구 중 하나로 언급되며, 쿠버네티스 네이티브 워크플로우에 잘 맞는 선택지로 소개된다.

OPA (Open Policy Agent)

Rego라는 전용 정책 언어를 사용해 다양한 시스템(쿠버네티스, API 게이트웨이, CI 파이프라인 등)에 범용적으로 정책을 적용할 수 있는 CNCF 프로젝트다. 쿠버네티스에서는 Gatekeeper를 통해 어드미션 컨트롤러로 동작한다.

왜 필요한가 — 쿠버네티스에 국한되지 않고 여러 시스템에 동일한 정책 엔진을 재사용하고 싶을 때 사용한다.

발표에서는 — Kyverno와 대비되는 범용 정책 엔진으로서, Policy as Code 생태계의 또 다른 축으로 다뤄진다.

Crossplane

쿠버네티스 API를 확장해 클라우드 인프라(데이터베이스, 네트워크, 스토리지 등)를 쿠버네티스 커스텀 리소스처럼 선언적으로 정의하고 관리할 수 있게 해주는 오픈소스 프로젝트다.

왜 필요한가 — 인프라 프로비저닝을 쿠버네티스 워크플로우 안으로 통합해 플랫폼 팀이 셀프서비스 인프라를 제공하기 위해 사용한다.

발표에서는 — 정책 기반 거버넌스와 결합되는 인프라 관리 도구로서 관련 기술로 언급된다.

🧭 추구 방향과 흐름

  • 플랫폼 엔지니어링과 셀프서비스 — 정책을 코드화해 자동으로 강제함으로써, 개발자가 별도 승인 없이도 정해진 가드레일 안에서 리소스를 셀프서비스로 생성할 수 있게 하는 방향이 강조된다. Crossplane과 정책 엔진의 조합이 이런 흐름을 뒷받침한다.
  • Shift-Left 보안·컴플라이언스 — 정책 검증을 배포 이전 단계(CI/CD, Git 리뷰)로 앞당겨 문제를 조기에 발견하는 shift-left 트렌드가 Policy as Code의 핵심 동기로 다뤄진다.
  • 정책 엔진의 표준화 경쟁 — Kyverno와 OPA/Gatekeeper 같은 서로 다른 접근 방식의 정책 엔진이 공존하며, 쿠버네티스 네이티브 문법과 범용 정책 언어 사이에서 생태계가 표준을 모색해가는 방향이 나타난다.

🚀 바로 활용하기

  1. 로컬 쿠버네티스 클러스터(minikube, kind 등)에 Kyverno를 설치하고 기본 제공 정책 예제를 적용해본다.
  2. OPA의 Rego 플레이그라운드(공식 문서 내 튜토리얼)에서 간단한 정책을 작성해보며 문법을 익힌다.
  3. Crossplane 공식 문서의 Getting Started를 따라 클라우드 리소스를 하나 선언적으로 프로비저닝해본다.
  4. 기존 프로젝트의 배포 매니페스트에 Kyverno 정책을 적용해 실제로 위반 사례를 감지해본다.

🔗 참고 자료