Kubernetes - OPA Gatekeeper
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
O autor original desta página é Guillaume
Definição
Open Policy Agent (OPA) Gatekeeper é uma ferramenta usada para impor políticas de admissão no Kubernetes. Essas políticas são definidas usando Rego, uma linguagem de políticas fornecida pelo OPA. Abaixo está um exemplo básico de uma definição de política usando 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 Rego verifica se certos rótulos estão presentes nos recursos do Kubernetes. Se os rótulos exigidos estiverem ausentes, ela retorna uma mensagem de violação. Esta política pode ser usada para garantir que todos os recursos implantados no cluster tenham rótulos específicos.
Aplicar Restrição
Para usar esta política com OPA Gatekeeper, você deve definir um ConstraintTemplate e um Constraint no 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"
Neste exemplo de YAML, definimos um ConstraintTemplate para exigir rótulos. Em seguida, nomeamos essa restrição como ensure-pod-has-label, que referencia o ConstraintTemplate k8srequiredlabels e especifica os rótulos exigidos.
Quando o Gatekeeper é implantado no cluster Kubernetes, ele aplicará essa política, impedindo a criação de pods que não tenham os rótulos especificados.
Referências
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

