git-secrets 가져오기
8375 단어 AWSGitHubgitsecretstech
이 내용은 여러 가지 기사를 정리해 놓았는데, 우연히 이 내용을 처음 발견한 AWS 초보자가 유출 사고를 방지하기 위한 설정에 도움을 주었으면 좋겠다.
배경.
AWS의 활용에서 인터넷에서 자주 다음과 같은 상황을 볼 수 있고 초보자의 자신도 이렇게 하는 것을 두려워한다.
git-secrets
설치하다.
macOS·Homebrew 환경, 아래 설명을 수행합니다.
실행
$ brew install git-secrets
git secrets
을 시도하고 다음 도움말이 표시되면 설치가 완료됩니다.$ git secrets
usage: git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked]
:
사용법
각git창고에 대응
git secrets --install
,git-secrets.$ git init
$ git secrets --install
✓ Installed commit-msg hook to .git/hooks/commit-msg
✓ Installed pre-commit hook to .git/hooks/pre-commit
✓ Installed prepare-commit-msg hook to .git/hooks/prepare-commit-msg
AWS의 IAM에서 사용하는 것은 전문적인 선택이 있고 전문적인 선택이 있기 때문에 설치한다.$ git secrets --register-aws
OK
.git/config
에 다음과 같은 내용이 추가된 것으로 확인할 수 있다.[secrets]
providers = git secrets --aws-provider
patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')?
patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')?
allowed = AKIAIOSFODNN7EXAMPLE
allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
allowed
행에 지정된 행에는 경고가 표시되지 않는 예외 지정 기능이 있습니다.기재된 값은 AWS 자체가 공식 문서에 사용한 액세스 키의 샘플입니다.
테스트
상기 샘플 키의 일부를 변경한 관건적인 정보를 포함하는 신용 서류를 만들었다.
$ cat credential_test.txt
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
에서 제작된 파일을commiit해 보았습니다.$ git add .
$ git commit -m "First Test"
credential_test.txt:1:aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
[ERROR] Matched one or more prohibited patterns
Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive
안전commiit가 취소되었습니다.git secrets --scan
을 통해 확인할 수 있다.$ git secrets --scan credential_test.txt
credential_test.txt:1:aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
[ERROR] Matched one or more prohibited patterns
:
Git 웨어하우스에 포함되지 않은 파일이나 디렉토리를 검색하려면 --no-index
옵션을 사용합니다.--no-verify
에서 옵션을 포함하여 실행하면 무효화할 수 있습니다.$ git commit -m "First Test" --no-verify
[master (root-commit) 421073b] First Test
1 file changed, 1 insertion(+)
create mode 100644 credential_test.txt
$ git log --oneline
421073b (HEAD -> master) First Test
git secrets --scan-history
을 통해git history를 확인할 수 있다.$ git secrets --scan-history
[ERROR] Matched one or more prohibited patterns
Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive
적용 범위
지금까지의 내용은 각git창고를 통해 설정되었지만
git secrets --register-aws
처럼 모든 창고에 반영됐으면 하는 설정이 있다고 생각합니다.이 때 실행
git secrets --register-aws --global
을 통해 설정할 수 있습니다.설정 내용은 ~/.gitconfig
에 추가됩니다.$ git secrets --register-aws --global
OK
$ cat ~/.gitconfig
[secrets]
providers = git secrets --aws-provider
patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')?
patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')?
allowed = AKIAIOSFODNN7EXAMPLE
allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
설정 내용이 반영된 파일git secrets --register-aws
→창고별.git/config
git secrets --register-aws --global
→ ~/.gitconfig
마지막으로 모든 창고의 설정을 추가해 보십시오.이번에는 크리덴셜.test.txt를 허용하는 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
로 설정합니다.$ git secrets --add --allowed wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
$ git secrets --scan credential_test.txt
방금 표시된 [ERROR]이 표시되지 않는지 확인했습니다.그럼 프로필을 한번 봅시다.
$ cat .git/config
[secrets]
allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEa
$ cat ~/.gitconfig
[secrets]
providers = git secrets --aws-provider
patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')?
patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')?
allowed = AKIAIOSFODNN7EXAMPLE
allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
설정이 지정된 창고에만 반영되었음을 확인했습니다.최종 명령을 실행할 때 글로벌
git-secrets
에 설정되어 있기 때문에local의 창고에서 글로벌의 설정과 차이만 표시됩니다.이렇게 하면git-secrets를 전체적으로 사용하는 동시에 창고마다 맞춤형으로 제작할 수 있다.
Tips
git-secrets를 실행할 때 git init를 유효하게 하려면 다음과 같은 동작을 미리 실행할 수 있습니다.
$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'
총결산
git-secrets를 가져오면 인위적인 오류로 인한 정보 유출을 방지할 수 있습니다!
하지만 평소부터 기트에서 push에 안전한 정보가 나오지 않도록 하는 의식을 다시 한번 실감했다.
이렇게 하면 안심하고 사적인 환경에서 공부를 할 수 있다...
참고 자료
Reference
이 문제에 관하여(git-secrets 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kkk777/articles/8f55db1e9678f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)