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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
PodSecurityContext
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
runAsGroup
integer
runAsNonRoot
boolean
runAsUser
integer
seLinuxOptions
SELinuxOptions
Plus d'infos sur seLinux
seccompProfile
SeccompProfile
Plus d'infos sur Seccomp
supplementalGroups
integer array
sysctls
Sysctl array
Plus d'infos sur sysctls
windowsOptions
WindowsSecurityContextOptions
SecurityContext
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 | 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 | 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 | 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 | 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 | Indique si ce conteneur a un système de fichiers racine en lecture seule. La valeur par défaut est fausse. |
runAsGroup | 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 | 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 | 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 | 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. |
Références
- 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
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.