# Kubernetes Kyverno

{{#include ../../../banners/hacktricks-training.md}}

**L'autore originale di questa pagina è** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## Definizione

Kyverno è un framework open-source per la gestione delle politiche per Kubernetes che consente alle organizzazioni di definire, applicare e auditare le politiche su tutta la loro infrastruttura Kubernetes. Fornisce una soluzione scalabile, estensibile e altamente personalizzabile per gestire la sicurezza, la conformità e la governance dei cluster Kubernetes.

## Casi d'uso

Kyverno può essere utilizzato in una varietà di casi d'uso, tra cui:

1. **Applicazione delle Politiche di Rete**: Kyverno può essere utilizzato per applicare politiche di rete, come consentire o bloccare il traffico tra pod o servizi.
2. **Gestione dei Segreti**: Kyverno può essere utilizzato per applicare politiche di gestione dei segreti, come richiedere che i segreti siano memorizzati in un formato o posizione specifici.
3. **Controllo degli Accessi**: Kyverno può essere utilizzato per applicare politiche di controllo degli accessi, come richiedere agli utenti di avere ruoli o permessi specifici per accedere a determinate risorse.

## **Esempio: ClusterPolicy e Policy**

Immaginiamo di avere un cluster Kubernetes con più namespace e vogliamo applicare una politica che richiede a tutti i pod nel namespace `default` di avere un'etichetta specifica.

**ClusterPolicy**

Una ClusterPolicy è una politica di alto livello che definisce l'intento generale della politica. In questo caso, la nostra ClusterPolicy potrebbe apparire così:
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-label
spec:
rules:
- validate:
message: "Pods in the default namespace must have the label 'app: myapp'"
match:
any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
- any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
validationFailureAction: enforce
```
Quando un pod viene creato nel namespace `default` senza l'etichetta `app: myapp`, Kyverno bloccherà la richiesta e restituirà un messaggio di errore che indica che il pod non soddisfa i requisiti della policy.

## Riferimenti

* [https://kyverno.io/](https://kyverno.io/)



{{#include ../../../banners/hacktricks-training.md}}
