Self-hosted runner 는 기본 신뢰 안 되는 코드 실행
Repo 가 누구의 PR 이든 받으면 그 PR 에 workflow 변경 포함 가능. 격리 없으면 악성 PR 이: filesystem 읽기, env var dump, backdoor 설치, 디스크 캐시 secret 빼돌리기. 기본 설정은 위험.
Hardening 체크리스트
- Public fork 에 노출 금지. Repo Settings → Actions → Require approval for outside collaborators (또는 모든 PR).
- Ephemeral runner 사용. VM 라이프사이클 당 한 job. Job 후 VM 파괴. 도구: actions-runner-controller (k8s), runs-on (AWS), philips-labs/terraform-aws-github-runner.
- Container 나 VM 에서 실행. Host OS 직접 runner agent 실행 금지.
- 엄격한 네트워크 egress. GitHub + 의도된 타겟 outbound 만 허용. 기본 allow 차단.
- 신뢰 계층 분리. Public-PR runner 와 신뢰 deploy-runner 는 host 공유 금지.
- 등록 시점 secret, 디스크 아님. Runner image 에 secret 굽지 마. OIDC + job 별 secret 주입.
- 패치 + rotation. Runner agent 는 자동 업데이트; OS 패치는 아빠 책임.