# Openshift - SCC

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

**L'autore originale di questa pagina è** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## Definizione

Nel contesto di OpenShift, SCC sta per **Security Context Constraints**. Le Security Context Constraints sono politiche che controllano i permessi per i pod in esecuzione sui cluster OpenShift. Definiscono i parametri di sicurezza sotto i quali un pod è autorizzato a funzionare, inclusi quali azioni può eseguire e quali risorse può accedere.

Le SCC aiutano gli amministratori a far rispettare le politiche di sicurezza in tutto il cluster, garantendo che i pod funzionino con permessi appropriati e rispettino gli standard di sicurezza organizzativi. Queste restrizioni possono specificare vari aspetti della sicurezza dei pod, come:

1. Capacità Linux: Limitare le capacità disponibili per i container, come la possibilità di eseguire azioni privilegiate.
2. Contesto SELinux: Far rispettare i contesti SELinux per i container, che definiscono come i processi interagiscono con le risorse sul sistema.
3. File system root di sola lettura: Prevenire che i container modifichino file in determinate directory.
4. Directory e volumi host consentiti: Specificare quali directory e volumi host un pod può montare.
5. Esegui come UID/GID: Specificare gli ID utente e gruppo sotto i quali il processo del container viene eseguito.
6. Politiche di rete: Controllare l'accesso di rete per i pod, come limitare il traffico in uscita.

Configurando le SCC, gli amministratori possono garantire che i pod funzionino con il livello appropriato di isolamento di sicurezza e controlli di accesso, riducendo il rischio di vulnerabilità di sicurezza o accesso non autorizzato all'interno del cluster.

Fondamentalmente, ogni volta che viene richiesta una distribuzione di pod, viene eseguito un processo di ammissione come segue:

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

Questo ulteriore strato di sicurezza per impostazione predefinita vieta la creazione di pod privilegiati, il montaggio del file system host o l'impostazione di attributi che potrebbero portare a un'escalation di privilegi.

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

## Elenco SCC

Per elencare tutte le SCC con il client Openshift:
```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
```
Tutti gli utenti hanno accesso al SCC predefinito "**restricted**" e "**restricted-v2**" che sono i SCC più rigorosi.

## Utilizzare SCC

Il SCC utilizzato per un pod è definito all'interno di un'annotazione:
```bash
$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged
```
Quando un utente ha accesso a più SCC, il sistema utilizzerà quello che si allinea ai valori del contesto di sicurezza. Altrimenti, verrà attivato un errore di accesso vietato.
```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
```
## Bypass SCC

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

## Riferimenti

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



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