팀프로젝트

Git 트러블슈팅: Git 저장소에 실수로 올려버린 키 제거 과정🌟

choijming21 2024. 10. 15. 18:49

1. 문제 발생❓

  • Git 저장소에 Supabase key를 올려버렸습니다...
  • 나중에 Git 저장소의 여러 브랜치에 걸처 키가 포함된 'supabaseClient.ts' 파일이 커밋되어 있음을 발견했습니다.
  • 알아차린 시점이 조금 늦었습니다.  pr도 올리고 머지 성공하고 각자 팀원들 작업하고 ... 하루 뒤에 알아버렸습니다.
  • pr에도 기록이 남아있고, 개개인 브랜치에도 기록이 남아있는 상태입니다.(돌이킬 수 없는 강...을 건너버렸습니다...🥲)
  • supabaseClient.ts에는 키와 같이 중요한 정보가 들어있어 보안 위험이 있어 노출되면 안됩니다.

 

 

 

2. 원인 추론 🔎

  • 개발 과정에서 하드 코딩 된 값을 사용했기 때문입니다.
  • 코드 리뷰 과정에서 이 문제를 발견하지 못했습니다.

 

 

 

 

3. 해결 과정 📋

1. pr을 삭제 요청을 위해 깃허브에게 연락합니다.

 

 

 

  • 깃허브 지원팀 사이트에 들어갑니다.

https://support.github.com/request

 

Sign in for Software Support and Product Help - GitHub Support

 

support.github.com

 

 

 

 

  • "내가 가지고 있거나 제어하는 리포지토리에서 데이터 제거하기" 클릭!

 

 

 

 

  • "끌어오기 요청 제거하기"  클릭!!!!

 

 

 

 

 

  • AI랑 대화를 시작합니다. 하나의 pull request 지우고 싶으니깐 single, 그 pr 주소좀 보내달라하면 pr 주소 보내면 됩니다. 그다음은  질문에 맞게 대답해주면 됩니다. 성공하면 티켓을 발급해주겠다고 얘기하면서 대화가 마무리 될 것 입니다!!!

 

 

 

 

 

 

  • 티켓이 생성되었다는 문구를 받으면 대화창을 닫고 오른쪽 위에 My Tickets 버튼을 클릭해 줍니다.

 

 

 

 

 

 

  • 그러면 내 티켓을 볼 수 있습니다. 저는 티켓 생성되고 한 3-4시간 뒤에는 pull request가 지워졌던 것 같습니다. 평균 8시간 이내라고 생각하시면 될 것 같습니다!

 

 

 

 

 

 

 

 

 

 

 

 

2. 깃허브 저장소에 있는 supabaseClient.ts 파일 제거하기

 

  • 안전하게 개인 원격 브랜치에 작업물을 각자 push 해둡니다
  • 각자 팀원들이 개인 브랜치에서 다음 명령어를 실행합니다.
git filter-branch -f --index-filter "git rm --cached --ignore-unmatch supabaseClient.ts" --prune-empty -- --all
git filter-branch -f --index-filter "git rm --cached --ignore-unmatch ./src/app/supabaseClient.ts" --prune-empty -- --all

 

  • 변경 사항을 원격 저장소에 강제 푸쉬해줍니다.
git push origin <브랜치이름> --force

 

  • 이 과정을 모든 브랜치에서 반복합니다.

 

 

 

 

4. 결과 ❤‍🔥

  • pr도 4시간 이내에 제거할 수 있었습니다.
  • 모든 브랜치의 Git 히스토리에서 'supabaseClient.ts' 파일이 성공적으로 제거되었습니다.
  • 이로써 원격 저장소에 히스토리가 정리되어 민감한 정보를 삭제할 수 있었습니다.

 

 

 

 

5.  느낀점 🌀

이 과정을 통해 즉각적인 보안 위혐을 해결할 수 있었고, 교훈을 얻었습니다. 머지할때도 불필요한 파일이 없나 여러번 확인해야하고 유사한 문제의 재발을 방지하기위해 환경변수를 잘 사용하여야겠다고 생각했습니다!