Kubernetes - OPA Gatekeeper
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Bu sayfanın orijinal yazarı Guillaume
Tanım
Open Policy Agent (OPA) Gatekeeper, Kubernetes’te kabul politikalarını uygulamak için kullanılan bir araçtır. Bu politikalar, OPA tarafından sağlanan bir politika dili olan Rego kullanılarak tanımlanır. Aşağıda OPA Gatekeeper kullanarak bir politika tanımının temel bir örneği bulunmaktadır:
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}
default allow = false
Bu Rego politikası, Kubernetes kaynaklarında belirli etiketlerin mevcut olup olmadığını kontrol eder. Gerekli etiketler eksikse, bir ihlal mesajı döner. Bu politika, kümede dağıtılan tüm kaynakların belirli etiketlere sahip olmasını sağlamak için kullanılabilir.
Kısıtlama Uygula
Bu politikayı OPA Gatekeeper ile kullanmak için, Kubernetes’te bir ConstraintTemplate ve bir Constraint tanımlamanız gerekir:
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}
default allow = false
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
name: ensure-pod-has-label
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
labels:
requiredLabel1: "true"
requiredLabel2: "true"
Bu YAML örneğinde, etiketleri gerektiren bir ConstraintTemplate tanımlıyoruz. Ardından, bu kısıtlamaya ensure-pod-has-label adını veriyoruz; bu, k8srequiredlabels ConstraintTemplate’ine atıfta bulunur ve gerekli etiketleri belirtir.
Gatekeeper Kubernetes kümesine dağıtıldığında, bu politikayı uygulayacak ve belirtilen etiketlere sahip olmayan pod’ların oluşturulmasını engelleyecektir.
Referanslar
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

