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/CD 예제는 CI에서 외부 비밀 사용을 참조하세요.
  • 외부 통신. CI/CD 프로세스가 다른 호스트와의 연결을 필요로 하는 경우, 해당 통신 채널이 암호화되어 있는지 확인하세요. TLS 1.2 또는 1.3을 사용해야 하며 가능한 경우 상호 TLS를 구현해야 합니다.
  • 로그 기록. 로깅은 감사 및 문제 해결에 매우 중요할 수 있으므로 필요한 정보가 로그에 기록되도록 로깅 기능을 활성화하는 것이 중요합니다. 주기적인 테스트를 통해 평문 비밀번호 또는 기타 민감한 정보가 실수로 로그 파일에 추가되지 않도록 확인하세요.

구체적인 권장사항

파이프라인

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

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

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