저장소 보호
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
저장소 보호는 개발 워크플로를 유지하면서 코드베이스에 대한 무단 변경을 방지합니다. 다양한 보호 방법을 결합하면 조직의 기준을 시행하기 위해 함께 작동하는 검증 지점을 만들 수 있습니다. 더 높은 GitLab 티어는 여러 프로젝트 및 그룹에 걸쳐 포괄적인 보안 스캐닝을 적용하고 컴플라이언스를 시행하며 취약점을 관리하는 추가 도구에 액세스할 수 있습니다.
저장소 보호는 개발 워크플로를 유지하면서 코드베이스에 대한 무단 변경을 방지합니다. 이러한 제어는 다음을 포함한 일반적인 개발 과제를 해결하는 데 도움이 됩니다:
- 프로덕션 또는 보호된 브랜치에 실수로 커밋.
- 커밋 기록에서 민감한 데이터 노출.
- 우회된 코드 리뷰 프로세스.
- 중요한 파일에 대한 무단 변경.
- 확인되지 않은 커밋 작성자 신원.
- 메인 브랜치에 들어오는 비준수 코드.
다양한 보호 방법을 결합하면 조직의 기준을 시행하기 위해 함께 작동하는 검증 지점을 만들 수 있습니다.
더 높은 GitLab 티어는 여러 프로젝트 및 그룹에 걸쳐 포괄적인 보안 스캐닝을 적용하고 컴플라이언스를 시행하며 취약점을 관리하는 추가 도구에 액세스할 수 있습니다. 이러한 환경에서는 일부 보호 방법이 이미 조직에서 시행되고 있을 수 있습니다. 이러한 고급 보안 도구에 대한 자세한 내용은 애플리케이션 보안을 참조하십시오.
보호 방법#
GitLab은 저장소를 보호하기 위해 함께 작동하는 여러 보호 방법을 제공합니다. 각 방법은 다른 보안 요구를 처리하며 포괄적인 보호를 위해 결합할 수 있습니다.
| 보호 방법 | 설명 | 사용 시기 | 인스턴스 | 그룹 | 프로젝트 |
|---|---|---|---|---|---|
| 보호된 브랜치 | 코드 안정성과 품질을 보장하기 위해 브랜치 권한을 제어합니다. | 푸시 및 머지할 수 있는 사람을 제어하거나, 실수로 삭제를 방지하거나, 리뷰를 시행하거나, 강제 푸시 권한을 규제합니다. | ❌ | ✅ | ✅ |
| MR 승인 | 변경 사항이 머지되기 전에 승인이 필요한 리뷰 프로세스. | 코드 리뷰를 요구하거나, 승인 규칙을 만들거나, 승인 설정을 구성합니다. | ❌ | ✅ | ✅ |
| 푸시 규칙 | 저장소에 들어오기 전에 커밋, 파일 및 태그를 검증하는 사전 수신 Git 훅. | 커밋 내용을 평가하거나, 브랜치 이름 규칙을 시행하거나, 태그 제거를 방지하거나, 서명된 커밋을 요구합니다. | ✅ | ✅ | ✅ |
| 코드 소유자 | 코드베이스의 특정 파일 및 디렉토리에 대한 전문성을 보유한 사람을 정의합니다. | 특정 파일 변경에 대한 전문가 승인을 요구하거나 코드 유지 관리를 위한 담당자를 식별합니다. | ❌ | ❌ | ✅ |
| 상태 확인 | MR 상태를 검증하는 외부 시스템에 대한 API 호출. | 타사 워크플로 도구와 통합하거나 외부 품질 요구 사항에 대해 검증합니다. | ❌ | ❌ | ✅ |
브랜치 규칙#
여러 보호 방법을 관리하는 데 도움을 주기 위해 GitLab은 보호된 브랜치, 승인 규칙 및 상태 확인을 위한 통합된 브랜치 규칙 인터페이스를 제공합니다. 프로젝트 설정의 브랜치 규칙 페이지를 사용하여 한 위치에서 모든 브랜치 보호를 구성하고, 브랜치 전체의 보호 상태를 보고, 복잡한 보호 조합을 관리합니다.
그룹 보호의 경우 그룹 설정에서 보호된 브랜치 및 푸시 규칙을 구성합니다. 브랜치 규칙 페이지는 프로젝트에서만 사용할 수 있습니다. 그룹 규칙은 그룹의 모든 프로젝트에 적용되며 생성한 프로젝트별 규칙과 함께 작동합니다.
보호 전략 구성#
워크플로 및 보안 요구 사항에 따라 보호 방법을 선택합니다. 다음은 예시 전략입니다.
기본 보호#
모든 저장소에 일관된 보안 기준을 설정하려면:
- 새 프로젝트를 자동으로 보호하기 위해 그룹의 기본 브랜치 보호를 구성합니다.
- 보호된 브랜치를 설정하여 푸시 및 머지할 수 있는 사람을 제어합니다.
- 동료 검토를 시행하기 위해 MR 승인을 요구합니다.
포괄적인 보호#
계층화된 보호로 중요한 프로젝트를 보안하려면:
- 보호된 브랜치 및 승인 규칙을 설정하여 푸시 및 머지할 수 있는 사람을 제어합니다.
- 민감한 로직이 포함된 파일에 대한 코드 소유자 승인을 요구합니다.
- 작성자 신원을 확인하기 위해 서명된 커밋을 시행합니다.
- 자동화된 테스트에 대해 검증하기 위해 상태 확인을 추가합니다.
- 그룹에 푸시 규칙을 적용하여 모든 프로젝트에 기준을 시행합니다.
목표 보호#
특정 보안 요구 사항을 해결하려면:
- 파일에 도메인 전문 지식 검토가 필요할 때 코드 소유자 승인을 요구합니다.
- 커밋 기준 및 콘텐츠 제한을 유지하기 위해 푸시 규칙을 시행합니다.
- 외부 검증이 필요할 때 상태 확인을 추가합니다.
- 워크플로별 요구 사항에 대한 승인 규칙을 구성합니다.
시작하기#
전제 조건:
- 프로젝트에 Maintainer 또는 소유자 역할이 있거나 그룹에 소유자 역할이 있어야 합니다.
- 보호가 필요한 브랜치를 식별합니다.
- 컴플라이언스 및 보안 요구 사항을 결정합니다.
저장소 보호를 구성하고 구현하려면:
-
범위를 선택합니다:
- 그룹 규칙의 경우 그룹의 설정 > 저장소로 이동합니다.
- 프로젝트별 규칙의 경우 프로젝트의 설정 > 저장소 > 브랜치 규칙으로 이동합니다.
-
기본 보호를 설정합니다:
- 기본 브랜치 및 기타 중요한 브랜치에 대한 보호된 브랜치를 만듭니다.
- 그룹 설정에서: 설정 > 저장소 > 보호된 브랜치.
- 프로젝트 설정에서: 설정 > 저장소 > 브랜치 규칙.
- 설정 > Merge requests > MR 승인에서 머지 권한 및 승인 요구 사항을 구성합니다.
- 기본 브랜치 및 기타 중요한 브랜치에 대한 보호된 브랜치를 만듭니다.
-
검토 요구 사항을 추가합니다:
- 특정 파일에 대한
CODEOWNERS파일에 코드 소유자를 정의합니다. - 설정 > Merge requests에서 승인 규칙을 설정합니다.
- 특정 파일에 대한
-
보안 제어를 활성화합니다:
- 푸시 규칙을 구성합니다:
- 그룹의 경우: 설정 > 저장소 > 푸시 규칙.
- 프로젝트의 경우: 설정 > 저장소 > 푸시 규칙.
- 설정 > 저장소 > 푸시 규칙 > 서명되지 않은 커밋 거부에서 서명된 커밋을 활성화합니다.
- 푸시 규칙을 구성합니다:
-
구성을 테스트합니다:
- 테스트 MR을 만듭니다.
- 보호 규칙이 올바르게 트리거되는지 확인합니다.
- 결과에 따라 설정을 조정합니다.
