Hardening - CI/CD 권장사항

일반적인 강화 가이드라인과 철학은 메인 강화 문서에 개요되어 있습니다.

CI/CD를 위한 강화 권장 및 컨셉은 아래에 나열되어 있습니다.

기본 권장사항

다양한 CI/CD 설정을 구성하는 방법은 CI/CD의 사용 용도에 따라 다릅니다. 예를 들어 패키지 빌드에 사용하는 경우 Docker 이미지나 외부 코드 저장소와 같은 외부 자원에 대한 실시간 액세스가 필요합니다. IaC(Infrastructure as Code)에 사용하는 경우 외부 시스템의 자격 증명을 저장하여 배포를 자동화해야 합니다. 이와 같은 여러 시나리오에서는 CI/CD 작업 중에 잠재적으로 민감한 정보를 저장해야 합니다. 각 시나리오 자체가 많기 때문에, CI/CD 프로세스를 강화하기 위해 몇 가지 기본 정보를 요약해보았습니다.

  • 비밀 관리. 보안 수준이 필요한 비밀번호, 토큰, 키 및 기타 비밀은 평문으로 저장해서는 안 됩니다. GCP Secret Manager, AWS KMS 또는 HashiCorp Vault와 같은 암호화된 컨테이너 기술을 사용해야 합니다. Self-Managed 및 독립형 인스턴스의 경우, HashiCorp Vault를 권장하며, 많은 GitLab 기능이 Vault를 활용할 수 있으며 메인 문서에서 상세한 CI/CD 예제를 확인할 수 있습니다. 자세한 내용은 CI에서 외부 비밀 사용하기를 참조하세요.
  • 외부 통신. CI/CD 프로세스가 다른 호스트와의 연결성을 필요로 하는 경우, 이러한 통신 채널이 암호화되어 있는지 확인하세요. TLS 1.2 또는 1.3을 사용해야 하며 가능한 경우 상호 TLS를 구현해야 합니다.
  • 로깅. 로깅은 감사 및 문제 해결에 매우 중요할 수 있으므로 필요한 정보를 로그에서 제대로 받을 수 있도록 로깅 기능을 활성화하는 것이 중요합니다. 주기적인 테스트를 통해 평문 비밀이나 다른 민감한 정보가 로그 파일에 무심코 추가되지 않도록 확인하세요.

구체적인 권장사항

파이프라인

파이프라인은 프로젝트 사용자를 대신하여 단계별로 작업을 실행하는 잡(job)의 일부입니다. CD/CD의 핵심 구성 요소입니다.

기본 설정에서는 기본 브랜치만 보호된 파이프라인을 받습니다. 프로젝트 소유자는 보호된 브랜치 구성을 설정함으로써 다른 브랜치가 보호되도록 할 수 있습니다. 이를 통해 파이프라인에 대한 보다 제한된 보안을 설정할 수 있습니다. 자세한 내용은 보호된 브랜치에서 파이프라인 보안을 참조하세요.

배포는 CI/CD의 일부로, 특정 환경과 관련하여 파이프라인의 결과물을 배포합니다. 기본 설정은 많은 제약을 가하지 않으며, 다양한 역할과 책임을 가진 사용자가 해당 환경과 상호 작용할 수 있는 파이프라인을 트리거할 수 있으므로 이러한 환경을 제한해야 합니다. 자세한 내용은 보호된 환경을 참조하세요.