GitHub
GitHub는 로컬저장소를 이용한 빠른 퍼포먼스와 브랜치를 통한 효율적인 협업을 이룰 수 있으며,
등록 사용자와 비등록 사용자 모두에게 사이트의 공개 저장소를 찾아볼 수 있는 권한을 제공하게 됩니다.
여기서 민감한 데이터를 저장소에 올리는 일은 개인 정보 노출에 있어서 위험할 수 있습니다.
팀프로젝트 과정에서 로컬저장소를 이용할 때,
민감한 데이터를 다루게 되는 일을 접하게 되었고 그 데이터를 저장소에 올리지 않는 방법을 배웠습니다.
저희는 공개 저장소에 올리지 않는 방법을 저희는 저장소를 들어가면서 본 적이 있었는데요.
그것은 바로 .gitignore 파일입니다.
.gitignore
.gitignore파일이란 Git 버전 관리에서 제외할 파일 목록을 지정하는 파일입니다.
- NodeJS-Express로 개발할 때 npm module
- application-secret.properties
- AWS 비밀 키, JWT 비밀 키 등등이 있습니다.
이렇게 git으로 프로젝트를 관리할 때, 민감한 데이터나 프로젝트 안의 특정파일들은 Git으로 관리할 필요가 없는 경우에 사용합니다.
*.[확장자] // 특정 확장자 전체 무시하기
[디렉터리 명] / [파일 명] // 특정 파일 무시
[파일 명] // 루트 디렉터리에 있는 파일 무시
[폴더 명]/ // 폴더 전체 무시
하지만 여기서 git에 add 되거나 commit 된 경우 gitignore가 적용되지 않을뿐더러,
깃허브에 업로드된 기록을 지운다 해도 정보가 남게 됩니다.
그렇게 된다면 해당 커밋을 지우려고 깃허브에 들어가서 삭제를 해도 확인이 가능합니다.
저장소에 있는 민감한 데이터 완벽하게 제거하기
다행히도 저장소 히스토리 전체에서 원치 않는 파일을 삭제 가능합니다.
이제 우리의 민감한 데이터나 불필요한 파일들을 커밋과 파일을 지우는 방법을 다루겠습니다.
그것은 Git에 내장된 filter-branch툴을 사용하여 데이터를 삭제하는 것입니다.
$git filter-branch -f --index-filter "git rm --cached --ignore-unmatch [파일명]" --prune-empty -- --all
application-test.properties // 삭제하고 싶은 파일
./src/main/resources/application-test.properties // 경로에 있는 파일
$git filter-branch -f --index-filter "git rm --cached --ignore-unmatch ./src/main/resources/application-test.properties" --prune-empty -- --all
git push --force --all // push 해주면 원격 저장소에 잘 반영됩니다.
이렇게 하면 민감한 데이터를 다뤘던 커밋기록과 파일이 삭제가 완료되었습니다.
민감한 데이터를 확인을 하며 커밋을 진행하고,
ignore 파일을 사용해 제외하여 업로드하도록 설정하면 좋을 것 같습니다.
읽어주셔서 감사드리며, 팀에 기여할 수 있는 팀원이 되도록 열심히 노력해 봅시다!
'Git' 카테고리의 다른 글
[Git] Git Hooks, git commit 전 코드를 수정해보자. (0) | 2023.04.23 |
---|