GitHub를 위한 21가지 보안 모범 사례

GitHub는 사용자와 코드의 보안을 보호하기 위해 매우 적극적으로 노력하고 있습니다. 다중 인증(MFA) 사용을 권장하거나 강제할 뿐만 아니라, 무단 액세스 및 민감한 정보가 공용 리포지토리에 노출되는 것을 방지하는 도구도 개발하여 배포했습니다. 그 결과, GitHub 관련 보안 사고의 대부분은 사용자의 실수로 인해 발생합니다. 이 문서에서는 GitHub 리포지토리와 여기에 포함된 코드 및 데이터의 보안을 보장하기 위해 GitHub를 사용하는 조직이 채택할 수 있는 몇 가지 모범 사례를 살펴봅니다.

백서 다운로드 자세히 알아보기

GitHub를 위한 21가지 보안 모범 사례

다음은 GitHub를 위한 21가지 보안 모범 사례입니다:

#1. 자격 증명 및 민감한 데이터를 Github에 저장하지 마세요.

GitHub는 버전 관리 시스템이므로 여기에 저장된 데이터는 영구적으로 유지됩니다. git-secrets와 같은 도구는 민감한 데이터가 포함된 코드가 GitHub로 푸시되는 것을 차단할 수 있습니다.

#2. 포크 비활성화

포크는 원본 코드베이스에 영향을 주지 않고 GitHub 리포지토리의 복사본을 만듭니다. 포크를 비활성화하여 소스 코드에 대한 제어권을 유지하고 승인되지 않은 포크로 인해 중요한 데이터가 추가되거나 공개되지 않도록 하세요.

#3. 가시성 변경 비활성화

GitHub는 공개 및 비공개 리포지토리를 모두 지원하며 권한이 있는 사용자는 리포지토리의 가시성을 변경할 수 있습니다. 조직의 모든 구성원이 GitHub의 멤버 권한에서 "리포지토리 가시성 변경"을 수정할 수 있는 권한을 비활성화하여 이 작업을 수행할 수 있는 사용자 집합을 제한하세요.

#4. GitHub 애플리케이션 검증

조직은 종종 GitHub 계정에 액세스할 수 있는 타사 개발자와 함께 작업합니다. 이러한 외부 사용자는 접근 권한이 제한되어야 하며, 리포지토리에 추가하기 전에 모든 커밋의 유효성을 검사해야 합니다.

#5. 2단계 인증 적용

GitHub를 사용하면 조직에서 2단계 인증 (2FA)을 사용하도록 강제할 수 있습니다. 모든 사용자에게 2FA를 요구하면 안전하지 않은 계정으로 인한 코드 유출이나 악성 코드의 위험을 줄일 수 있습니다.

#6. SSO 구현(GitHub Enterprise 전용)

GitHub Enterprise를 사용하면 조직에서 다양한 리소스에 대한 권한을 세분화하여 할당할 수 있습니다. 또한 SAML 싱글사인온 (SSO)을 통해 GitHub를 조직의 IAM 솔루션과 통합할 수 있습니다.

#7. 허용된 IP 주소에 대한 액세스 제한

IP 허용 목록을 사용하면 조직에서 온프레미스 디바이스 또는 기업 VPN에 대한 액세스를 제한할 수 있습니다. 이는 전 직원 또는 권한이 없는 디바이스의 리포지토리 액세스를 방지합니다.

#8. 외부 기여자 권한의 철저한 관리

외부 기여자는 단기간 동안만 프로젝트에 참여할 수 있으며, 역할이 완료되면 액세스 권한을 제거해야 합니다. 외부 계정을 관리하면 보안 격차와 GitHub '사용자당' 요금이 줄어듭니다.

#9. 적시에 권한 취소하기

사용자가 회사나 프로젝트를 떠난 후에는 더 이상 리포지토리 액세스 권한이 필요하지 않을 수 있습니다. 액세스 권한을 취소하거나 읽기 전용으로 전환하면 계정과 관련된 위험을 줄일 수 있습니다.

#10. 커밋 서명 필요

사용자의 인식된 신원은 GitHub에서 git 구성을 수정하는 것만으로 변경할 수 있습니다. 코드 서명은 커밋에 암호로 서명하여 신뢰성과 추적성을 보장합니다.

#11. 커밋 전 코드 검토 시행

코드 검토는 커밋에서 잠재적인 보안 취약성이나 악의적인 기능을 식별할 수 있습니다. 모든 제출이 풀 리퀘스트가 되도록 GitHub를 구성하여 병합 전에 검토할 수 있습니다.

#12. Security.md 파일 추가

security.md 파일은 리포지토리에 대한 보안 정책을 공식적으로 문서화합니다. 이를 통해 보안 요구 사항과 취약성 보고 수단을 공유할 수 있습니다.

#13. SSH 키 및 개인용 액세스 토큰(PAT) 교체하기

GitHub는 인증 시 비밀번호 대신 SSH 키와 PAT를 사용합니다. 이러한 자격 증명을 정기적으로 교체하여 유출 가능성이 있는 자격 증명을 제거해야 합니다.

#14. GitHub에 업로드된 모든 코드 감사하기

레거시 및 외부 코드베이스는 애플리케이션의 일부로 GitHub 리포지토리에 추가할 수 있습니다. 이 코드는 코드베이스에 적용하기 전에 잠재적인 취약성에 대한 감사를 받아야 합니다.

#15. 의심스러운 활동이 있는지 GitHub 감사 로그 검토하기

GitHub는 조직의 GitHub 내 활동에 대한 강력한 로깅 기능을 제공합니다. 이러한 로그를 정기적으로 검토하면 잠재적으로 의심스러운 활동과 손상된 계정을 식별하는 데 도움이 될 수 있습니다.

#16. 취약한 종속성에 대한 알림 활성화

애플리케이션은 종속성, 특히 타사 및 오픈 소스 종속성에서 취약성을 상속받을 수 있습니다. GitHub는 조직의 공개 리포지토리에 있는 취약성을 자동으로 보고하는 기능을 제공합니다.

#17. 사전 커밋 시 자동화된 비밀 스캔 사용

애플리케이션에 하드코딩된 자격 증명은 비공개 저장소에서도 노출될 위험이 있습니다. 자동화된 비밀 스캔은 이러한 자격 증명이 커밋된 코드에 포함되지 않도록 식별하고 차단합니다.

#18. GitHub 기록 지우기

민감한 데이터가 코드에 포함되어 있는 경우 GitHub의 광범위한 버전 기록이 문제가 될 수 있습니다. 히스토리는 git filter-branch 명령을 사용하여 다시 작성할 수 있습니다.

#19. Git 브랜치 보호 사용

Git 브랜치 보호는 특정 브랜치에 대한 무단 수정을 방지합니다. 이렇게 하면 이러한 브랜치를 실수로 삭제하거나 git 스쿼시 병합으로 인한 코드 및 데이터 손실로부터 보호할 수 있습니다.

#20. .gitignore에 민감한 파일 추가하기

로컬 Git 리포지토리에 푸시해서는 안 되는 특정 SSK 키 및 액세스 토큰에 대한 액세스가 필요할 수 있습니다. .gitignore에 다음 파일 포함하기 로 설정하면 업로드되지 않습니다.

#21. "비밀 보관소" 서비스 사용

비밀 저장소에는 애플리케이션이 액세스해야 하는 비밀번호, 암호화 키 등의 민감한 정보가 저장됩니다. 볼트는 GitHub에서 제공하는 것보다 더 강력한 보호 기능을 제공합니다.

Achieving GitHub Security with Check Point

GitHub 리포지토리를 사용하는 조직의 경우, 리포지토리에 포함된 코드와 민감한 데이터를 보호하기 위해 보안을 유지하는 것이 필수적입니다.

For more advice on keeping your GitHub repos safe, check out this more comprehensive list of GitHub security best practices. Check Point offers solutions to secure applications throughout the software development lifecycle (SDLC).

Learn more about how your organization can enhance GitHub security with Check Point Developer Security.