1. 문제 발생❓
- Git 저장소에
Supabase key를 올려버렸습니다... - 나중에 Git 저장소의 여러 브랜치에 걸처 키가 포함된 'supabaseClient.ts' 파일이 커밋되어 있음을 발견했습니다.
- 알아차린 시점이 조금 늦었습니다. pr도 올리고 머지 성공하고 각자 팀원들 작업하고 ... 하루 뒤에 알아버렸습니다.
- pr에도 기록이 남아있고, 개개인 브랜치에도 기록이 남아있는 상태입니다.(돌이킬 수 없는 강...을 건너버렸습니다...🥲)
- supabaseClient.ts에는 키와 같이 중요한 정보가 들어있어 보안 위험이 있어 노출되면 안됩니다.
2. 원인 추론 🔎
- 개발 과정에서 하드 코딩 된 값을 사용했기 때문입니다.
- 코드 리뷰 과정에서 이 문제를 발견하지 못했습니다.
3. 해결 과정 📋
1. pr을 삭제 요청을 위해 깃허브에게 연락합니다.
- 깃허브 지원팀 사이트에 들어갑니다.
https://support.github.com/request
- "내가 가지고 있거나 제어하는 리포지토리에서 데이터 제거하기" 클릭!
- "끌어오기 요청 제거하기" 클릭!!!!
- 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. 느낀점 🌀
이 과정을 통해 즉각적인 보안 위혐을 해결할 수 있었고, 교훈을 얻었습니다. 머지할때도 불필요한 파일이 없나 여러번 확인해야하고 유사한 문제의 재발을 방지하기위해 환경변수를 잘 사용하여야겠다고 생각했습니다!
'팀프로젝트' 카테고리의 다른 글
Next.js에 PWA 적용하기 (1) | 2024.10.23 |
---|---|
집 플래닛 팀프로젝트! (2) | 2024.10.16 |
Git 트러블슈팅: rebase 문제 해결과 안전한 Git 사용법🌟 (0) | 2024.10.15 |
아웃소싱 팀프로젝트(Park FInder) 최종 발표 (1) | 2024.09.23 |
아웃소싱 팀프로젝(트러블 슈팅1🌟) (0) | 2024.09.19 |