Kubernetes Kyverno bypass
Reading time: 1 minute
이 페이지의 원래 저자는 Guillaume
정책 잘못 구성 악용
규칙 나열
개요를 파악하면 어떤 규칙이 활성화되어 있는지, 어떤 모드인지, 누가 이를 우회할 수 있는지 알 수 있습니다.
bash
$ kubectl get clusterpolicies
$ kubectl get policies
제외된 항목 나열
각 ClusterPolicy 및 Policy에 대해 제외된 엔티티 목록을 지정할 수 있습니다. 포함 항목은 다음과 같습니다:
- 그룹:
excludedGroups
- 사용자:
excludedUsers
- 서비스 계정 (SA):
excludedServiceAccounts
- 역할:
excludedRoles
- 클러스터 역할:
excludedClusterRoles
이러한 제외된 엔티티는 정책 요구 사항에서 면제되며, Kyverno는 이들에 대해 정책을 시행하지 않습니다.
예시
하나의 clusterpolicy 예제를 살펴보겠습니다:
$ kubectl get clusterpolicies MYPOLICY -o yaml
제외된 엔티티를 찾으세요:
yaml
exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*
클러스터 내에서 여러 추가 구성 요소, 운영자 및 애플리케이션은 클러스터 정책에서 제외될 필요가 있을 수 있습니다. 그러나 이는 특권 있는 엔터티를 대상으로 하여 악용될 수 있습니다. 경우에 따라 네임스페이스가 존재하지 않거나 사용자를 가장할 권한이 없는 것처럼 보일 수 있으며, 이는 잘못된 구성의 신호일 수 있습니다.
ValidatingWebhookConfiguration 악용
정책을 우회하는 또 다른 방법은 ValidatingWebhookConfiguration 리소스에 집중하는 것입니다:
Kubernetes ValidatingWebhookConfiguration
추가 정보
자세한 내용은 https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/를 확인하세요.