버전 제어에서 파일을 유지하면서 민감한 설정 파일을 암호화하는 것이 옳습니다. 언급했듯이 최상의 해결책은 Git이 특정 민감한 파일을 푸시 할 때 투명하게 암호화하여 로컬로 (즉, 인증서가있는 시스템에서) 설정 파일을 사용할 수는 있지만 Git 또는 Dropbox 또는 VC에 파일을 저장하면 정보를 일반 텍스트로 읽을 수 없습니다.
푸시 / 풀 동안 투명한 암호화 / 암호 해독에 대한 자습서
이 요점 https://gist.github.com/873637 은 openssl과 함께 Git의 얼룩 / 청소 필터 드라이버를 사용하여 푸시 된 파일을 투명하게 암호화하는 방법에 대한 자습서를 보여줍니다. 초기 설정 만하면됩니다.
작동 방식 요약
기본적으로 .gitencrypt
3 개의 bash 스크립트가 포함 된 폴더를 작성합니다 .
clean_filter_openssl
smudge_filter_openssl
diff_filter_openssl
암호 해독, 암호화 및 Git diff 지원을 위해 Git에서 사용합니다. 마스터 스크립트와 솔트 (고정!)가이 스크립트 내에 정의되어 있으므로 .gitencrypt가 실제로 푸시되지 않도록해야합니다. clean_filter_openssl
스크립트 예 :
#!/bin/bash
SALT_FIXED=<your-salt> # 24 or less hex characters
PASS_FIXED=<your-passphrase>
openssl enc -base64 -aes-256-ecb -S $SALT_FIXED -k $PASS_FIXED
비슷 smudge_filter_open_ssl
하고 diff_filter_oepnssl
. 요점을 참조하십시오.
민감한 정보가 포함 된 리포지토리에는 .gitentribute 디렉토리 (Git이 프로젝트를 투명하게 암호화 / 암호 해독하는 데 필요한 모든 것을 포함)와 로컬 시스템에있는 .gitattribute 파일 (암호화되지 않고 리포에 포함)이 있어야합니다.
.gitattribute
내용:
* filter=openssl diff=openssl
[merge]
renormalize = true
마지막으로 .git/config
파일에 다음 내용을 추가해야 합니다.
[filter "openssl"]
smudge = ~/.gitencrypt/smudge_filter_openssl
clean = ~/.gitencrypt/clean_filter_openssl
[diff "openssl"]
textconv = ~/.gitencrypt/diff_filter_openssl
이제 중요한 정보가 포함 된 저장소를 원격 저장소로 푸시하면 파일이 투명하게 암호화됩니다. .gitencrypt 디렉토리 (패스 프레이즈 포함)가있는 로컬 시스템에서 가져 오면 파일이 투명하게 해독됩니다.
노트
이 자습서에서는 중요한 설정 파일 만 암호화하는 방법에 대해서는 설명하지 않습니다. 이렇게하면 원격 VC 호스트로 푸시 된 전체 리포지토리가 투명하게 암호화되고 전체 리포지토리의 암호가 해독되므로 로컬로 완전히 해독됩니다. 원하는 동작을 달성하기 위해 하나 이상의 sensitive_settings_repo에 하나 이상의 프로젝트에 민감한 파일을 배치 할 수 있습니다. 민감한 파일이 동일한 저장소에 있어야 하는 경우이 투명한 암호화 기술이 Git 서브 모듈 http://git-scm.com/book/en/Git-Tools-Submodules에서 어떻게 작동하는지 조사 할 수 있습니다.
공격자가 많은 암호화 된 저장소 / 파일에 액세스 할 수있는 경우 고정 암호를 사용하면 이론적으로 무차별 취약성이 발생할 수 있습니다. IMO,이 확률은 매우 낮습니다. 이 튜토리얼에서 언급 한 것처럼 고정 암호를 사용하지 않으면 다른 머신에서 로컬 버전의 리포지토리가 항상 'git status'로 변경이 발생했음을 표시합니다.