# Kubernetes SecurityContext(s)

{{#include ../../../banners/hacktricks-training.md}}

## PodSecurityContext <a href="#podsecuritycontext-v1-core" id="podsecuritycontext-v1-core"></a>

[**Uit die dokumentasie:**](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core)

Wanneer jy die sekuriteitskonteks van 'n Pod spesifiseer, kan jy verskeie eienskappe gebruik. Vanuit 'n defensiewe sekuriteits oogpunt moet jy oorweeg:

- Om **runASNonRoot** as **Waar** te hê
- Om **runAsUser** te konfigureer
- Indien moontlik, oorweeg om **toestemmings** te **beperk** deur **seLinuxOptions** en **seccompProfile** aan te dui
- Moet **NIE** **privilege** **groep** toegang gee via **runAsGroup** en **supplementaryGroups**

| Parameter                                                                                                                                                                                                                                                                                                                                                                                                                                  | Beskrywing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>fsGroup</strong></a><br><em>integer</em></p>                                                                                                                                                                                                                                                 | <p>‘n Spesiale aanvullende groep wat op <strong>alle houers in 'n pod</strong> van toepassing is. Sommige volume tipe laat die Kubelet toe om die <strong>eienaarskap van daardie volume</strong> te verander sodat dit aan die pod behoort:<br>1. Die eienaam GID sal die FSGroup wees<br>2. Die setgid-bietjie is ingestel (nuwe lêers wat in die volume geskep word, sal deur FSGroup besit word)<br>3. Die toestemmingsbietjies word OR'd met rw-rw---- As nie ingestel nie, sal die Kubelet nie die eienaarskap en toestemmings van enige volume verander</p> |

| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>fsGroupChangePolicy</strong></a><br><em>string</em></p>                                                                                                                                                                                                                                      | Dit definieer die gedrag van **eienaarskap en toestemming van die volume** verander voordat dit binne die Pod blootgestel word.                                                                                                                                                                                                                                                                                                                                                                         |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p>                                                                                                                                                                                                                                              | Die **GID om die ingangspunt van die houer proses** te laat loop. Gebruik runtime standaard as dit nie ingestel is nie.                                                                                                                                                                                                                                                                                                                                                        |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p>                                                                                                                                                                                                                                            | Dui aan dat die houer as 'n nie-root gebruiker moet loop. As waar, sal die Kubelet die beeld tydens uitvoering valideer om te verseker dat dit nie as UID 0 (root) loop nie en sal dit misluk om die houer te begin as dit wel doen.                                                                                                                                                                                                                                                                          |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p>                                                                                                                                                                                                                                               | Die **UID om die ingangspunt van die houer proses** te laat loop. Standaard na die gebruiker gespesifiseer in beeld metadata as dit nie gespesifiseer is nie.                                                                                                                                                                                                                                                                                                                                                              |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Meer inligting oor</em> <em><strong>seLinux</strong></em></p>                                                           | Die **SELinux konteks wat op alle houers toegepas moet word**. As nie gespesifiseer nie, sal die houer runtime 'n ewekansige SELinux konteks vir elke houer toewys.                                                                                                                                                                                                                                                                                                                             |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>seccompProfile</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core"><em>SeccompProfile</em></a><br><em>Meer inligting oor</em> <em><strong>Seccomp</strong></em></p>                                                           | Die **seccomp opsies wat deur die houers** in hierdie pod gebruik moet word.                                                                                                                                                                                                                                                                                                                                                                                                                         |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>supplementalGroups</strong></a><br><em>integer array</em></p>                                                                                                                                                                                                                                | 'n Lys van **groepe wat op die eerste proses toegepas word wat in elke houer loop**, benewens die houer se primêre GID.                                                                                                                                                                                                                                                                                                                                                                  |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>sysctls</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#sysctl-v1-core"><em>Sysctl</em></a> <em>array</em><br><em>Meer inligting oor</em> <a href="https://www.garron.me/en/go2linux/sysctl-linux.html"><em><strong>sysctls</strong></em></a></p> | Sysctls hou 'n lys van **namespaced sysctls wat vir die pod gebruik word**. Pods met nie-ondersteunde sysctls (deur die houer runtime) mag misluk om te begin.                                                                                                                                                                                                                                                                                                                                        |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p>                                                                                           | Die Windows spesifieke instellings wat op alle houers toegepas word. As nie gespesifiseer nie, sal die opsies binne 'n houer se SecurityContext gebruik word.                                                                                                                                                                                                                                                                                                                                               |

## SecurityContext

[**Uit die dokumentasie:**](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core)

Hierdie konteks word binne die **houer definisies** ingestel. Vanuit 'n defensiewe sekuriteits oogpunt moet jy oorweeg:

- **allowPrivilegeEscalation** as **Valse**
- Moet nie sensitiewe **vermoëns** byvoeg nie (en verwyder die wat jy nie nodig het nie)
- **privileged** as **Valse**
- Indien moontlik, stel **readOnlyFilesystem** as **Waar**
- Stel **runAsNonRoot** op **Waar** en stel 'n **runAsUser** in
- Indien moontlik, oorweeg om **toestemmings** te **beperk** deur **seLinuxOptions** en **seccompProfile** aan te dui
- Moet **NIE** **privilege** **groep** toegang gee via **runAsGroup.**

Let daarop dat die eienskappe wat in **both SecurityContext and PodSecurityContext** ingestel is, die waarde wat in **SecurityContext** gespesifiseer is, **prioriteit** het.

| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>allowPrivilegeEscalation</strong></a><br><em>boolean</em></p>                                                                                                                                                                      | **AllowPrivilegeEscalation** beheer of 'n proses **meer bevoegdhede kan verkry** as sy ouer proses. Hierdie bool beheer direk of die no_new_privs-vlag op die houer proses ingestel sal word. AllowPrivilegeEscalation is altyd waar wanneer die houer as **Privileged** gedraai word of **CAP_SYS_ADMIN** het |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>capabilities</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#capabilities-v1-core"><em>Capabilities</em></a><br><em>Meer inligting oor</em> <em><strong>Capabilities</strong></em></p>  | Die **vermoëns om by te voeg/verwyder wanneer houers loop**. Standaard na die standaard stel van vermoëns.                                                                                                                                                                                                                |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>privileged</strong></a><br><em>boolean</em></p>                                                                                                                                                                                    | Loop houer in bevoorregte modus. Prosesse in bevoorregte houers is in wese **gelyk aan root op die gasheer**. Standaard is vals.                                                                                                                                                                           |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>procMount</strong></a><br><em>string</em></p>                                                                                                                                                                                      | procMount dui die **tipe proc mount aan wat vir die houers gebruik moet word**. Die standaard is DefaultProcMount wat die houer runtime standaarde vir leesbare paaie en gemaskeerde paaie gebruik.                                                                                                                                |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>readOnlyRootFilesystem</strong></a><br><em>boolean</em></p>                                                                                                                                                                        | Of hierdie **houer 'n leesbare wortel lêerstelsel het**. Standaard is vals.                                                                                                                                                                                                                                         |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p>                                                                                                                                                                                    | Die **GID om die ingangspunt** van die houer proses te laat loop. Gebruik runtime standaard as dit nie ingestel is nie.                                                                                                                                                                                                                            |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p>                                                                                                                                                                                  | Dui aan dat die houer moet **loop as 'n nie-root gebruiker**. As waar, sal die Kubelet die beeld tydens uitvoering valideer om te verseker dat dit nie as UID 0 (root) loop nie en sal dit misluk om die houer te begin as dit wel doen.                                                                                                      |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p>                                                                                                                                                                                     | Die **UID om die ingangspunt** van die houer proses te laat loop. Standaard na die gebruiker gespesifiseer in beeld metadata as dit nie gespesifiseer is nie.                                                                                                                                                                                              |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Meer inligting oor</em> <em><strong>seLinux</strong></em></p> | Die **SELinux konteks wat op die houer toegepas moet word**. As nie gespesifiseer nie, sal die houer runtime 'n ewekansige SELinux konteks vir elke houer toewys.                                                                                                                                                              |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seccompProfile</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core"><em>SeccompProfile</em></a></p>                                                               | Die **seccomp opsies** wat deur hierdie houer gebruik moet word.                                                                                                                                                                                                                                                                     |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p>                                 | Die **Windows spesifieke instellings** wat op alle houers toegepas word.                                                                                                                                                                                                                                                          |

## References

- [https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core](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](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core)

{{#include ../../../banners/hacktricks-training.md}}
