Kubernetes - OPA Gatekeeper
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Originalni autor ove stranice je Guillaume
Definicija
Open Policy Agent (OPA) Gatekeeper je alat koji se koristi za sprovođenje politika prijema u Kubernetesu. Ove politike se definišu koristeći Rego, jezik politika koji pruža OPA. Ispod je osnovni primer definicije politike koristeći 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
Ova Rego politika proverava da li su određene oznake prisutne na Kubernetes resursima. Ako nedostaju potrebne oznake, vraća poruku o kršenju. Ova politika se može koristiti da se osigura da svi resursi raspoređeni u klasteru imaju specifične oznake.
Primeni Ograničenje
Da biste koristili ovu politiku sa OPA Gatekeeper-om, definisaćete ConstraintTemplate i Constraint u Kubernetes-u:
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"
U ovom YAML primeru definišemo ConstraintTemplate da zahteva oznake. Zatim, imenujemo ovu restrikciju ensure-pod-has-label
, koja se poziva na k8srequiredlabels
ConstraintTemplate i specificira potrebne oznake.
Kada je Gatekeeper implementiran u Kubernetes klasteru, sprovodiće ovu politiku, sprečavajući kreiranje podova koji nemaju specificirane oznake.
References
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.