Kubernetes - OPA Gatekeeper
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
El autor original de esta p谩gina es Guillaume
Definici贸n
Open Policy Agent (OPA) Gatekeeper es una herramienta utilizada para hacer cumplir pol铆ticas de admisi贸n en Kubernetes. Estas pol铆ticas se definen utilizando Rego, un lenguaje de pol铆ticas proporcionado por OPA. A continuaci贸n se muestra un ejemplo b谩sico de una definici贸n de pol铆tica utilizando 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
Esta pol铆tica de Rego verifica si ciertas etiquetas est谩n presentes en los recursos de Kubernetes. Si faltan las etiquetas requeridas, devuelve un mensaje de violaci贸n. Esta pol铆tica se puede utilizar para garantizar que todos los recursos desplegados en el cl煤ster tengan etiquetas espec铆ficas.
Aplicar Restricci贸n
Para usar esta pol铆tica con OPA Gatekeeper, debes definir un ConstraintTemplate y un Constraint en 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"
En este ejemplo de YAML, definimos un ConstraintTemplate para requerir etiquetas. Luego, nombramos esta restricci贸n ensure-pod-has-label, que hace referencia al ConstraintTemplate k8srequiredlabels y especifica las etiquetas requeridas.
Cuando Gatekeeper se despliega en el cl煤ster de Kubernetes, har谩 cumplir esta pol铆tica, impidiendo la creaci贸n de pods que no tengan las etiquetas especificadas.
Referencias
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

