git-secrets로 git을 통한 정보 유출 방지

8181 단어 git-secretsGitAWS
AWS 학습을 시작했으므로 'git-secrets'로 안전한 운영이 가능하도록
배웠습니다. 잊지 않도록 정리해 둡니다.

git-secrets란?




Prevents you from committing passwords and other sensitive information to a git repository.

비밀번호 및 기타 민감한 정보를 커밋으로부터 귀하를 보호합니다.
커밋시나 임의의 타이밍에서, 커밋 내용이나 message에 기밀 정보가 포함되어 있지 않은지를 체크할 수 있습니다.
정보 유출이 무엇인가와 문제에 오르는 요즘, 이런 툴로 관리하는 것은 중요하네요.

설치


$brew install git-secrets

명령 개요 (Synopsis)


git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]
git secrets --scan-history
git secrets --install [-f|--force] [<target-directory>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>
git secrets --add-provider [--global] <command> [arguments...]
git secrets --register-aws [--global]
git secrets --aws-provider [<credentials-file>]

AWS용 초기 설정



AWS에 적합한 설정을 제공하는 전용 명령이 있으므로 이를 입력합니다.
$ git secrets --register-aws --global

실제로 어떤 검사 패턴이 되었습니까?
현재 검사 패턴을 알려면 git secret --list 명령으로 확인할 수 있습니다.
$ git secrets --list

secrets.providers git secrets --aws-provider
secrets.patterns (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
secrets.patterns ("|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)("|')?\s*(:|=>|=)\s*("|')?[A-Za-z0-9/\+=]{40}("|')?
secrets.patterns ("|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?("|')?\s*(:|=>|=)\s*("|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}("|')?
secrets.allowed AKIAIOSFODNN7EXAMPLE
secrets.allowed wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
secrets.patterns 로 검사된 것은 연주되고 secrets.allowed 로 지정된 것은 특별히 허가한다, 라고 하는 것이 되어 있습니다.

자세한 설정 내용은 이쪽·AWS Access Key ID라고 생각되는 것 (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
· AWS Secret Access Key의 할당으로 간주되는 것. 임의의 따옴표로 묶인 ":"또는 "="
· AWS 계정 ID 할당으로 간주되는 것. 임의의 따옴표로 묶인 ":"또는 "="
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)
· ~/.aws/credentials로 지정된 것
연주,
· 샘플로 할당 된 AWS 키의 패턴 허용 (AKIAIOSFODNN7EXAMPLE 및
가 허용되는 설정입니다.
--global 를 붙이는 것으로, 사용자의 공통 설정이 됩니다.
$ git secrets --install ~/.git-templates/git-secrets

리포지토리 용 git hooks를 ~/.git-templates/git-secrets에 설치합니다.
$ git config --global init.templatedir '~/.git-templates/git-secrets'

설치한 템플릿을 config에서 설정합니다.

이제 AWS에 관해서는 기본적인 부분은 커밋해도 연주할 수 있게 됩니다. 🎉

기타 명령



스캔



지정한 파일/폴더를 검사해 줍니다.
commit은 하지 않지만 체크하고 싶다고 하는 경우에 유효하네요.
$ git secrets --scan test.txt // ファイルの検査
$ git secrets --scan testDir // ディレクトリの検査 
$ git secrets --scan -r testDir // 再帰的にディレクトリを検査

scan하는 파일은 git ls-files 로 리스트 업 되는 것만이 대상이므로,
대상외입니다. 편리.
덧붙여서 --no-index 옵션을 붙이면(자), git 파일이 아니어도 검사해 줍니다.

scan-history



과거의 커밋 이력을 검사해 줍니다.
도중에 git-secrets를 도입한 경우 등에 활약합니다.
$ git secrets --scan-history

add



금지, 허용할 정규식 패턴을 추가할 수 있습니다.
$git secrets --add "secret\s*=\s*"

SourceTree에서 작업



【추기】
SourceTree에서 git-secrets를 설치 한 상태에서 무언가를 조작하려고하면,
git: 'secrets' is not a git command. See 'git --help'.

라는 오류가 나옵니다.
이 문제를 해결하려면,
  • git 실행 프로그램과 동일한 계층 구조에 git-secrets 실행 프로그램을 추가 (또는 심볼릭 링크 붙여 넣기)
  • soureTree의 git 실행 프로그램을 같은 계층에 붙인다.

  • 에서 해결할 수 있습니다.
    #gitの場所
    $ which git
    /usr/bin/git  
    
    #git-secretsの場所
    $ which git-secrets
    /usr/local/bin/git-secrets 
    
    in #実行プログラムを同じ階層にコピー 
    cp /usr/bin/git /usr/local/bin
    
    

    * Mac에서 권한 오류 등이 발생하면 SIP가 활성화되었을 수 있습니다.
    【상급자용】System Integrity Protection(SIP)를 무효로 하는 방법

    그리고, SourceTree의 【환경 설정】->【Git】->【시스템의 Git를 사용한다】로,
    git의 경로를 지정합시다. (여기에서는/usr/bin/git)


    참고문헌



    실천 Terraform AWS의 시스템 설계 및 모범 사례 b 임프레스 R&D 삼성당 서점 온디맨드
    git-secrets 시작했습니다.
    AWS 액세스 키를 Git 리포지토리에 포함시키지 않기 위해 git-secrets를 도입했습니다.
    클라우드 파산을 방지하기 위해 git-secrets 사용

    좋은 웹페이지 즐겨찾기