LabHub

KCA — Kyverno 인증 어소시에이트 · 정책 운영 · 실습

승격 절차와 정책 없이 되는 것

LabHub 에서 이어서 보기

목표

정책을 관찰에서 강제로 승격하는 절차를 매니페스트와 스크립트로 구현하고, 같은 종류의 통제를 정책 엔진 없이 PSA 라벨만으로 세워 두 접근의 경계를 확인합니다.

왜 중요한가

정책 도구를 잘 쓰는 것과 정책을 잘 운영하는 것은 다른 기술입니다. 운영에서 중요한 것은 규칙의 정교함이 아니라 "지금 이 규칙을 강제로 올려도 되는가" 를 판단하는 절차입니다. 그 판단은 리포트에서 나오고, 절차는 스크립트로 굳혀야 사람이 바뀌어도 유지됩니다. 동시에 반대편 질문도 필요합니다. 파드 보안 수준처럼 표준화된 검사는 네임스페이스 라벨 두 줄로 끝나므로, 그런 것까지 정책 엔진에 넣으면 운영할 컴포넌트만 늘어납니다. 이 실습에서 두 방식을 나란히 세워 보면 그 경계가 분명해집니다.

단계

1. /root/kca-ops/ 디렉터리를 만들고 policy-baseline.yaml 에 kind ClusterPolicy, metadata.name kca-baseline 을 쓰세요. spec.validationFailureActionAudit 으로 두고 spec.validationFailureActionOverridesEnforcekca-prod, Audit 으로 kca-dev 를 지정하는 두 항목을 넣으세요. 규칙도 최소 하나 이상 있어야 합니다.
2. 같은 파일에 spec.webhookConfiguration.timeoutSeconds20, spec.webhookConfiguration.failurePolicyIgnore 로 두세요. deprecated 인 spec.webhookTimeoutSecondsspec.failurePolicy 는 쓰지 마세요.
3. 같은 파일에 spec.backgroundtrue, spec.admissiontrue, spec.applyRulesAll 로 두고 규칙을 두 개 이상으로 만드세요.
4. /root/kca-ops/policyexception.yaml 에 apiVersion kyverno.io/v2beta1, kind PolicyException, metadata.name kca-allow-monitoring 을 쓰세요. spec.exceptions[0].policyNamekca-baseline, ruleNames 에는 1단계에서 만든 규칙 이름을 넣고, spec.match.any[0].resources.namespaceskca-monitoring, namesprometheus-* 를 넣으세요.
5. /root/kca-ops/promote.sh 를 실행 권한이 있는 셸 스크립트로 만드세요. 안에는 kyverno apply--resource 를 쓰는 로컬 검증, PolicyReport 확인, 웹훅 등록이나 UpdateRequest 확인, Enforce 로 올리는 단계, 그리고 실패 시 0 이 아닌 코드로 끝내는 처리가 모두 들어가야 합니다.
6. 클러스터에 네임스페이스 kca-prod 를 만들고 라벨 pod-security.kubernetes.io/enforce=restrictedpod-security.kubernetes.io/enforce-version 을 붙이세요. 네임스페이스 kca-devpod-security.kubernetes.io/warn=baseline 만 붙이고 enforce 라벨은 붙이지 마세요.
7. 네임스페이스 kca-prod 에 Deployment kca-hello 를 실제로 만드세요. 파드 수준 securityContext.runAsNonRoottrue, securityContext.seccompProfile.typeRuntimeDefault, 컨테이너 수준 securityContext.allowPrivilegeEscalationfalse, capabilities.drop 에는 ALL 이 들어가야 합니다. 그리고 네임스페이스 kca-monitoring 을 라벨 pod-security.kubernetes.io/enforce=privileged 와 함께 만드세요.

참고

단계 7개

  1. 네임스페이스별 차등 적용
  2. webhookConfiguration 으로 이관
  3. background·admission·applyRules
  4. PolicyException 으로 정당한 예외
  5. 승격 체크리스트 스크립트
  6. PSA 라벨로 두 등급 만들기
  7. restricted 를 통과하는 워크로드