# Openshift - SCC

**Originalni autor ove stranice je** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## Definicija

U kontekstu OpenShift-a, SCC označava **Security Context Constraints**. Security Context Constraints su politike koje kontrolišu dozvole za podove koji rade na OpenShift klasterima. One definišu bezbednosne parametre pod kojima je pod dozvoljeno da radi, uključujući koje akcije može da izvršava i koje resurse može da pristupa.

SCC pomažu administratorima da sprovode bezbednosne politike širom klastera, osiguravajući da podovi rade sa odgovarajućim dozvolama i da se pridržavaju organizacionih bezbednosnih standarda. Ove restrikcije mogu specificirati različite aspekte bezbednosti poda, kao što su:

1. Linux sposobnosti: Ograničavanje sposobnosti dostupnih kontejnerima, kao što je sposobnost izvršavanja privilegovanih akcija.
2. SELinux kontekst: Sprovođenje SELinux konteksta za kontejnere, koji definiše kako procesi interaguju sa resursima na sistemu.
3. Read-only root filesystem: Sprečavanje kontejnera da modifikuju datoteke u određenim direktorijumima.
4. Dozvoljeni host direktorijumi i volumeni: Specifikovanje koji host direktorijumi i volumeni mogu biti montirani od strane poda.
5. Pokreni kao UID/GID: Specifikovanje ID-eva korisnika i grupe pod kojima proces kontejnera radi.
6. Mrežne politike: Kontrolisanje mrežnog pristupa za podove, kao što je ograničavanje egress saobraćaja.

Konfigurišući SCC, administratori mogu osigurati da podovi rade sa odgovarajućim nivoom bezbednosne izolacije i kontrola pristupa, smanjujući rizik od bezbednosnih ranjivosti ili neovlašćenog pristupa unutar klastera.

U suštini, svaki put kada se zatraži implementacija poda, izvršava se proces prijema kao što je sledeće:

<figure><img src="../../images/Managing SCCs in OpenShift-1.png" alt=""><figcaption></figcaption></figure>

Ova dodatna bezbednosna sloj po defaultu zabranjuje kreiranje privilegovanih podova, montiranje host fajl sistema ili postavljanje bilo kojih atributa koji bi mogli dovesti do eskalacije privilegija.

{{#ref}}
../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/pod-escape-privileges.md
{{#endref}}

## Lista SCC

Da biste naveli sve SCC sa Openshift klijentom:
```bash
$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions
```
Svi korisnici imaju pristup podrazumevanju SCC "**restricted**" i "**restricted-v2**" koji su najstroži SCC-ovi.

## Koristite SCC

SCC koji se koristi za pod definisan je unutar anotacije:
```bash
$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged
```
Kada korisnik ima pristup više SCC-ova, sistem će koristiti onaj koji se usklađuje sa vrednostima sigurnosnog konteksta. U suprotnom, biće pokrenuta greška zabranjeno.
```bash
$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain
```
## SCC Bypass

{{#ref}}
openshift-privilege-escalation/openshift-scc-bypass.md
{{#endref}}

## References

- [https://www.redhat.com/en/blog/managing-sccs-in-openshift](https://www.redhat.com/en/blog/managing-sccs-in-openshift)
