Project Management/Github

중요한 정보가 노출되었을 경우 (git filter-repo/bfg로 안되는 경우)

bluebamus 2023. 1. 11.

어처구니 없는 경험을 하게 되어 기록으로 남김

 

이전 작업 : 실수로 .env 파일의 개인 키들이 업로드 되었고, 얼마 되지 않아 각 벤더들로 부터 경고 메일이 도착함

해당 commit을 삭제하고 벤더들의 key를 삭제하고 암호를 바꾸고 이 외 보안을 요구하는 작업을 전부 수행하였다.

 

그리고 잊고 있었다.

 

문제 발생 : mailgun에서 메일이 도착하였다. 특정 tree에 여전히 해당 파일이 남아 있다고 말이다.

 

기본적으로 해당 링크에 들어가면 상단에 이와 같은 에러가 등장한다.

"This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository."

 

즉 지워진 commit이다.

 

파일도 없고 트리도 존재하지 않는 commit이다.

 

그렇다면 무엇일까? 검색을 정말 오랫동안하고 알아본 결과 다음 글의 댓글에서 힌트를 얻을 수 있었다.

ref : https://parksb.github.io/article/28.html

 

Git 사용 중 자주 만나는 이슈 정리: 코딩보다 어려운 버전 관리

깃으로 버전 관리를 하다보면 각종 이슈가 자주 발목을 잡는다. 특히 복잡한 프로젝트의 경우 그 정도가 심한데… 입사 이후 '지금까지 내가 한 건 깃이 아니구나’를 깨닫고 더 공부해 보기로

parksb.github.io

 

캐시 문제인것은 알았고 혹시나 하는 마음에 

git filter-repo와 bfg를 사용하여 삭제를 시도해보았다.

git filter-repo의 사용은 몇번 시도를 해보다 너무 난해하고 이해하지 못한 상태로 더 이상 사용해보기에 

문제가 커질거 같아서 bfg를 사용해 보았다.

 

몇번의 실수 끝에 .env를 모든 commit에서 삭제할 수 있었다.

 

하지만, 캐시는 그대로였다.

 

여기서 문제는 캐시는 내가 어떻게 할 수 없는 영역이었다는 것을 이제사 깨닿게 되었다는 것이다.

 

github 고객센터에 방문하여 질문을 남기기로 했다

ref : https://support.github.com/request

 

GitHub 지원

Git 또는 GitHub에 대해 다른 질문이 있습니까? 커뮤니티 포럼의 전문가와 교류하기

support.github.com

처음 사용해 보는 것이지만 재밌는건 챗봇으로 질문을 던지고 관련한 링크를 받아서 접수를 받고 처리를 하는 구조였다.

 

하루가 지나고 메일을 받을 수 있었다. 처리가 완료되었다는 답변이었다.

 

이제 남은 보안작업을 수행하면 될 것이다.

 

이러한 과정을 밟는데 있어서 정말 오랜 검색과 시도 과정을 겪었다.

stackoverflow의 경우도 모든 commit에서 삭제를 해보라는 글만 찾을 수 있었다.

 

혹시나 그 누군가에게 도움이 되길 바라며 기록을 남긴다.

 

 


똑같은 일을 반복하고, 다시 이 글을 찾아보면서 부족한 정보를 업데이트 한다.

 - 참고한 포스팅들에서는 클론한 폴더 밖에서 하라고 되어 있는데 테스트 결과 내부로 이동 후 실행해야 동작한다.

git clone --mirror [리포지토리 주소]

java -jar [jar파일 경로] --delete-files [삭제하고자 하는 파일, 경로가 있다면 포함]

git reflog expire --expire=now --all && git gc --prune=now --aggressive

git push

 

 

reference : 

https://llshl.tistory.com/30

 

[Git] BFG Repo-Cleaner를 사용한 민감한 히스토리 삭제

어제 AWS 관련 인증 키들을 깃허브 리포지토리에 올려놓고 있었다는 사실을 알게 됐다. 깃허브에서 지우고 다시 커밋되지 않도록 .gitignore에 등록하였지만 리포지토리 히스토리상에는 이미 수 없

llshl.tistory.com

https://www.lesstif.com/gitbook/bfg-repo-cleaner-git-repository-129007840.html

 

bfg-repo-cleaner 로 git repository 에 올린 민감한 정보 삭제하기

 

www.lesstif.com

https://rtyley.github.io/bfg-repo-cleaner/

 

BFG Repo-Cleaner by rtyley

$ bfg --strip-blobs-bigger-than 100M --replace-text banned.txt repo.git an alternative to git-filter-branch The BFG is a simpler, faster alternative to git-filter-branch for cleansing bad data out of your Git repository history: Removing Crazy Big Files Re

rtyley.github.io

 

댓글