PaaS/Kubernetes

Kubernetes PSP(Pod Security Policies)가 Deprecated가 되면 앞으로는 어떻게 보안레이어를 적용해야 할까?

armyost 2022. 7. 1. 06:52
728x90

https://www.cncf.io/blog/2022/06/30/how-to-secure-kubernetes-pods-post-psps-deprecation/

 

How to secure Kubernetes Pods post-PSPs deprecation | Cloud Native Computing Foundation

Guest post originally published on the ARMO blog by Amir Kaushansky Kubernetes pods are the basic building blocks of Kubernetes. It's managing one or more tightly coupled application containers…

www.cncf.io

 

파드시큐리티폴리시(PodSecurityPolicy)는 쿠버네티스 v1.21부터 더 이상 사용되지 않으며, v1.25에서 제거될 예정이다. 

 

기존 PSP의 정책들

제어 측면 필드 이름
특권을 가진(privileged) 컨테이너의 실행 privileged
호스트 네임스페이스의 사용 hostPID, hostIPC
호스트 네트워킹과 포트의 사용 hostNetwork, hostPorts
볼륨 유형의 사용 volumes
호스트 파일시스템의 사용 allowedHostPaths
특정 FlexVolume 드라이버의 허용 allowedFlexVolumes
파드 볼륨을 소유한 FSGroup 할당 fsGroup
읽기 전용 루트 파일시스템 사용 필요 readOnlyRootFilesystem
컨테이너의 사용자 및 그룹 ID runAsUser, runAsGroup, supplementalGroups
루트 특권으로의 에스컬레이션 제한 allowPrivilegeEscalation, defaultAllowPrivilegeEscalation
리눅스 기능 defaultAddCapabilities, requiredDropCapabilities, allowedCapabilities
컨테이너의 SELinux 컨텍스트 seLinux
컨테이너에 허용된 Proc 마운트 유형 allowedProcMountTypes
컨테이너가 사용하는 AppArmor 프로파일 어노테이션
컨테이너가 사용하는 seccomp 프로파일 어노테이션
컨테이너가 사용하는 sysctl 프로파일 forbiddenSysctls,allowedUnsafeSysctls

 

앞으로 Kubernetes는 PSP와는 다른 컨셉으로 보안을 접근할 예정입니다. 셀수없이 많은 자잘한 정책들보다는(조합하기 어렵고 관리어려움) 3개의 기준(privileged, baseline, restricted)으로 나누어 정책관리를 제시합니다.

 

  • Privileged
    Rule이 없어 제한하지 않는 정책입니다. POD를 특별한 권한으로 생성 및 관리할 수 있습니다.

  • Baseline
    기본적인 Rule의 집합입니다. OS의 유해한 기능과 같은 것들을 제어합니다. 중간 단계의 보안정첵을 제공하고 있습니다. Test환경등에 적합합니다.

  • Restricted
    POD보안을 강화하는 BestPractice를 제공합니다.

 

그리고 기존의 Pod Security Admission 또한 PSP를 상속받은 리소스이므로 Open Policy Agent (OPA) 나 Keyverno 와 같은 custom admission controllers 를 고려해봐야 한다.