Kubernetes SecurityContext(s)

Reading time: 9 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

PodSecurityContext

D'après la documentation :

Lors de la spécification du contexte de sécurité d'un Pod, vous pouvez utiliser plusieurs attributs. D'un point de vue de sécurité défensive, vous devriez considérer :

  • Avoir runASNonRoot comme Vrai
  • Configurer runAsUser
  • Si possible, envisager de limiter les permissions en indiquant seLinuxOptions et seccompProfile
  • Ne PAS donner d'accès au groupe de privilèges via runAsGroup et supplementaryGroups

| Paramètre | Description | |

fsGroup
integer

|

Un groupe supplémentaire spécial qui s'applique à tous les conteneurs dans un pod. Certains types de volumes permettent au Kubelet de changer la propriété de ce volume pour qu'il soit possédé par le pod :
1. Le GID propriétaire sera le FSGroup
2. Le bit setgid est défini (les nouveaux fichiers créés dans le volume seront possédés par FSGroup)
3. Les bits de permission sont OR'd avec rw-rw---- Si non défini, le Kubelet ne modifiera pas la propriété et les permissions de tout volume

|

|

fsGroupChangePolicy
string

| Cela définit le comportement de changement de propriété et de permission du volume avant d'être exposé à l'intérieur du Pod. | |

runAsGroup
integer

| Le GID pour exécuter le point d'entrée du processus du conteneur. Utilise la valeur par défaut d'exécution si non défini. | |

runAsNonRoot
boolean

| Indique que le conteneur doit s'exécuter en tant qu'utilisateur non-root. Si vrai, le Kubelet validera l'image à l'exécution pour s'assurer qu'elle ne s'exécute pas en tant que UID 0 (root) et échouera à démarrer le conteneur si c'est le cas. | |

runAsUser
integer

| Le UID pour exécuter le point d'entrée du processus du conteneur. Par défaut, il s'agit de l'utilisateur spécifié dans les métadonnées de l'image si non spécifié. | |

seLinuxOptions
SELinuxOptions
Plus d'infos sur seLinux

| Le contexte SELinux à appliquer à tous les conteneurs. Si non spécifié, le runtime du conteneur allouera un contexte SELinux aléatoire pour chaque conteneur. | |

seccompProfile
SeccompProfile
Plus d'infos sur Seccomp

| Les options seccomp à utiliser par les conteneurs dans ce pod. | |

supplementalGroups
integer array

| Une liste de groupes appliqués au premier processus exécuté dans chaque conteneur, en plus du GID principal du conteneur. | |

sysctls
Sysctl array
Plus d'infos sur sysctls

| Les sysctls contiennent une liste de sysctls nommés utilisés pour le pod. Les pods avec des sysctls non pris en charge (par le runtime du conteneur) pourraient échouer à se lancer. | |

windowsOptions
WindowsSecurityContextOptions

| Les paramètres spécifiques à Windows appliqués à tous les conteneurs. Si non spécifié, les options dans le SecurityContext d'un conteneur seront utilisées. |

SecurityContext

D'après la documentation :

Ce contexte est défini à l'intérieur des définitions de conteneurs. D'un point de vue de sécurité défensive, vous devriez considérer :

  • allowPrivilegeEscalation à Faux
  • Ne pas ajouter de capabilités sensibles (et supprimer celles dont vous n'avez pas besoin)
  • privileged à Faux
  • Si possible, définir readOnlyFilesystem comme Vrai
  • Définir runAsNonRoot à Vrai et définir un runAsUser
  • Si possible, envisager de limiter les permissions en indiquant seLinuxOptions et seccompProfile
  • Ne PAS donner d'accès au groupe de privilèges via runAsGroup.

Notez que les attributs définis dans SecurityContext et PodSecurityContext, la valeur spécifiée dans SecurityContext prend précédence.

allowPrivilegeEscalation
boolean

AllowPrivilegeEscalation contrôle si un processus peut gagner plus de privilèges que son processus parent. Ce booléen contrôle directement si le drapeau no_new_privs sera défini sur le processus du conteneur. AllowPrivilegeEscalation est toujours vrai lorsque le conteneur est exécuté en tant que Privileged ou a CAP_SYS_ADMIN

capabilities
Capabilities
Plus d'infos sur Capabilities

Les capabilités à ajouter/retirer lors de l'exécution des conteneurs. Par défaut, il s'agit de l'ensemble par défaut de capacités.

privileged
boolean

Exécuter le conteneur en mode privilégié. Les processus dans les conteneurs privilégiés sont essentiellement équivalents à root sur l'hôte. Par défaut, c'est faux.

procMount
string

procMount désigne le type de montage proc à utiliser pour les conteneurs. La valeur par défaut est DefaultProcMount qui utilise les valeurs par défaut du runtime du conteneur pour les chemins en lecture seule et les chemins masqués.

readOnlyRootFilesystem
boolean

Indique si ce conteneur a un système de fichiers racine en lecture seule. La valeur par défaut est fausse.

runAsGroup
integer

Le GID pour exécuter le point d'entrée du processus du conteneur. Utilise la valeur par défaut d'exécution si non défini.

runAsNonRoot
boolean

Indique que le conteneur doit s'exécuter en tant qu'utilisateur non-root. Si vrai, le Kubelet validera l'image à l'exécution pour s'assurer qu'elle ne s'exécute pas en tant que UID 0 (root) et échouera à démarrer le conteneur si c'est le cas.

runAsUser
integer

Le UID pour exécuter le point d'entrée du processus du conteneur. Par défaut, il s'agit de l'utilisateur spécifié dans les métadonnées de l'image si non spécifié.

seLinuxOptions
SELinuxOptions
Plus d'infos sur seLinux

Le contexte SELinux à appliquer au conteneur. Si non spécifié, le runtime du conteneur allouera un contexte SELinux aléatoire pour chaque conteneur.

seccompProfile
SeccompProfile

Les options seccomp à utiliser par ce conteneur.

windowsOptions
WindowsSecurityContextOptions

Les paramètres spécifiques à Windows appliqués à tous les conteneurs.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks