Warum wird mein Pod aufgrund einer Sicherheitskontextbeschränkung (SCC) nicht mit dem Fehler "Zugriff verweigert" erstellt?

Virtuelle Private Cloud Klassische Infrastruktur

Erfahren Sie, wie Sie Fehler bei verweigerten Berechtigungen im Zusammenhang mit Sicherheitskontexteinschränkungen (SCC) beim Erstellen oder Ausführen von Pods beheben können.

Ein Systempod oder ein anderer Pod, der eine Sicherheitskontexteinschränkung (SCC) verwendet, hat eine Operation, die den Versuch wiederholt, aber mit dem Fehler permission denied (Berechtigung verweigert) fehlschlägt. Sie könnten sich zum Beispiel beim internen image-registry pod anmelden und versuchen, einen docker push Befehl auszuführen.

Beispiel für eine Fehlermeldung beim Übertragen eines Bildes in die interne Registrierung.

error: build error: Failed to push image: error copying layers and metadata

Der Pod verwendet möglicherweise eine SCC oder gehört zu einer Systemgruppe, die eine SCC ohne die richtigen Berechtigungen verwendet. Sie haben möglicherweise eine Systemgruppe zu einer SCC hinzugefügt, indem Sie den Befehl oc adm policy add-scc-to-group <scc> system:<group> ausgeführt haben.

Wenn der Pod einen Datenträger anhängt, lassen die Berechtigungen des Pods, die vom SCC autorisiert werden, möglicherweise nicht mehr zu, dass der Pod Daten auf den Datenträger schreibt oder daraus liest.

Beispiel: Die interne Registry hängt einen Datenträger an, um Imagedaten in eine Dateispeicherinstanz zu schreiben oder daraus zu lesen. Wenn die Gruppe system:authenticated, zu der die interne Registry gehört, den SCC von restricted in anyuid ändert, wird der Pod mit einer anderen UID ausgeführt. Die andere UID hindert den Pod der internen Registry daran, Images mit Push-Operation in die Speichereinheit zu übertragen oder mit Pull-Operation aus ihr zu extrahieren.

Ändern Sie die SCC-Berechtigungen des Pods.

  1. Beschreiben Sie den Pod und überprüfen Sie die Integritätsbedingung für den openshift.io/scc: <scc>-Sicherheitskontext im Abschnitt Anmerkungen.

    oc describe pod -n <project> <pod>
    

    Beispielausgabe

    NAME:               image-registry-1234567
    Namespace:          openshift-image-registry
    Priority:           2000000000
    PriorityClassName:  system-cluster-critical
    Node:               10.xxx.xx.xxx/10.xxx.xx.xxx
    Start Time:         Wed, 19 Feb 2020 15:38:53 -0500
    Labels:             docker-registry=default
    Annotations:        openshift.io/scc: anyuid
    
  2. Beschreiben Sie die Sicherheitskontexteinschränkung und prüfen Sie die Benutzer und Gruppen im Abschnitt Zugriff.

    oc describe scc <scc>
    

    Beispielausgabe

    NAME:                        anyuid
    Priority:                    <none>
    Access:                        
        Users:                    <none>
        Groups:                    system:authenticated
    
  3. Wenn der Benutzer oder die Gruppe nicht über die Berechtigungen der SCC verfügen soll, entfernen Sie den Benutzer oder die Gruppe aus der SCC. Weitere Informationen hierzu finden Sie in den Standard-SCCs von Red Hat OpenShift und IBM Cloud, die im Cluster festgelegt sind.

    oc adm policy remove-scc-from-group <scc> <(user|group)>
    
  4. Fügen Sie den Benutzer oder die Gruppe mit den entsprechenden Berechtigungen zum SCC hinzu.

    oc adm policy add-scc-to-group <scc> <(user|group)>
    
  5. Löschen Sie den Pod, sodass er mit den neuen SCC-Berechtigungen neu terminiert wird.

    oc delete pod -n <project> <pod>