Skip to main content

Command Palette

Search for a command to run...

GitHub의 기본 기능을 활용해 저장소를 안전하게 보호하는 방법

Updated
4 min readView as Markdown
GitHub의 기본 기능을 활용해 저장소를 안전하게 보호하는 방법
S

Staff Security 🥑 || 5x GitHub 🌟 || ☁️ OpenUK Security Advisory Board Member || 🎓 Women in Tech/Cyber Mentor || 🏆 #TechWomen100 || 🛡️ Top 30 Women of Influence in Cyber

🛡️ 소개

GitHub에 코드를 호스팅하면 협업, 분산 버전 관리, 높은 가시성, 손쉬운 공유 등 많은 이점을 얻을 수 있습니다. 그러나 공개성과 편의성은 동시에 위험도 수반합니다. 기본 설정 그대로의 GitHub 저장소는 다음과 같은 불필요한 보안 리스크에 노출될 수 있습니다:

  • 실수로 비밀값(Secrets) 커밋

  • 검토되지 않은 코드 병합

  • 취약한 종속성(Dependencies)

  • 변경 권한이 과도하게 열린 상태

이 글은 GitHub의 내장 보안 기능만 활용하여 저장소를 체계적으로 강화하는 방법을 소개합니다. 보안 전문 지식이 없어도 적용할 수 있도록 설계되어 있으며, 오픈소스 유지관리자·기여자·소규모 팀에 적합합니다.

🎯 이 글을 통해 배우는 내용

  • 저장소의 접근 권한 및 공개 범위 관리 방법

  • GitHub의 Security & Analysis 기능 활성화 (종속성 분석, 비밀값 스캐닝, 코드 스캐닝 등)

  • 브랜치 보호 규칙(Branch Protection Rules) 적용 방법

  • SECURITY.md 보안 정책 문서 추가

  • 지속적인 보안 위생(Security Hygiene) 관리 전략

🧩 사전 준비 사항

시작하기 전에 다음을 확인하세요:

  • 해당 저장소에 대한 관리자(Admin) 권한이 있어야 합니다.

  • 저장소가 GitHub에 호스팅되어 있어야 합니다(공개/비공개 모두 가능).

  • 브랜치, PR, 병합 등 Git/GitHub 기본 개념을 알고 있어야 합니다.

  • 가능한 경우, 프로젝트가 의존성 명세 파일과 lock 파일을 사용하고 있어야 합니다.
    이는 GitHub가 종속성을 정확하게 분석하는 데 필수적입니다.

🔐 GitHub 저장소 보안 강화 단계별 가이드

1. 접근 권한 및 공개 범위 점검

🔸 접근 권한 검토

Settings → Manage Access에서
모든 사용자·팀의 읽기/쓰기/관리자 권한을 검토하세요.

  • 필요 없는 권한 → 제거

  • 과도한 권한 → 축소

핵심 원칙: 최소 권한 원칙(Least Privilege)

🔸 공개 범위(Public/Private) 설정

  • 굳이 공개일 필요가 없다면 Private로 전환하여 노출도를 낮추세요.

  • 공개 저장소는 보안 기능이 대부분 무료로 제공되며 활성화가 쉽습니다.

2. Security & Analysis 기능 활성화

GitHub는 공급망 보안, 코드 품질, 비밀값 누출 방지 등을 위해 여러 내장 기능을 제공합니다.

Settings → Security & Analysis에서 설정합니다.

✔ 주요 기능

Dependency Graph

  • 프로젝트의 모든 직접·간접 종속성을 시각화

  • 사실상 프로젝트의 SBOM(Software Bill of Materials) 역할

Dependabot Alerts & Updates

  • 취약한 종속성 자동 탐지

  • 패치 가능한 버전이 있으면 자동 PR 생성 가능

Code Scanning (CodeQL)

정적 분석을 통해 다음을 탐지합니다:

  • 보안 취약점 패턴

  • 위험 함수 사용

  • 논리적 오류

  • 데이터 흐름 문제

Secret Scanning & Push Protection

  • API 키, 토큰 등 비밀값 탐지

  • 유효한 비밀값이 감지되면 푸시 차단 가능

📌 왜 중요한가?

  • 공급망 공격 대부분은 취약한 라이브러리로 시작됩니다.

  • 코드 스캐닝은 개발 초기에 취약점을 차단합니다.

  • 비밀값 스캐닝은 침해 사고로 직결되는 민감 정보 누출을 방지합니다.

3. 브랜치 보호 규칙 설정 (Branch Protection Rules)

브랜치를 보호하면 검토 없이 코드가 병합되는 상황을 방지할 수 있습니다.

🔒 권장 규칙 (main, production branch)

  • PR 없이는 병합 금지 (Require pull request)

  • 승인된 리뷰 최소 1개 요구

  • 필수 상태 검사(Status Checks) 통과 필요

    • CI 테스트

    • Lint

    • Code Scanning 결과

  • Force push 금지 / 브랜치 삭제 금지

  • (선택) 서명된 커밋(Signature) 요구

조직 규모가 크다면?

  • GitHub의 Rulesets 기능 활용
    → 여러 저장소와 브랜치에 일관된 규칙 적용 가능

4. 보안 정책 문서 추가 (SECURITY.md)

SECURITY.md는 다음을 문서화합니다:

  • 취약점 제보 채널

  • 제보 절차

  • 예상 대응 일정

  • 지원하는 버전 범위

이는 사용자 신뢰를 높이고 보안 프로세스를 명확하게 정리하는 효과가 있습니다.

🔄 지속적인 보안 유지·관리

보안은 ‘설정하고 끝’이 아닙니다. 지속적인 보안 위생이 필요합니다.

  • Dependabot / Code Scanning / Secret Scanning 경고 주기적 모니터링

  • 오래된 협업자 권한 제거

  • 새 브랜치에도 동일한 보호 규칙 적용

  • 종속성 정기 업데이트 및 불필요한 의존성 제거

  • README / CONTRIBUTING.md에 보안 관련 작업 흐름 문서화

📋 보안 강화 체크리스트

  • 접근 권한 및 공개 범위 점검 완료

  • Dependency Graph, Dependabot, Code Scanning, Secret Scanning 활성화

  • 주요 브랜치 보호 규칙 설정

  • SECURITY.md 작성 및 포함

  • 경고 모니터링·의존성 관리·권한 정리 등 운영 프로세스 확립

⚠️ 위협 시나리오와 대응 효과

🔹 취약한 종속성

Dependabot은 CVE 발견 → 경고 → 패치 PR까지 자동으로 연결합니다.

🔹 비밀값 유출

Secret Scanning + Push Protection은 유출 전 단계에서 차단합니다.

🔹 검토되지 않은 코드 병합

PR + 리뷰 + CI는 악성 코드 삽입, 실수로 인한 오류 반영을 근본적으로 방지합니다.

🔹 보안 제보 경로 미비

SECURITY.md는 연구자 및 사용자에게 명확한 제보 경로를 제공합니다.

결론

GitHub의 내장 기능만 활용해도 저장소의 보안 수준을 크게 향상할 수 있습니다.
이 가이드를 적용하면:

  • 종속성은 자동으로 모니터링되고,

  • 비밀값 누출 위험은 감소하며,

  • 코드 품질과 변경 프로세스는 강화되고,

  • 기여 워크플로는 보다 안전하게 정돈됩니다.

보안은 시작에 불과합니다. 다음 단계에서는 계정 보안, 자동화된 보안 워크플로, 공급망 보안 강화, 다중 유지관리자 환경에서의 거버넌스를 다룰 예정입니다.

More from this blog

Untitled Publication

12 posts