Aesthetic Algorithm

[GitHub Push] Push rejected due to repository rule violations 본문

Programming/Probelms&Solving

[GitHub Push] Push rejected due to repository rule violations

미니튜링 2025. 2. 27. 23:54

깃허브로 코드를 푸시하던 중 다음과 같은 오류 발생!

error: failed to push some refs to 'my_git'
remote: error: GH013: Repository rule violations found for refs/heads/main.
remote:
remote: - GITHUB PUSH PROTECTION
remote:   Resolve the following violations before pushing again
remote:
remote:     - Push cannot contain secrets
remote:
remote:      OpenAI API Key detected in the following files:
remote:				# locations
remote:
remote: (?) To push, remove secret from commit(s) or follow this URL to allow the secret.

 

깃허브에는 Push Protection이 있어서, API KEY와 같은 민감한 정보가 포함되었을 때 푸시를 차단한다.

내 경우에는 OPEN AI 의 API 키가 포함되어 있었다.

 

해결 방법을 2가지 제시해 보겠다.

 

1) API키 직접 삭제 후 이전 Commit 기록 삭제

해당 키가 포함된 파일을 찾아 삭제하거나 대체했다. 

그리고, Git이 더 이상 해당 파일을 추적하지 못하도록 하여 푸시 차단이 해제되도록 한다.

# API키가 포함된 파일을 Git의 추적 대상에서 제거
git rm --cached "# file1"
git rm --cached "# file2"
git rm --cached "# file3"

# 변경 사항 commit
git commit -m "Remove API keys from repository"

# 강제 푸시
git push --force origin main

 

2) .gitignore 이용하기

민감한 정보가 포함된 파일을 Git이 추적하지 못하도록 .gitignore 파일에 추가한다.

# 특정 파일 무시
file1
file2
file3

# 모든 `.env` 파일 무시 (환경 변수 저장용)
.env

# 특정 폴더 무시
secrets/

 

그 후, 이미 Git이 추적 중인 파일을 제거한다. 

한 번 캐시에서 삭제를 해 주어야 한다.

git rm --cached file1
git rm --cached file2
git rm --cached file3

 

변경 사항을 푸시한다.

 

API Key를 안전하게 사용하게 위해서는 어떤 방법을 써야 할까?

 

환경 변수 사용하기

각 프로젝트별로 .env 파일을 만들어 키를 관리한다.

 

우선 .env 파일에 API key를 저장한다.

OPENAI_API_KEY="your-api-key-here"

.gitignore에 추가하여 Git에 올라가지 않도록 한다.

.env

Python에서 dotenv 라이브러리를 사용해 load한다.

from dotenv import load_dotenv
import os

load_dotenv()  # .env 파일 로드
api_key = os.getenv("OPENAI_API_KEY")
print(api_key)

 


이러한 GitHub Push Protection이 적용되는 경우는,

이렇게 API Key(AWS, OpenAI, Google Cloud) 등이 포함되는 경우도 있고,

토큰 혹은 비밀번호가 포함되는 경우,

인증서(.pfx, .crt)가 포함되는 경우도 있다고 한다.

 

깃허브는 보안을 강화하고 데이터를 보호하기 위하여 이러한 Protection을 도입한 것이다.

실제로, 해커들이 크롤링 봇을 돌려 API Key 정보를 빼 와 악용하는 사례가 있다고 한다.

무지막지한 과금을 불러올 수도 있고 회사의 기밀 정보에도 접근할 수 있는 만큼 민감 정보에 대한 철저한 보호는 필수적일 것이다.

관련 기사를 2개 첨부한다.

https://www.cio.com/article/3512391/%ED%9A%8C%EC%82%AC-%EA%B8%B0%EB%B0%80-%EC%A4%84%EC%A4%84-%EC%83%8C%EB%8B%A4%C2%B7%C2%B7%C2%B7-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%88%A8%EA%B2%A8%EC%A7%84-%EB%8D%B0.html

 

회사 기밀 '줄줄' 샌다··· 깃허브 저장소에 숨겨진 데이터 유출 위험

몇몇 보안 스타트업도 이러한 문제를 해결하기 위해 고군분투하고 있다. 이를테면 기티릭스(GittyLeaks), 시크릿옵스(SecretOps), 깃릭스(gitLeaks), 깃가디언(GitGuardian)은 비즈니스 사용자와 개인 사용자

www.cio.com

 

https://www.blockmedia.co.kr/archives/266341

 

FTX, 신종 해킹 방식에 당했다... '피싱 웹사이트 통한 거래소 API 키 유출' | 블록미디어

지난 19일 저녁 FTX 거래소의 한 사용자는 자신의 계정에서 갑자기 5,000건 이상의 거래가 미친 듯 진행되고 있음을 발견했다. 그는 자신의 계정에 10개가 넘는 비트코인(BTC)과 수 백 개의 이더리움(

www.blockmedia.co.kr

 

API Key를 보관하는 방법 중 흥미로운 것은 암호화하는 것이다.

이는 다음 포스팅에서 다루어 보도록 하겠다.