Securing Your CICD Pipelines: Best Practices and Strategies By Adrien Pessu
- CI/CD 파이프라인은 코드 실행, 네트워크 접근, 모듈성으로 인해 보안 취약점에 노출되기 쉽습니다. 🚨
- 이슈 본문이나 PR 댓글 등 사용자 입력값을 스크립트에 직접 사용하는 것은 코드 인젝션 공격으로 이어질 수 있습니다. 💥
- Base64 인코딩이나 암호화/복호화 과정을 거쳐도 CI/CD 로그를 통해 GitHub 토큰, 클라우드 접근 키 등 민감한 비밀 정보가 노출될 수 있습니다. 🔑
- 커뮤니티 기반 액션 사용 시 공급망 공격에 취약하며, 신뢰할 수 없는 외부 코드를 실행하는 것은 큰 위험을 초래합니다. 🔗
- GitHub의 비공개 권고 시스템과 Dependabot은 오픈소스 프로젝트의 공급망 취약점을 사전에 보고하고 해결하는 데 도움을 줍니다. 🛡️
- 액션 사용 시 브랜치나 태그 대신 특정 커밋의 SHA를 고정하여 예상치 못한 코드 변경으로 인한 위험을 방지해야 합니다. 📌
- CodeQL과 같은 SAST 도구를 사용하여 CI/CD 코드 내의 코드 인젝션, 비밀 노출, 부적절한 접근 제어 등 보안 취약점을 자동으로 탐지하고 수정 제안을 받을 수 있습니다. 🔍
- GitHub의 비밀 스캐닝 및 푸시 보호 기능은 공개 저장소에 민감한 토큰이 커밋되는 것을 실시간으로 방지하고, 유출 시 제공업체에 통보하여 무효화합니다. ⏱️
- OIDC(OpenID Connect)를 활용하여 장기 토큰 저장 없이 GitHub와 클라우드 제공업체 간의 신뢰 관계를 통해 안전하게 인증할 수 있습니다. 🤝
- 최소 권한 원칙을 적용하고, 사용자 입력 검증,
pull_request_target에서 코드 체크아웃 금지, 공개 저장소에 자체 호스팅 러너 사용 금지 등 모범 사례를 준수해야 합니다. 🔒
- 조직 수준에서 특정 액션 사용을 제한하거나 CI/CD 설정 변경 시 특정 검토자를 지정하는 정책을 구현하여 보안을 강화할 수 있습니다. ⚙️