Kubernetes SecurityContext(s)

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

PodSecurityContext

Dalla documentazione:

Quando si specifica il contesto di sicurezza di un Pod, è possibile utilizzare diversi attributi. Da un punto di vista della sicurezza difensiva, si dovrebbe considerare:

  • Avere runASNonRoot come True

  • Configurare runAsUser

  • Se possibile, considerare di limitare le autorizzazioni indicando seLinuxOptions e seccompProfile

  • NON concedere l'accesso al gruppo privilegiato tramite runAsGroup e supplementaryGroups

fsGroup integer

Un gruppo supplementare speciale che si applica a tutti i container in un pod. Alcuni tipi di volumi consentono a Kubelet di cambiare la proprietà di quel volume in modo che sia di proprietà del pod: 1. Il GID proprietario sarà fsGroup 2. Viene impostato il bit setgid (i nuovi file creati nel volume saranno di proprietà di fsGroup) 3. I bit di autorizzazione vengono OR'd con rw-rw---- Se non impostato, Kubelet non modificherà la proprietà e le autorizzazioni di alcun volume

Questo definisce il comportamento del cambiamento di proprietà e autorizzazioni del volume prima di essere esposto all'interno del Pod.

runAsGroup integer

Il GID per eseguire il punto di ingresso del processo del container. Utilizza il valore predefinito in fase di esecuzione se non impostato. Può anche essere impostato in SecurityContext.

runAsNonRoot boolean

Indica che il container deve essere eseguito come utente non root. Se true, Kubelet convaliderà l'immagine in fase di esecuzione per assicurarsi che non venga eseguita come UID 0 (root) e fallirà nell'avviare il container se lo fa.

runAsUser integer

L'UID per eseguire il punto di ingresso del processo del container. Predefinito all'utente specificato nei metadati dell'immagine se non specificato.

seLinuxOptions SELinuxOptions Ulteriori informazioni su seLinux

Il contesto SELinux da applicare a tutti i container. Se non specificato, il runtime del container assegnerà un contesto SELinux casuale a ciascun container.

seccompProfile SeccompProfile Ulteriori informazioni su Seccomp

Le opzioni seccomp da utilizzare dai container in questo pod.

supplementalGroups integer array

Un elenco di gruppi applicati al primo processo eseguito in ogni container, oltre all'GID primario del container.

sysctls Sysctl array Ulteriori informazioni su sysctls

Sysctls contiene un elenco di sysctl con namespace utilizzati per il pod. I pod con sysctl non supportati (dal runtime del container) potrebbero non riuscire ad avviarsi.

Le impostazioni specifiche di Windows applicate a tutti i container. Se non specificato, verranno utilizzate le opzioni all'interno del SecurityContext di un container.

## SecurityContext

Dalla documentazione:

Questo contesto viene impostato all'interno delle definizioni dei contenitori. Da un punto di vista della sicurezza difensiva, si dovrebbe considerare:

  • Impostare allowPrivilegeEscalation su False

  • Non aggiungere capabilities sensibili (e rimuovere quelle non necessarie)

  • Impostare privileged su False

  • Se possibile, impostare readOnlyFilesystem su True

  • Impostare runAsNonRoot su True e specificare un runAsUser

  • Se possibile, considerare di limitare le autorizzazioni indicando seLinuxOptions e seccompProfile

  • NON dare accesso al gruppo con privilegi tramite runAsGroup

Si noti che gli attributi impostati sia in SecurityContext che in PodSecurityContext, il valore specificato in SecurityContext ha precedenza.

AllowPrivilegeEscalation controlla se un processo può acquisire più privilegi rispetto al processo padre. Questo booleano controlla direttamente se il flag no_new_privs verrà impostato sul processo del contenitore. AllowPrivilegeEscalation è sempre true quando il contenitore viene eseguito come Privileged o ha CAP_SYS_ADMIN

capabilities Capabilities Ulteriori informazioni su Capabilities

Le capabilities da aggiungere/rimuovere durante l'esecuzione dei contenitori. Predefinito all'insieme predefinito di capabilities.

privileged boolean

Esegui il contenitore in modalità privilegiata. I processi nei contenitori privilegiati sono essenzialmente equivalenti a root sull'host. Predefinito a false.

procMount string

procMount indica il tipo di montaggio proc da utilizzare per i contenitori. Il valore predefinito è DefaultProcMount, che utilizza le impostazioni predefinite dell'ambiente di runtime del contenitore per i percorsi in sola lettura e i percorsi mascherati.

Indica se questo contenitore ha un filesystem radice in sola lettura. Il valore predefinito è false.

runAsGroup integer

Il GID con cui eseguire l'entrypoint del processo del contenitore. Utilizza il valore predefinito dell'ambiente di runtime se non impostato.

runAsNonRoot boolean

Indica che il contenitore deve essere eseguito come utente non root. Se true, il Kubelet convaliderà l'immagine durante l'esecuzione per assicurarsi che non venga eseguita come UID 0 (root) e fallirà nell'avviare il contenitore se lo fa.

runAsUser integer

L'UID con cui eseguire l'entrypoint del processo del contenitore. Predefinito all'utente specificato nei metadati dell'immagine se non specificato.

seLinuxOptions SELinuxOptions Ulteriori informazioni su seLinux

Il contesto SELinux da applicare al contenitore. Se non specificato, l'ambiente di runtime del contenitore assegnerà un contesto SELinux casuale per ogni contenitore.

Le opzioni seccomp da utilizzare per questo contenitore.

Le impostazioni specifiche di Windows applicate a tutti i contenitori.

Riferimenti

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated