보안 컨텍스트 제약(SCC)으로 인해 권한 거부 오류와 함께 파드가 빌드되지 않는 이유는 무엇인가요?
가상 프라이빗 클라우드 클래식 인프라
파드를 빌드하거나 실행할 때 보안 컨텍스트 제약(SCC)과 관련된 권한 거부 오류를 해결하는 방법을 알아보세요.
보안 컨텍스트 제한조건(SCC)을 사용하는 시스템 팟(Pod) 또는 다른 팟(Pod)에, 계속 재시도를 해도 permission denied 오류로 실패하는 조작이 있습니다. 예를 들어 내부 image-registry 파드에 로그인하여 docker push 명령을 실행해 볼 수 있습니다.
이미지를 내부 레지스트리에 푸시할 때 발생하는 오류 메시지 예시입니다.
error: build error: Failed to push image: error copying layers and metadata
파드가 SCC를 사용하거나 올바른 권한 없이 SCC를 사용하는 시스템 그룹에 속할 수 있습니다. oc adm policy add-scc-to-group <scc> system:<group> 명령을 실행하여 SCC에 시스템 그룹을 추가했을 수 있습니다.
팟(Pod)이 볼륨을 마운트하는 경우, SCC에 의해 부여된 팟(Pod)의 권한으로는 더 이상 볼륨에 데이터를 읽거나 쓸 수 없습니다.
예를 들어, 내부 레지스트리는 파일 스토리지 인스턴스에 이미지 데이터를 읽고 쓰기 위해 볼륨을 마운트합니다. 내부 레지스트리가 속한 system:authenticated 그룹이 SCC를 restricted에서 anyuid로 변경하면 팟(Pod)이 다른 UID로 실행됩니다. 다른 UID로 인해 내부 레지스트리 팟(Pod)이 스토리지 디바이스에서 이미지를 푸시하거나
가져올 수 없게 됩니다.
팟(Pod)의 SCC 권한을 변경하십시오.
-
팟(Pod)에 대해 설명하고 Annotations 섹션에서
openshift.io/scc: <scc>보안 컨텍스트 제한조건을 확인하십시오.oc describe pod -n <project> <pod>출력 예
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 -
보안 컨텍스트 제한조건을 설명하고 액세스 섹션에서 사용자 및 그룹을 확인하십시오.
oc describe scc <scc>출력 예
NAME: anyuid Priority: <none> Access: Users: <none> Groups: system:authenticated -
사용자 또는 그룹이 SCC의 권한을 갖도록 하지 않으려면 SCC에서 사용자 또는 그룹을 제거하십시오. 자세한 정보는 기본 Red Hat OpenShift 및 클러스터에 설정된 IBM Cloud SCC를 검토하십시오.
oc adm policy remove-scc-from-group <scc> <(user|group)> -
적절한 권한으로 사용자 또는 그룹을 SCC에 추가하십시오.
oc adm policy add-scc-to-group <scc> <(user|group)> -
팟(Pod)이 새 SCC 권한으로 다시 스케줄되도록 팟(Pod)을 삭제하십시오.
oc delete pod -n <project> <pod>