이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

Kubernetes/Kubernetes 이론

Pod Security Policy deprecated

이쿠우우 2021. 11. 19. 11:11
반응형
 

Pod Security Policy deprecated

 

목표

Pod Security Policy가 1.25 version 부터 deprecated 된다고 함...
해당 원인에 대애 알아봄.
 

 

공식 관련 내용 확인

1.22 version cluster에서 PSP 사용 시 Warning 발생

 

결론 요약

kubernetes 1.25 version PSP는 더 이상 지원되지 않음.
 

Deprecated 이유

 
[1. PSP Error 디버깅 문제]
PSP 관련 Error 디버깅에 문제가 있다고 판단함.
PSP를 적용한 후 kubernetes를 운영하다가 에러가 발생하면
느낌이 PSP로 인한 문제인 것 같은데 어떤 PSP 정책 때문에 발생한 것인지 
디버깅하는데 매우 어려운 문제점이 있었다고 함.
 
[2. PSP 배포 및 로직의 난이도 문제]
배포 및 PSP 관련 Flow등 PSP 사용 난이도에 문제가 있다고 함.
배포 자체로 PSP admission controller 활성화, clusterRule ,ClusterRuleBinding 등 
복잡한 과정을 거쳐야 사용 가능함으로 deprecation에 주된 원인으로 뽑히기도 함.
 
[3. PSP 우선순위 문제]
그리고 다수의 PSP 정책이 있는 경우 어떤 PSP 정책의 우선순위가 높은건지 파악이 안되기도함.
공식 문서에는 알파벳순서로 정책 우선순위가 정해진다고 하시만
실제로 PSP를 동일한 clusterRule에 여러개 중복으로 적용한 후 
test해본 결과 어쩔때는 알파벳 순으로 적용되고 또 어쩔때는 PSP 정책 생성 순으로 적용되는 등
많은 문제를 직업 확인하긴 했었음.
 

PSP 대안

PSP가 deprecation 된 이후는 몇가지 방법을 대안으로 사용할 수 있다고 함.

Validating Admission Webhook

자세한 설명은 validating admission webhook에서 함.

validating(유효성검증)
Kube-apiserver로 온 Request(yaml 혹은 json 형식)가 
생성될 수 있는지 확인하는 단계.
 
[사용 예시]
pod를 생성할 때 privileged 권한을 가지고 있으면
host의 커널 자원에 접근할 수가 있어서 보안상 굉장히 취약해짐
악의적인 사용자가 고의로 privileged 권한을 가진 Pod를 배포해서
해당 Pod를 통해 host를 공격할 수도 있음.
그래서 Pod를 생성할 때 privileged 권한을 가지고 있으면
Pod 생성이 안되게 막아야 하는데 
이런 역할을 수행할 수 있는 단계가 validating Admission 단계임
PodSecurityPolicy 도 해당 단계에 속해있는 Admission Controller plugin임.
 
공식 사이트에서 대안을 Validating Admission Webhook을 사용하라고 되어있을 것을 보면
사용자가 수동으로 webhook을 만들어서 알아서 Validating하라는 건가...라는 의미로 해석됨.
사용자 나름의 rule을 가진 webhook을 수동으로 만들어야하는거라 
좋은 대안으로 생각되진 않지만 일단 공식적으로 대안으로 말하는 기능임.
수동으로 webhook을 생성하기에는 무리가 있으니
Addon을 통해 진행하는 방법이 있음
아래에서 소개하는 3개의 Addon 역시 본질은 Validating Admission Webhook을 기반으로 동작함.
 

OPA/Gatekeeper

수동으로 validating Admissin Webhook을 생성하기 힘들다면
해당 Addon을 사용할 수 있음
OPA는 kubernetes 뿐만 아니라 다른 application에도 적용할 수 있는 솔루션으로
경량 범용 정책 엔진 Addon임.
해당 링크를 통해 자세한 사용법을 알 수 있음.

 

 

 

K-Rail

kubernetes 전용 정책 엔진 addon.
해당 addon역시 validating Admissin Webhook을 기반으로 만들어져있음.
해당 링크를 통해 자세한 사용법을 알 수 있음.
https://github.com/cruise-automation/k-rail

 

 

Kyverno

kubernetes 전용 정책 엔진 addon.
해당 addon역시 validating Admissin Webhook을 기반으로 만들어져있음.
해당 링크를 통해 자세한 사용법을 알 수 있음.

 

 

 

Pod Security Admission(PSA)

kubernetes에서는 psp 대체로 psa를 출시했음.
2021 8월 경 출시한 admission controller로 
psp가 mutating admission과 validating admission hook point를 사용했다면
psa는 주로 validating admission hook point를 사용해서 동작하는
admission controller임.
psp에서 psa로 migration 기능도 제공한다고 함.
PSA에 대해 추후 리서치가 필요해 보임.
PSA참고

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

반응형