Kubernetes - OPA Gatekeeper
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Oryginalnym autorem tej strony jest Guillaume
Definicja
Open Policy Agent (OPA) Gatekeeper to narzędzie używane do egzekwowania polityk przyjęć w Kubernetes. Polityki te są definiowane za pomocą Rego, języka polityk dostarczanego przez OPA. Poniżej znajduje się podstawowy przykład definicji polityki przy użyciu OPA Gatekeeper:
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
Ta polityka Rego sprawdza, czy określone etykiety są obecne na zasobach Kubernetes. Jeśli wymagane etykiety są nieobecne, zwraca komunikat o naruszeniu. Ta polityka może być używana do zapewnienia, że wszystkie zasoby wdrożone w klastrze mają określone etykiety.
Zastosuj Ograniczenie
Aby użyć tej polityki z OPA Gatekeeper, należy zdefiniować ConstraintTemplate i Constraint w Kubernetes:
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"
W tym przykładzie YAML definiujemy ConstraintTemplate, aby wymusić etykiety. Następnie nazywamy to ograniczenie ensure-pod-has-label, które odnosi się do ConstraintTemplate k8srequiredlabels i określa wymagane etykiety.
Gdy Gatekeeper jest wdrożony w klastrze Kubernetes, będzie egzekwować tę politykę, zapobiegając tworzeniu podów, które nie mają określonych etykiet.
References
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

