Openshift - SCC

Der ursprüngliche Autor dieser Seite ist Guillaume

Definition

Im Kontext von OpenShift steht SCC für Security Context Constraints. Security Context Constraints sind Richtlinien, die die Berechtigungen für Pods steuern, die auf OpenShift-Clustern ausgeführt werden. Sie definieren die Sicherheitsparameter, unter denen ein Pod ausgeführt werden darf, einschließlich der Aktionen, die er ausführen kann, und der Ressourcen, auf die er zugreifen kann.

SCCs helfen Administratoren dabei, Sicherheitsrichtlinien über den Cluster hinweg durchzusetzen, um sicherzustellen, dass Pods mit angemessenen Berechtigungen ausgeführt werden und den organisatorischen Sicherheitsstandards entsprechen. Diese Einschränkungen können verschiedene Aspekte der Pod-Sicherheit spezifizieren, wie zum Beispiel:

  1. Linux-Fähigkeiten: Begrenzung der für Container verfügbaren Fähigkeiten, wie z.B. die Möglichkeit, privilegierte Aktionen auszuführen.

  2. SELinux-Kontext: Durchsetzung von SELinux-Kontexten für Container, die definieren, wie Prozesse mit Ressourcen im System interagieren.

  3. Nur-Lese-Root-Dateisystem: Verhindern, dass Container Dateien in bestimmten Verzeichnissen ändern.

  4. Erlaubte Host-Verzeichnisse und Volumes: Festlegen, welche Host-Verzeichnisse und Volumes ein Pod einbinden kann.

  5. Als UID/GID ausführen: Festlegen der Benutzer- und Gruppen-IDs, unter denen der Containerprozess läuft.

  6. Netzwerkrichtlinien: Steuerung des Netzwerkzugriffs für Pods, z.B. Einschränkung des Ausgangsverkehrs.

Durch Konfiguration von SCCs können Administratoren sicherstellen, dass Pods mit dem angemessenen Maß an Sicherheitsisolierung und Zugriffskontrollen ausgeführt werden, um das Risiko von Sicherheitslücken oder unberechtigtem Zugriff im Cluster zu reduzieren.

Im Grunde wird jedes Mal, wenn eine Pod-Bereitstellung angefordert wird, ein Zulassungsprozess wie folgt ausgeführt:

Diese zusätzliche Sicherheitsebene verbietet standardmäßig die Erstellung privilegierter Pods, das Einhängen des Host-Dateisystems oder das Festlegen von Attributen, die zu einem Privilegieneskalation führen könnten.

Pod Escape Privileges

Liste SCC

Um alle SCCs mit dem Openshift-Client aufzulisten:

$ 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

Alle Benutzer haben Zugriff auf die Standard-SCCs "restricted" und "restricted-v2", die die strengsten SCCs sind.

Verwenden von SCC

Der für ein Pod verwendete SCC ist in einer Annotation definiert:

$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

Wenn ein Benutzer Zugriff auf mehrere SCCs hat, wird das System denjenigen nutzen, der mit den Sicherheitskontextwerten übereinstimmt. Andernfalls wird ein Fehler mit dem Status "forbidden" ausgelöst.

$ 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 Umgehung

OpenShift - SCC bypass

Referenzen

Last updated