자식 기록에서 민감한 데이터 제거

5703 단어 git
암호나 토큰과 같은 민감한 데이터를 프로젝트에 저장했을 수 있습니다. 보안 관점에서 코드에 직접 넣고 리포지토리에 보관하는 것은 좋지 않습니다. 예를 들어 Node.js 앱 및 기타 언어에서 가장 좋은 접근 방식은 민감한 데이터를 환경 변수에 저장하는 것입니다. 따라서 .env라는 별도의 파일에 보관됩니다. Git에서 추적하지 않도록 .gitignore 에 추가됩니다. 그러나 이전 커밋을 확인하면 git 기록에 민감한 데이터가 있음을 알 수 있습니다. 그럼 이제 어떻게 해야 할까요?!


Git built-in command git filter-branch 또는 BFG Repo-Cleaner tool 두 가지 옵션이 있습니다. 이 기사에서는 BFG Repo-Cleaner 도구를 사용하여 리포지토리 기록을 다시 작성하는 방법을 보여주고자 합니다.

The BFG Repo-Cleaner is a tool that’s built and maintained by the open-source community. It provides a faster, simpler alternative to git filter-branch for removing unwanted data. (GitHub)





mongoose.connect('mongodb+srv://user<password>@cluster0.fzrkd.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',
{
  useNewUrlParser: true,
  useCreateIndex: true,
  useFindAndModify: false,
  useUnifiedTopology: true,
}).then(() => console.log('DB connection successful!'));


위의 코드는 몽구스 드라이버를 통해 MongoDB Atlas에 연결할 수 있는 Node.js 앱의 일부입니다. 이를 위해서는 해당 코드에서 굵게 표시된 연결 문자열이 필요합니다. 해당 연결 문자열은 중요한 데이터의 샘플입니다.

먼저 .env .local 파일을 만들어 DATABASE라는 변수에 연결 문자열을 저장합니다.

DATABASE=mongodb+srv://user<password>@cluster0.fzrkd.mongodb.net/myFirstDatabase?retryWrites=true&w=majority


그런 다음 해당 연결 문자열을 아래와 같이 코드에서 .env.localprocess.env.DATABASE의 문자열로 바꿉니다.

mongoose.connect(process.env.DATABASE, {
  useNewUrlParser: true,
  useCreateIndex: true,
  useFindAndModify: false,
  useUnifiedTopology: true,
}).then(() => console.log('DB connection successful!'));


Node.js에서는 process를 통해 환경 변수에 액세스할 수 있습니다.

변경 사항을 커밋하지만 이전 변경 사항은 코드에서 바로 연결 문자열을 표시합니다. 해당 연결 문자열을 process.env.DATABASE로 바꾸려면 나머지 커밋 뒤에 다음 지침을 따라야 합니다.
  • macOS의 경우 Homebrew를 사용하여 BFG Repo-Cleaner 도구brew install bfg를 설치할 수 있고 Windows의 경우 Chocolatey:choco install bfg-repo-cleaner를 사용하거나 해당 jar 파일site에서 다운로드할 수 있습니다.
  • 중요한 데이터를 원하는 데이터로 바꾼 다음 변경 사항을 커밋합니다. 이 단계를 잊지 마세요. 이 경우 mongodb+srv://user<password>@cluster0.fzrkd.mongodb.net/myFirstDatabase?retryWrites=true&w=majorityprocess.env.DATABASE로 바꿉니다.
  • 대체 항목에 대한 텍스트 파일(예: replacements.txt )을 만듭니다. Tyle answered in StackOverflow에 따르면 이 경우 텍스트 파일에는 다음이 포함됩니다.

  • DATABASE=mongodb+srv://user<password>@cluster0.fzrkd.mongodb.net/myFirstDatabase?retryWrites=true&w=majority==>process.env.DATABASE
    


  • 그런 다음 프로젝트 폴더에서 아래 코드를 실행합니다. 사이트에서 jar 파일을 통해 BFG를 설치한 경우 bfg 명령을 java -jar bfg.jar 로 바꿉니다.

  • bfg --replace-text replacements.txt
    


  • "BFG 실행이 완료되었습니다!"메시지가 표시된 후 메시지를 표시하려면 다음 코드를 실행하세요.

  • git reflog expire --expire=now --all && git gc --prune=now --aggressive
    


  • 이제 이전 커밋을 확인하면 저장소 전체에서 대체 항목을 볼 수 있습니다.
  • 좋은 웹페이지 즐겨찾기