Kubernetes SecurityContext(s)

Reading time: 8 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

PodSecurityContext

Iz dokumenata:

Kada definišete bezbednosni kontekst Pod-a, možete koristiti nekoliko atributa. Sa stanovišta odbrane, trebali biste razmotriti:

  • Da runASNonRoot bude True
  • Da konfigurišete runAsUser
  • Ako je moguće, razmotrite ograničavanje dozvola označavanjem seLinuxOptions i seccompProfile
  • NE dajte privilegovan grupni pristup putem runAsGroup i supplementaryGroups

| Parametar | Opis | |

fsGroup
integer

|

Specijalna dopunska grupa koja se primenjuje na sve kontejnere u podu. Neki tipovi volumena omogućavaju Kubelet-u da promeni vlasništvo tog volumena da bude u vlasništvu poda:
1. Vlasnički GID će biti FSGroup
2. setgid bit je postavljen (nove datoteke kreirane u volumenu će biti u vlasništvu FSGroup)
3. Dozvola je OR'd sa rw-rw---- Ako nije postavljeno, Kubelet neće menjati vlasništvo i dozvole bilo kog volumena

|

|

fsGroupChangePolicy
string

| Ovo definiše ponašanje promene vlasništva i dozvola volumena pre nego što bude izložen unutar Pod-a. | |

runAsGroup
integer

| GID za pokretanje ulazne tačke procesa kontejnera. Koristi podrazumevanu vrednost vremena izvođenja ako nije postavljeno. Može se takođe postaviti u SecurityContext. | |

runAsNonRoot
boolean

| Ukazuje da kontejner mora da se pokrene kao korisnik koji nije root. Ako je tačno, Kubelet će validirati sliku u vreme izvođenja kako bi osigurao da se ne pokreće kao UID 0 (root) i neće moći da pokrene kontejner ako to učini. | |

runAsUser
integer

| UID za pokretanje ulazne tačke procesa kontejnera. Podrazumevano se postavlja na korisnika navedenog u metapodacima slike ako nije navedeno. | |

seLinuxOptions
SELinuxOptions
Više informacija o seLinux

| SELinux kontekst koji će se primeniti na sve kontejnere. Ako nije navedeno, kontejnerski runtime će dodeliti nasumičan SELinux kontekst za svaki kontejner. | |

seccompProfile
SeccompProfile
Više informacija o Seccomp

| seccomp opcije koje koriste kontejneri u ovom podu. | |

supplementalGroups
integer array

| Lista grupa primenjenih na prvi proces pokrenut u svakom kontejneru, pored primarnog GID-a kontejnera. | |

sysctls
Sysctl array
Više informacija o sysctls

| Sysctls sadrži listu imenskih sysctls korišćenih za pod. Podovi sa nepodržanim sysctls (od strane kontejnerskog runtime-a) mogu propasti prilikom pokretanja. | |

windowsOptions
WindowsSecurityContextOptions

| Windows specifične postavke primenjene na sve kontejnere. Ako nije navedeno, koristiće se opcije unutar SecurityContext-a kontejnera. |

SecurityContext

Iz dokumenata:

Ovaj kontekst se postavlja unutar definicija kontejnera. Sa stanovišta odbrane, trebali biste razmotriti:

  • allowPrivilegeEscalation da bude False
  • Ne dodavati osetljive kapacitete (i ukloniti one koje ne trebate)
  • privileged da bude False
  • Ako je moguće, postavite readOnlyFilesystem na True
  • Postavite runAsNonRoot na True i postavite runAsUser
  • Ako je moguće, razmotrite ograničavanje dozvola označavanjem seLinuxOptions i seccompProfile
  • NE dajte privilegovan grupni pristup putem runAsGroup.

Napomena: Atributi postavljeni u SecurityContext i PodSecurityContext, vrednost navedena u SecurityContext ima prioritet.

allowPrivilegeEscalation
boolean

AllowPrivilegeEscalation kontroliše da li proces može dobiti više privilegija od svog roditeljskog procesa. Ova bool direktno kontroliše da li će se postaviti no_new_privs flag na procesu kontejnera. AllowPrivilegeEscalation je uvek tačno kada se kontejner pokreće kao Privileged ili ima CAP_SYS_ADMIN

capabilities
Capabilities
Više informacija o Capabilities

Kapaciteti za dodavanje/uklanjanje prilikom pokretanja kontejnera. Podrazumevano se koristi podrazumevani skup kapaciteta.

privileged
boolean

Pokreni kontejner u privilegovanom režimu. Procesi u privilegovanim kontejnerima su suštinski ekvivalentni root-u na hostu. Podrazumevano je false.

procMount
string

procMount označava tip proc mount-a koji će se koristiti za kontejnere. Podrazumevano je DefaultProcMount koji koristi podrazumevane vrednosti kontejnerskog runtime-a za samo-za-čitanje i maskirane putanje.

readOnlyRootFilesystem
boolean

Da li ovaj kontejner ima samo-za-čitanje korenski sistem datoteka. Podrazumevano je false.

runAsGroup
integer

GID za pokretanje ulazne tačke procesa kontejnera. Koristi podrazumevanu vrednost vremena izvođenja ako nije postavljeno.

runAsNonRoot
boolean

Ukazuje da kontejner mora da se pokrene kao korisnik koji nije root. Ako je tačno, Kubelet će validirati sliku u vreme izvođenja kako bi osigurao da se ne pokreće kao UID 0 (root) i neće moći da pokrene kontejner ako to učini.

runAsUser
integer

UID za pokretanje ulazne tačke procesa kontejnera. Podrazumevano se postavlja na korisnika navedenog u metapodacima slike ako nije navedeno.

seLinuxOptions
SELinuxOptions
Više informacija o seLinux

SELinux kontekst koji će se primeniti na kontejner. Ako nije navedeno, kontejnerski runtime će dodeliti nasumičan SELinux kontekst za svaki kontejner.

seccompProfile
SeccompProfile

seccomp opcije koje koristi ovaj kontejner.

windowsOptions
WindowsSecurityContextOptions

Windows specifične postavke primenjene na sve kontejnere.

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks