Perché il pod non viene compilato con un errore di autorizzazione negata a causa del vincolo del contesto di sicurezza (SCC)?
Virtual Private Cloud Infrastruttura classica
Imparate a risolvere gli errori di autorizzazione negata relativi ai vincoli del contesto di sicurezza (SCC) durante la creazione o l'esecuzione dei pod.
Un pod di sistema o un altro pod che utilizza un vincolo di contesto di sicurezza (o SCC, security context constraint) ha un'operazione che continua a effettuare nuovi tentativi ma non riesce con un errore permission denied. Ad esempio,
si potrebbe accedere al pod interno image-registry e provare a eseguire un comando docker push.
Esempio di messaggio di errore durante il push di un'immagine nel registro interno.
error: build error: Failed to push image: error copying layers and metadata
Il pod potrebbe utilizzare un SCC o appartenere a un gruppo di sistema che utilizza un SCC senza le autorizzazioni corrette. È possibile che abbiate aggiunto un gruppo di sistema a un SCC eseguendo il comando oc adm policy add-scc-to-group <scc> system:<group>.
Se il pod monta un volume, le autorizzazioni del pod autorizzate da SCC potrebbero non consentire più al pod di leggere o scrivere dati sul volume.
Ad esempio, il registro interno monta un volume per leggere e scrivere i dati di immagine in un'istanza di archiviazione file. Se il gruppo system:authenticated a cui appartiene il registro interno modifica l'SCC da restricted a anyuid, il pod viene eseguito con un UID diverso. L'UID diverso impedisce al pod del registro interno di eseguire il push o il pull delle immagini dal dispositivo di archiviazione.
Modifica le autorizzazioni SCC del pod.
-
Descrivere il pod e controllare il vincolo del contesto di sicurezza
openshift.io/scc: <scc>nella sezione Annotazioni.oc describe pod -n <project> <pod>Output di esempio
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 -
Descrivi il vincolo del contesto di sicurezza (SCC) e controlla gli utenti e i gruppi nella sezione Access.
oc describe scc <scc>Output di esempio
NAME: anyuid Priority: <none> Access: Users: <none> Groups: system:authenticated -
Se non volete che l'utente o il gruppo abbia i permessi dell'SCC, rimuovete l'utente o il gruppo dall'SCC. Per ulteriori informazioni, consultare le sezioni predefinite Red Hat OpenShift e IBM Cloud SCC impostati nel cluster.
oc adm policy remove-scc-from-group <scc> <(user|group)> -
Aggiungi l'utente o il gruppo all'SCC con le autorizzazioni appropriate.
oc adm policy add-scc-to-group <scc> <(user|group)> -
Elimina il pod in modo che venga ripianificato con le nuove autorizzazioni SCC.
oc delete pod -n <project> <pod>