Kubernetes SecurityContext(s)
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Quando si specifica il contesto di sicurezza di un Pod, è possibile utilizzare diversi attributi. Da un punto di vista della sicurezza difensiva, dovresti considerare:
Avere runASNonRoot come True
Configurare runAsUser
Se possibile, considera di limitare le permissive indicando seLinuxOptions e seccompProfile
Non dare accesso al privilege group tramite runAsGroup e supplementaryGroups
fsGroup intero
Un gruppo supplementare speciale che si applica a tutti i container in un pod. Alcuni tipi di volume consentono al Kubelet di cambiare la proprietà di quel volume per essere di proprietà del pod: 1. Il GID proprietario sarà l'FSGroup 2. Il bit setgid è impostato (i nuovi file creati nel volume saranno di proprietà dell'FSGroup) 3. I bit di permesso sono OR'd con rw-rw---- Se non impostato, il Kubelet non modificherà la proprietà e i permessi di alcun volume
fsGroupChangePolicy stringa
Questo definisce il comportamento di cambio di proprietà e permesso del volume prima di essere esposto all'interno del Pod.
runAsGroup intero
Il GID per eseguire il punto di ingresso del processo del container. Usa il valore predefinito di runtime se non impostato.
runAsNonRoot booleano
Indica che il container deve essere eseguito come un utente non root. Se vero, il Kubelet convaliderà l'immagine a runtime per assicurarsi che non venga eseguita come UID 0 (root) e non avvierà il container se lo fa.
runAsUser intero
Il 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 per ogni container.
seccompProfile SeccompProfile Ulteriori informazioni su Seccomp
Le opzioni seccomp da utilizzare dai container in questo pod.
supplementalGroups array di interi
Un elenco di gruppi applicati al primo processo eseguito in ogni container, oltre al GID primario del container.
I sysctls contengono un elenco di sysctls namespaced utilizzati per il pod. I pod con sysctls non supportati (dal runtime del container) potrebbero non 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.
Questo contesto è impostato all'interno delle definizioni dei container. Da un punto di vista della sicurezza difensiva, dovresti considerare:
allowPrivilegeEscalation a False
Non aggiungere capabilities sensibili (e rimuovere quelle di cui non hai bisogno)
privileged a False
Se possibile, imposta readOnlyFilesystem come True
Imposta runAsNonRoot su True e imposta un runAsUser
Se possibile, considera di limitare le permissive indicando seLinuxOptions e seccompProfile
Non dare accesso al privilege group tramite runAsGroup.
Nota che gli attributi impostati in entrambi SecurityContext e PodSecurityContext, il valore specificato in SecurityContext ha precedenza.
allowPrivilegeEscalation booleano
AllowPrivilegeEscalation controlla se un processo può acquisire più privilegi rispetto al suo processo padre. Questo bool controlla direttamente se il flag no_new_privs sarà impostato sul processo del container. AllowPrivilegeEscalation è sempre vero quando il container è eseguito come Privileged o ha CAP_SYS_ADMIN
capabilities Capabilities Ulteriori informazioni su Capabilities
Le capabilities da aggiungere/rimuovere quando si eseguono i container. Predefinito al set di capabilities predefinito.
privileged booleano
Esegui il container in modalità privilegiata. I processi nei container privilegiati sono essenzialmente equivalenti a root sull'host. Predefinito a false.
procMount stringa
procMount denota il tipo di montaggio proc da utilizzare per i container. Il predefinito è DefaultProcMount che utilizza i valori predefiniti del runtime del container per i percorsi di sola lettura e i percorsi mascherati.
readOnlyRootFilesystem booleano
Se questo container ha un filesystem root di sola lettura. Il predefinito è false.
runAsGroup intero
Il GID per eseguire il punto di ingresso del processo del container. Usa il valore predefinito di runtime se non impostato.
runAsNonRoot booleano
Indica che il container deve essere eseguito come un utente non root. Se vero, il Kubelet convaliderà l'immagine a runtime per assicurarsi che non venga eseguita come UID 0 (root) e non avvierà il container se lo fa.
runAsUser intero
Il 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 al container. Se non specificato, il runtime del container assegnerà un contesto SELinux casuale per ogni container.
Le opzioni seccomp da utilizzare per questo container.
Le impostazioni specifiche di Windows applicate a tutti i container.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)