본문 바로가기
IT & Tech 정보

🧠 “Policy-as-Code 기반 배포 승인 자동화: OPA Gatekeeper + ArgoCD로 GitOps 보안 강화하기”

by 지식과 지혜의 나무 2025. 5. 29.
반응형



🎯 문제 인식

GitOps 기반 배포는 선언적이고 자동화된 장점이 있지만, 다음과 같은 문제를 수반합니다:
• 누가, 어떤 리소스를, 어떤 조건에서, 어느 네임스페이스에 배포했는지에 대한 검증 기준이 불명확
• 특정 정책(예: 이미지 레지스트리 제한, configMap 보안성 등)을 사람이 눈으로 리뷰해야 하는 상황 발생
• 배포 승인 및 거절을 정성적 판단에 의존

이제는 **“배포 정책 자체를 코드화하여 자동 판단”**하는 시스템이 필요합니다.



🔧 핵심 전략: Policy-as-Code + GitOps

“코드로 정의된 보안 정책이 실시간으로 배포를 허용/차단하도록 한다.”

이 구조는 다음과 같이 구성됩니다:

구성 요소 설명
ArgoCD GitOps 배포 엔진
OPA Gatekeeper Open Policy Agent 기반 Kubernetes 정책 컨트롤러
Constraint Templates / Constraints 조직 보안 규칙 정의 (예: 특정 네임스페이스에만 배포 가능)
CI Hook + Slack 알림 위반 시 자동 알림 및 리뷰어 지정




🧪 예시 정책: Only Signed Images 배포 허용

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredSignatures
metadata:
  name: signed-images-only
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]
  parameters:
    trustedAuthorities:
      - cosign.sigstore.dev

이 정책은 cosign으로 서명된 컨테이너 이미지만 Kubernetes에 배포될 수 있도록 강제합니다.



🧪 예시 정책: 네임스페이스 제한

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAllowedNamespaces
metadata:
  name: only-allowed-namespaces
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Deployment"]
  parameters:
    allowedNamespaces: ["team-data", "team-ai"]

이 정책은 인가된 네임스페이스 외에는 배포 자체가 불가능하게 제한합니다.



🔄 ArgoCD와 통합 예시

ArgoCD는 Kubernetes 리소스를 적용하기 전, OPA Gatekeeper의 정책 위반 여부를 확인할 수 있으며, 정책 위반 시 Sync가 실패합니다.

ArgoCD Application 예시

spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - Validate=true

이렇게 설정해두면 정책에 위반되는 배포는 자동으로 중단되며 Slack 등으로 알림을 받을 수 있습니다.



🔄 Slack 자동 알림 연동 예시

OPA 위반 시, Gatekeeper Audit + Kyverno + Slack Webhook으로 자동 알림 전송:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: notify-on-policy-failure
spec:
  rules:
    - name: alert-when-policy-violated
      match:
        resources:
          kinds:
            - Pod
      generate:
        kind: Notification
        name: violation-alert
        data:
          message: "🚨 Unauthorized deployment detected!"




🧠 확장 전략
• 팀별 정책 템플릿화: 팀별 Constraint 템플릿 정의 → 중앙 관리 + Git PR 리뷰
• Pull Request 기반 정책 변경 승인: Policy 자체를 GitOps 방식으로 관리
• Slack Bot으로 정책 승인 요청 + 실행: 정책 예외 승인 요청 자동화



✅ 기대 효과

항목 설명
보안 일관성 강화 사람 대신 코드가 정책 위반 여부를 판단
GitOps 보안 자동화 배포 흐름 속에 자동 승인/거절 내장
SRE 피로도 감소 반복적 정책 리뷰 업무 제거
감사 추적 용이성 모든 정책 위반/승인 이력 Git 및 Slack 기록화




📌 결론

“배포 정책은 사람이 판단하는 게 아니라 코드가 실행해야 한다.”

OPA Gatekeeper는 GitOps의 선언성과 Policy-as-Code의 엄격성을 결합해,
사람 없이도 조직의 보안 규칙을 배포 파이프라인에 녹여내는 고급 전략을 제공합니다.

반응형