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

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, 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

| 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. Può anche essere impostato in SecurityContext. | |

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 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 ciascun container, oltre al GID primario del container. | |

sysctls
Sysctl array
Ulteriori informazioni su sysctls

| 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. | |

windowsOptions
WindowsSecurityContextOptions

| 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 è 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
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 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
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 ogni container.

seccompProfile
SeccompProfile

Le opzioni seccomp da utilizzare per questo container.

windowsOptions
WindowsSecurityContextOptions

Le impostazioni specifiche di Windows applicate a tutti i container.

References

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