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 l'entrypoint 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 l'entrypoint 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 ciascun 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 ciascun 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, impostare readOnlyFilesystem come True
Impostare runAsNonRoot a True e impostare 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 durante l'esecuzione dei 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 l'entrypoint 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 l'entrypoint 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 ciascun 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)