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와 같은 암호화된 컨테이너 기술을 사용해야 합니다. 자체 관리 및 독립형 인스턴스의 경우 HashiCorp Vault를 권장하며 많은 GitLab 기능이 Vault를 활용할 수 있으며, 이에 대한 자세한 CI/CD 예제는 외부 시크릿 사용을 참조하십시오.
  • 외부 통신. CI/CD 프로세스가 다른 호스트에 연결해야 하는 경우 통신 채널이 암호화되어 있는지 확인하십시오. TLS 1.2 또는 1.3을 사용하고 가능한 경우 상호 TLS를 구현하십시오.
  • 로깅. 로깅은 감사 및 문제 해결에 매우 중요할 수 있으므로 필요한 정보가 로그에 기록되도록 로깅 기능을 활성화하는 것이 중요합니다. 주기적인 테스트를 통해 평문 시크릿 또는 기타 민감한 정보가 로그 파일에 무심코 추가되지 않도록 해야 합니다.

구체적인 권장사항

파이프라인

파이프라인은 프로젝트 사용자를 대신하여 단계별로 작업을 자동화하는 작업의 일부입니다. 이것은 CI/CD의 핵심 구성 요소입니다.

기본적으로 기본 브랜치만 보호된 파이프라인을 받습니다. 프로젝트 소유자는 보호된 브랜치 구성을 통해 다른 브랜치도 보호되도록 할 수 있습니다. 이를 통해 보다 제한적인 보안이 가능합니다. 자세한 내용은 보호된 브랜치의 파이프라인 보안을 참조하십시오.

배포는 파이프라인 결과물을 특정 환경과 관련하여 배포하는 것입니다. 기본 설정에서는 많은 제한이 없으며, 다른 역할과 책임을 지닌 다른 사용자들이 해당 환경과 상호 작용할 수 있는 파이프라인을 트리거할 수 있으므로 이러한 환경을 제한해야 합니다. 자세한 내용은 보호된 환경을 참조하십시오.