셀프 매니지드 러너의 보안
셀프 매니지드 GitLab Runner의 보안 위험과 강화 옵션에 대해 설명합니다.
GitLab CI/CD 파이프라인은 단순하거나 복잡한 DevOps 자동화 작업에 사용되는 워크플로우 자동화 엔진입니다. 파이프라인은 원격 코드 실행 서비스를 제공하므로 보안 위험을 줄이기 위해 다음 프로세스를 구현해야 합니다: 전체 기술 스택의 보안을 체계적으로 구성하는 접근 방식 플랫폼의 구성과 사용에 대한 지속적이고 엄격한 검토 GitLab CI/CD 잡을 셀프 매니지드 러너에서 실행할 계획이라면, 컴퓨팅 인프라와 네트워크에 보안 위험이 존재합니다. 러너는 CI/CD 잡에 정의된 코드를 실행합니다. 프로젝트 리포지터리에 대한 Developer 권한을 가진 사용자는 의도적이든 아니든 러너를 호스팅하는 환경의 보안을 침해할 수 있습니다. 셀프 매니지드 러너가 비에페머럴(non-ephemeral)하고 여러 프로젝트에 사용되는 경우 이 위험은 더욱 심각합니다. 악성 코드가 포함된 리포지터리의 잡은 비에페머럴 러너가 서비스하는 다른 리포지터리의 보안을 침해할 수 있습니다. Executor에 따라 잡은 러너가 호스팅된 가상 머신에 악성 코드를 설치할 수 있습니다. 침해된 환경에서 실행되는 잡에 노출된 시크릿 변수( CI_JOB_TOKEN 포함)는 탈취될 수 있습니다. Developer 권한을 가진 사용자는 업스트림 프로젝트에 대한 접근 권한 없이도 프로젝트와 관련된 서브모듈에 접근할 수 있습니다. Executor별 보안 위험 # 사용하는 Executor에 따라 다른 보안 위험에 직면할 수 있습니다. Shell executor 사용 # shell executor로 빌드를 실행할 때 러너 호스트와 네트워크에 높은 보안 위험이 존재합니다 . 잡은 GitLab Runner 사용자의 권한으로 실행되며, 해당 서버에서 실행되는 다른 프로젝트의 코드를 탈취할 수 있습니다. 신뢰할 수 있는 빌드 실행에만 사용하십시오. Docker executor 사용 # Docker는 비특권 모드로 실행될 때 안전하다고 간주할 수 있습니다 . 이러한 구성을 더욱 안전하게 만들려면 sudo 가 비활성화되거나 SETUID 및 SETGID 기능이 제거된 Docker 컨테이너에서 비루트 사용자로 잡을 실행하십시오. cap_add / cap_drop 설정을 통해 비특권 모드에서 더 세밀한 권한을 구성할 수 있습니다. Warning Docker의 특권 컨테이너는 호스트 VM의 모든 루트 권한을 가집니다. 자세한 내용은 런타임 권한 및 Linux 기능 에 관한 공식 Docker 문서를 참조하십시오. 컨테이너를 특권 모드로 실행하는 것은 권장하지 않습니다 . 특권 모드를 활성화하면 CI/CD 잡을 실행하는 사용자가 러너의 호스트 시스템에 대한 완전한 루트 접근 권한, 볼륨 마운트 및 분리 권한, 중첩 컨테이너 실행 권한을 얻을 수 있습니다. 특권 모드를 활성화하면 컨테이너의 모든 보안 메커니즘을 사실상 비활성화하고 호스트를 권한 상승에 노출시키며, 이는 컨테이너 탈출로 이어질 수 있습니다. Docker Machine executor를 사용하는 경우, 단일 자동 스케일링된 VM(특권 모드로
