Pourquoi mon pod ne se construit-il pas avec une erreur de permission refusée à cause d'une contrainte de contexte de sécurité (SCC)?
Cloud privé virtuel Infrastructure classique
Découvrez comment résoudre les erreurs de refus de permission liées aux contraintes de contexte de sécurité (SCC) lors de la construction ou de l'exécution de pods.
Sur un pod système ou tout autre pod qui utilise une contrainte de contexte de sécurité, une opération continue de faire des tentatives mais échoue avec une erreur permission denied. Par exemple, vous pouvez vous connecter au pod
interne image-registry et essayer d'exécuter une commande docker push.
Exemple de message d'erreur lors du transfert d'une image dans le registre interne.
error: build error: Failed to push image: error copying layers and metadata
Le pod peut utiliser un SCC ou appartenir à un groupe de systèmes qui utilise un SCC sans les autorisations correctes. Vous avez peut-être ajouté un groupe de systèmes à un SCC en exécutant la commande oc adm policy add-scc-to-group <scc> system:<group>.
Si le pod monte un volume, les droits du pod autorisés par la contrainte de contexte de sécurité risquent de ne plus permettre au pod de lire ou d'écrire des données sur le volume.
Par exemple, le registre interne monte un volume pour lire et écrire des données d'image dans une instance de stockage de fichiers. Si le groupe system:authenticated auquel appartient le registre interne remplace la contrainte de
sécurité restricted par anyuid, le pod s'exécute avec un autre UID. L'autre UID empêche le pod de registre interne d'insérer des images sur le périphérique de stockage ou d'extraire des images de celui-ci.
Modifiez les droits de contrainte de contexte de sécurité du pod.
-
Décrivez le pod et vérifiez la contrainte de contexte de sécurité
openshift.io/scc: <scc>dans la section des annotations.oc describe pod -n <project> <pod>Exemple de sortie
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 -
Décrivez la contrainte de contexte de sécurité et vérifiez l'utilisateur et les groupes dans la section Access.
oc describe scc <scc>Exemple de sortie
NAME: anyuid Priority: <none> Access: Users: <none> Groups: system:authenticated -
Si vous ne souhaitez pas que l'utilisateur ou le groupe dispose des droits d'accès du SCC, supprimez l'utilisateur ou le groupe du SCC. Pour plus d'informations, passez en revue les contraintes de contexte de sécurité Red Hat OpenShift et IBM Cloud qui sont définies dans le cluster.
oc adm policy remove-scc-from-group <scc> <(user|group)> -
Ajoutez l'utilisateur ou le groupe à la contrainte de contexte de sécurité avec les droits appropriés.
oc adm policy add-scc-to-group <scc> <(user|group)> -
Supprimez le pod de sorte qu'il soit replanifié avec les nouveaux droits de contrainte de contexte de sécurité.
oc delete pod -n <project> <pod>