This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.11. 전략에 따른 빌드 보안
OpenShift Container Platform의 빌드는 권한이 있는 컨테이너에서 실행됩니다. 권한이 있는 경우 사용한 빌드 전략에 따라 빌드를 실행하여 클러스터 및 호스트 노드에 대한 권한을 에스컬레이션할 수 있습니다. 그리고 일종의 보안 조치로 빌드 및 해당 빌드에 사용하는 전략을 실행할 수 있는 사람을 제한합니다. 사용자 정의 빌드는 권한 있는 컨테이너 내의 모든 코드를 실행할 수 있기 때문에 본질적으로 소스 빌드보다 안전하지 않으며, 기본적으로 비활성화되어 있습니다. Dockerfile 처리 논리의 취약성으로 인해 호스트 노드에 권한이 부여될 수 있으므로 Docker 빌드 권한을 주의하여 부여하십시오.
기본적으로 빌드를 생성할 수 있는 모든 사용자에게 Docker 및 S2I(Source-to-image) 빌드 전략을 사용할 수 있는 권한이 부여됩니다. 클러스터 관리자 권한이 있는 사용자는 ‘전역적으로 빌드 전략을 사용자로 제한’ 섹션에 언급된 대로 사용자 정의 빌드 전략을 활성화할 수 있습니다.
권한 부여 정책을 사용하여 빌드할 수 있는 사용자와 이들이 사용할 수 있는 빌드 전략을 제어할 수 있습니다. 각 빌드 전략에는 해당 빌드의 하위 소스가 있습니다. 사용자는 빌드를 생성할 수 있는 권한과 해당 전략을 사용하여 빌드를 생성하기 위해 빌드 전략 하위 리소스에서 생성할 수 있는 권한이 있어야 합니다. 빌드 전략 하위 리소스에 생성 권한을 부여하는 기본 역할이 제공됩니다.
전략 | 하위 리소스 | 역할 |
---|---|---|
Docker | 빌드/Docker | system:build-strategy-docker |
S2I(Source-to-Image) | 빌드/소스 | system:build-strategy-source |
사용자 정의 | 빌드/사용자 정의 | system:build-strategy-custom |
JenkinsPipeline | builds/jenkinspipeline | system:build-strategy-jenkinspipeline |
2.11.1. 전역적으로 빌드 전략에 대한 액세스 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
특정 빌드 전략에 대한 액세스를 전역적으로 방지하려면 클러스터 관리자 권한이 있는 사용자로 로그인하여 system:authenticated
그룹에서 해당 역할을 제거한 후 주석 rbac.authorization.kubernetes.io/autoupdate: "false"
를 적용하여 API를 재시작할 때마다 변경되지 않도록 보호하십시오. 다음 예제에서는 Docker 빌드 전략을 비활성화하는 방법을 보여줍니다.
프로세스
rbac.authorization.kubernetes.io/autoupdate
주석을 적용합니다.oc edit clusterrolebinding system:build-strategy-docker-binding
$ oc edit clusterrolebinding system:build-strategy-docker-binding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
rbac.authorization.kubernetes.io/autoupdate
주석 값을"false"
로 변경합니다.
역할을 제거합니다.
oc adm policy remove-cluster-role-from-group system:build-strategy-docker system:authenticated
$ oc adm policy remove-cluster-role-from-group system:build-strategy-docker system:authenticated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 빌드 전략 하위 소스도 이러한 역할에서 제거되었는지 확인합니다.
oc edit clusterrole admin
$ oc edit clusterrole admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit clusterrole edit
$ oc edit clusterrole edit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 역할에 대해 비활성화할 전략 리소스에 해당하는 하위 리소스를 지정합니다.
admin에 대한 Docker 빌드 전략을 비활성화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- admin 역할의 사용자에 대해 Docker 빌드를 전역적으로 비활성화하는
builds/custom
및builds/source
를 추가합니다.
2.11.2. 전역적으로 빌드 전략을 사용자로 제한 링크 복사링크가 클립보드에 복사되었습니다!
특정 사용자 집합이 특정 전략을 사용하여 빌드를 생성하도록 허용할 수 있습니다.
사전 요구 사항
- 빌드 전략에 대한 글로벌 액세스 권한을 비활성화합니다.
프로세스
빌드 전략에 해당하는 역할을 특정 사용자에게 할당합니다. 예를 들어
system:build-strategy-docker
클러스터 역할을 사용자devuser
에 추가하려면 다음을 수행합니다.oc adm policy add-cluster-role-to-user system:build-strategy-docker devuser
$ oc adm policy add-cluster-role-to-user system:build-strategy-docker devuser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의클러스터 수준의 사용자 액세스 권한을
builds/docker
하위 리소스에 부여하면 사용자가 빌드를 생성할 수 있는 모든 프로젝트에서 Docker 전략을 사용하여 빌드를 생성할 수 있습니다.
2.11.3. 프로젝트 내 사용자로 빌드 전략 제한 링크 복사링크가 클립보드에 복사되었습니다!
전역적으로 사용자에게 빌드 전략 역할을 부여하는 것과 유사하게 프로젝트 내의 특정 사용자 집합이 특정 전략을 사용하여 빌드를 생성하도록 허용할 수 있습니다.
사전 요구 사항
- 빌드 전략에 대한 글로벌 액세스 권한을 비활성화합니다.
프로세스
빌드 전략에 해당하는 역할을 특정 프로젝트 내 사용자에게 할당합니다. 예를 들어 프로젝트
devproject
내에서system:build-strategy-docker
역할을 사용자devuser
에 추가하려면 다음을 실행합니다.oc adm policy add-role-to-user system:build-strategy-docker devuser -n devproject
$ oc adm policy add-role-to-user system:build-strategy-docker devuser -n devproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow