
데브옵스
GitLab Secrets Manager로 CI/CD 시크릿 유출 막기
두줄요약
GitLab CI/CD 변수의 마스킹 한계를 재현하고, job 단위로 시크릿을 제한하는 Secrets Manager를 소개했습니다. 별도 Vault 운영 부담을 줄이면서 감사와 범위 통제를 강화하는 방법을 정리했습니다.
핵심 내용
- GitLab CI/CD 변수의 Masked 마스킹은 원본 문자열과 정확히 일치할 때만 가려져 base64 같은 변형 출력에는 취약
- CI/CD 변수는 기본적으로 모든 job에 주입되어 요청하지 않은 job에서도 시크릿 접근 위험 존재
- GitLab Secrets Manager는 OpenBao 기반으로, 명시적으로 요청한 job에만 시크릿을 전달하고 실행 후 폐기하는 방식
- 기존 그룹·프로젝트 권한과 감사 체계를 재사용해 별도 Vault 운영 부담을 줄이는 방향
주의할 점
- 마스킹은 보안 통제보다 우발적 노출 완화에 가까워 핵심 방어 수단으로 보긴 어려움
- 회전은 자동이 아니라 알림 중심이며, 단기 자격이나 클라우드 인증은 OIDC 같은 별도 수단과 병행 필요
- 현재 퍼블릭 베타 단계로 기능 변화 가능성이 있고, Premium·Ultimate 및 self-managed 운영 부담도 고려 필요
적용해볼 점
- CI/CD 시크릿을 변수에서 job 단위 요청 방식으로 전환하는 방향 검토
- 시크릿 범위를 환경·브랜치 기준으로 좁혀 침해 반경 축소
- 감사 추적과 회수 절차를 함께 정리해 유출 대응 가능성 강화
