중요한 정보가 노출되었을 경우 (git filter-repo/bfg로 안되는 경우)
어처구니 없는 경험을 하게 되어 기록으로 남김
이전 작업 : 실수로 .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 filter-repo와 bfg를 사용하여 삭제를 시도해보았다.
git filter-repo의 사용은 몇번 시도를 해보다 너무 난해하고 이해하지 못한 상태로 더 이상 사용해보기에
문제가 커질거 같아서 bfg를 사용해 보았다.
몇번의 실수 끝에 .env를 모든 commit에서 삭제할 수 있었다.
하지만, 캐시는 그대로였다.
여기서 문제는 캐시는 내가 어떻게 할 수 없는 영역이었다는 것을 이제사 깨닿게 되었다는 것이다.
github 고객센터에 방문하여 질문을 남기기로 했다
ref : https://support.github.com/request
처음 사용해 보는 것이지만 재밌는건 챗봇으로 질문을 던지고 관련한 링크를 받아서 접수를 받고 처리를 하는 구조였다.
하루가 지나고 메일을 받을 수 있었다. 처리가 완료되었다는 답변이었다.
이제 남은 보안작업을 수행하면 될 것이다.
이러한 과정을 밟는데 있어서 정말 오랜 검색과 시도 과정을 겪었다.
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://www.lesstif.com/gitbook/bfg-repo-cleaner-git-repository-129007840.html
https://rtyley.github.io/bfg-repo-cleaner/
'Project Management > Github' 카테고리의 다른 글
github actions 자동 배포 : ssh-action 사용 방법 (0) | 2023.06.04 |
---|---|
MS - GitHub Actions로 개발 주기 자동화 학습 정리 (0) | 2023.05.31 |
github readme / profile 꾸미기 정보 (0) | 2022.10.24 |
생활코딩 git - 리마인드 학습 정리 (0) | 2022.07.04 |
github gist rollback 하는 방법 (0) | 2022.04.02 |
댓글