Kubernetes SecurityContext(s)
Last updated
Last updated
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)
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 True
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
fsGroup integer
Un groupe supplémentaire spécial qui s'applique à tous les conteneurs d'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.
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.
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.
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 à False
Ne pas ajouter de capabilités sensibles (et supprimer celles dont vous n'avez pas besoin)
privileged à False
Si possible, définir readOnlyFilesystem comme True
Définir runAsNonRoot à True 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.
Les options seccomp à utiliser par ce conteneur.
Les paramètres spécifiques à Windows appliqués à tous les conteneurs.
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)