Kubernetes OPA Gatekeeper 우회

Reading time: 1 minute

이 페이지의 원래 저자는 Guillaume입니다.

잘못된 구성 악용

규칙 나열

개요를 파악하면 어떤 규칙이 활성화되어 있는지, 어떤 모드인지, 누가 이를 우회할 수 있는지 알 수 있습니다.

CLI를 사용하여

bash
$ 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

ConstraintTemplateConstraint는 Open Policy Agent (OPA) Gatekeeper에서 Kubernetes 리소스에 대한 규칙을 시행하는 데 사용될 수 있습니다.

bash
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

GUI를 사용하여

Graphic User Interface는 Gatekeeper Policy Manager를 통해 OPA 규칙에 접근할 수 있습니다. 이는 "Kubernetes 클러스터에서 OPA Gatekeeper 정책의 상태를 보기 위한 간단한 읽기 전용 웹 UI"입니다.

노출된 서비스를 검색합니다:

bash
$ 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

참고문헌