Configurare i profili Seccomp per la sicurezza dei pod

Questo documento descrive come configurare i profili Kubernetes Seccomp (Secure Computing Mode) per i pod Apigee Hybrid per migliorare la sicurezza limitando le chiamate di sistema (syscall) che i container sono autorizzati a effettuare.

Informazioni sui profili Seccomp in Kubernetes

Seccomp è una funzionalità di sicurezza del kernel Linux che limita le chiamate di sistema che un processo può effettuare. Se utilizzato con Kubernetes, puoi applicare i profili Seccomp al campo securityContext di un pod per limitare le chiamate di sistema disponibili per i relativi container. Ciò contribuisce a ridurre la superficie di attacco del container e a mitigare il rischio di interruzioni del container o di escalation dei privilegi applicando il principio del privilegio minimo.

Per ulteriori informazioni su Seccomp in Kubernetes, consulta Secure Computing (Seccomp) nella documentazione di Kubernetes.

Nell'ambiente ibrido, i profili Seccomp non sono abilitati per impostazione predefinita. Puoi scegliere di applicare un profilo Seccomp ai componenti ibridi aggiungendo l'oggetto seccompProfile al file overrides.yaml.

Configurazione dei profili Seccomp

Puoi applicare i profili Seccomp a livello globale, per ambiente o per componente nel file overrides.yaml aggiungendo il blocco di configurazione securityContext.seccompProfile. hybrid supporta i seguenti tipi di profili Seccomp:

  • RuntimeDefault: il profilo predefinito specificato dal runtime del container. Questa è l'opzione consigliata, in quanto offre un livello di sicurezza ragionevole mantenendo la compatibilità per la maggior parte dei carichi di lavoro.
  • Unconfined: non applica restrizioni Seccomp al pod. Questa è l'opzione meno sicura e deve essere utilizzata con cautela.

Precedenza della configurazione

Puoi impostare il seccompProfile ai seguenti livelli in overrides.yaml. Le impostazioni a livello di componente hanno la precedenza su quelle a livello di ambiente e quelle a livello di ambiente hanno la precedenza su quelle globali:

  1. A livello di componente:si applica a un componente specifico (ad esempio, runtime o cassandra).
  2. Livello di ambiente:si applica a tutti i componenti all'interno di un ambiente specifico definito nell'array envs[], a meno che non venga eseguito l'override a livello di componente.
  3. Livello globale:si applica a tutti i componenti del cluster, a meno che non venga eseguito l'override a livello di ambiente o componente.

Esempi

Configurazione globale

Per applicare il profilo Seccomp RuntimeDefault a tutti i componenti che non hanno un override a livello di ambiente o componente, aggiungi quanto segue al livello superiore di overrides.yaml:

securityContext:
  seccompProfile:
    type: RuntimeDefault

Configurazione dell'ambiente

Per applicare il profilo Seccomp RuntimeDefault a tutti i componenti di un ambiente specifico, aggiungi la configurazione all'elemento envs[]:

envs:
  - name: "my-environment"
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    ...

Configurazione dei componenti

Per applicare il profilo RuntimeDefault Seccomp a un componente specifico (ad esempio, il componente di runtime), aggiungi la configurazione sotto quel componente:

runtime:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
...