Kubernetes SecurityContext(s)
Reading time: 9 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
PodSecurityContext
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
| Parametro | Descrizione | |
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
runAsGroup
intero
runAsNonRoot
booleano
runAsUser
intero
seLinuxOptions
SELinuxOptions
Ulteriori informazioni su seLinux
seccompProfile
SeccompProfile
Ulteriori informazioni su Seccomp
supplementalGroups
array di interi
sysctls
Sysctl array
Ulteriori informazioni su sysctls
windowsOptions
WindowsSecurityContextOptions
SecurityContext
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 su 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 | 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 | Le capabilities da aggiungere/rimuovere durante l'esecuzione dei container. Predefinito al set di capabilities predefinito. |
privileged | Esegui il container in modalità privilegiata. I processi nei container privilegiati sono essenzialmente equivalenti a root sull'host. Predefinito a false. |
procMount | procMount indica 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 | Se questo container ha un filesystem root di sola lettura. Il predefinito è false. |
runAsGroup | Il GID per eseguire l'entrypoint del processo del container. Usa il valore predefinito di runtime se non impostato. |
runAsNonRoot | 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 | Il UID per eseguire l'entrypoint del processo del container. Predefinito all'utente specificato nei metadati dell'immagine se non specificato. |
seLinuxOptions | 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. |
References
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.