Kubernetes OPA Gatekeeper 우회
Reading time: 1 minute
이 페이지의 원래 저자는 Guillaume입니다.
잘못된 구성 악용
규칙 나열
개요를 파악하면 어떤 규칙이 활성화되어 있는지, 어떤 모드인지, 누가 이를 우회할 수 있는지 알 수 있습니다.
CLI를 사용하여
$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations constraints.gatekeeper.sh/v1beta1 false K8sMandatoryAnnotations
k8smandatorylabels constraints.gatekeeper.sh/v1beta1 false K8sMandatoryLabel
constrainttemplates templates.gatekeeper.sh/v1 false ConstraintTemplate
ConstraintTemplate와 Constraint는 Open Policy Agent (OPA) Gatekeeper에서 Kubernetes 리소스에 대한 규칙을 시행하는 데 사용될 수 있습니다.
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels
GUI를 사용하여
Graphic User Interface는 Gatekeeper Policy Manager를 통해 OPA 규칙에 접근할 수 있습니다. 이는 "Kubernetes 클러스터에서 OPA Gatekeeper 정책의 상태를 보기 위한 간단한 읽기 전용 웹 UI"입니다.

노출된 서비스를 검색합니다:
$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'
제외된 네임스페이스
위 이미지에서 설명한 바와 같이, 특정 규칙은 모든 네임스페이스나 사용자에 대해 보편적으로 적용되지 않을 수 있습니다. 대신, 화이트리스트 기반으로 작동합니다. 예를 들어, liveness-probe
제약 조건은 지정된 다섯 개 네임스페이스에 적용되지 않습니다.
우회
Gatekeeper 구성에 대한 포괄적인 개요를 통해 권한을 얻기 위해 악용될 수 있는 잠재적인 잘못된 구성을 식별할 수 있습니다. 규칙이 적용되지 않는 화이트리스트 또는 제외된 네임스페이스를 찾아 그곳에서 공격을 수행하십시오.
Abusing Roles/ClusterRoles in Kubernetes
ValidatingWebhookConfiguration 악용
제약 조건을 우회하는 또 다른 방법은 ValidatingWebhookConfiguration 리소스에 집중하는 것입니다 :
Kubernetes ValidatingWebhookConfiguration