😄 서론
준 덕분에 ✨넥스트스텝의 김민주님, 임성현님의 Git 발표✨를 듣게 되었다.
발표는 실습을 바탕으로 진행되었는데 너무 인상 깊었고 신기했고.. 무엇보다 나중에 쓸 일이 생길 것 같았다.😇
관련 내용을 포스팅해도 되는지 여쭤보고 허락 하에 포스팅 한다.
흔쾌히 허락해주신 민주님, 성현님과 말을 전달해주신 준 모두 감사합니다. 😊
😨 만약 내가 중요한 정보를 GitHub에 올렸다면...
관리자 계정의 ID, password를 하드코딩해놓고 그대로 GitHub에 올려버렸다면?
데이터베이스의 주소, 비밀번호 등이 다 드러난 설정 파일을 그대로 GitHub에 올려버렸다면???
다신 이런 실수를 하지 않겠다는 다짐은 당연하고!!
이미 일어난 일을 어떻게 해결해야 할까?
1. https://rtyley.github.io/bfg-repo-cleaner/ 다운로드
- BFG는 Git 레포지토리 기록에서 잘못된 데이터를 제거하기 위해 만들어짐
- git filter-branch를 이용할 수도 있지만 위 jar파일 이용이 훨씬 간단
2. 제거할 키워드 목록을 담은 txt 파일 생성
- 제거할 키워드 목록을 담은 텍스트 파일을 생성
- 각 키워드 목록은 엔터로 구분
관리자 id가 'yeonlog', password가 'abcd1234'인 정보를 가리고 싶다면 아래와 같은 txt 파일을 생성한다.
yeonlog
abcd1234
3. 터미널에서 jar 실행
$ java -jar <BFG.jar의 경로> --replace-text <2에서 생성한 파일.txt>
4. Git에 Push
- -f 옵션을 통해 코드 변경 이력을 로컬 저장소의 것으로 덮어씀
$ git push -f <remote명> <branch명>
push 후 GitHub에서 커밋 내역을 확인해보면 숨김 처리 된 것을 확인할 수 있다
🤔 파일 하나를 통째로 숨기고 싶다면?
마찬가지로 BFG jar를 이용하되 터미널에서 실행시킬 명령어만 약간 다르다.
java -jar <BFG.jar의 경로> --delete-files <숨김처리할 파일명>
위 명령어를 실행하고 push한 뒤 GitHub 커밋 내역을 보자.
내가 커밋한 내역은 물론 다른 사람이 커밋한 내역까지 숨김 처리한 파일이 보이지 않는다.
커밋 내역은 남아있되 file changed는 조회할 수 없다.
👨💻 중요한 정보는 어떻게 관리하죠?
수습이 끝났다면 이미 한번 GitHub에 업로드 된 비밀번호를 변경해주는 센스도 잊지 말자.
이제 앞으로는 어떻게 관리할지 생각해보자.
파일의 커밋을 막기 위해서는 .gitignore를 이용하면 된다.
하지만 어쨌든 개발자들끼리는 주요 정보가 담긴 파일을 공유해야한다.
어떻게 공유할까?
❗ 단순하게 관리하기
내가 전에 겪은 방법으로는 두 가지 정도가 있다.
- 파일 이메일이나 메신저 등으로 직접 주고받기
- 사내 망에서 공유되는 공용 폴더를 만들어 관리
일단 두 방법을 겪은 후기를 말해보자면... 둘 다 불편하고 귀찮다. 😅
2번은 사내 망에 존재하니 외부에서 접근할 수 없어 최소한의 접근 제어는 가능했지만...
외부에서 접근이 불가능하기 때문에 파일을 다운 받기위해 반드시 회사 네트워크를 사용해야 했고,
변경 사항이 있을때마다 수동으로 파일 변경해야 했다.
❗ 또 다른 방법
민주님과 성현님이 소개해주신 방법이 좀 더 유용하다.
id, password 같은 주요 정보를 저장할 수 있는 서버를 활용하는 방법이다.
Vault나 AWS에서 지원하는 Systems Manager Parameter Store같은 것들이 있다.
주요 정보들을 key-value 형태로 저장해두고 필요할 때 꺼내서 사용한다.
어떤 것을 사용하냐에 따라 다르겠지만 아래와 같이 간단한 코드를 통해서도 호출할 수 있게 된다.
// 이동욱님 블로그 (https://jojoldu.tistory.com/509)
@Value("${encrypt.key}")
private String encryptKey;
자세한 설정 방법이나 사용 방법에 대해서는 생략한다.
이러한 방법이 있다 정도로만 인식해둔다. 😄
'Develop > etc' 카테고리의 다른 글
OS 환경 변수로 중요한 설정 정보 숨기기 (2) | 2022.06.08 |
---|---|
로컬에서 간단하게 CORS 에러 확인하기 (0) | 2022.06.03 |
NFT가 붐인 이유? (feat. NFT란?) (2) | 2022.03.25 |
[IntelliJ] 플러그인 직접 설치하기 (2) | 2022.03.03 |
[GitHub] Pull Request 충돌 해결하기 (2) | 2022.02.21 |