반응형
git-secret 이란?
비밀번호, Secret Key 값과 같이 보호되야 하는 데이터가 포함된 파일을 그냥 Git Commit & Push 하면 개인적인 데이터가 노출되는 문제점이 발생합니다.
git-secret
을 사용하면 개인적인 데이터가 포함된 파일을 암호화 한 후에 Git 저장소에 저장함으로써 문제점을 해결할 수 있습니다.
git-secret
은 Git 저장소에 개인적인 데이터를 gpg
를 기반으로 암호화하여 저장하는 Bash Tool 입니다.
즉, 암호화 대상 파일은 Public Key로 암호화하고, 복호화는 Private Key를 소유한 사용자만 할 수 있습니다.
이를 통해 실수로 비밀번호, Secret Key와 같이 노출되면 안되는 데이터를 그대로 Git 저장소에 업로드하는 실수를 막을 수 있습니다.
사용법
git-secret
의 기본적인 사용법은 다음과 같습니다. :
- gpg RSA key-pair 를 먼저 생성해야 합니다.
RSA key-pair 는 E-Mail 주소로 증명되는 Public / Private Key 입니다. - git-secret을 사용할 저장소에서
git-secret init
명령어로 초기화 합니다.
이때.gitsecret/
디렉토리가 생성됩니다. 이 디렉토리가 .gitignore 에 의해 제외되지 않도록 해야 합니다. - 첫 번째 사용자를 추가합니다. :
git secret tell your@gpg.email
- git-secret으로 보호할 파일을 추가합니다. :
git-secret add <filenames...>
이때 추가할 파일은.gitignore
를 사용하여 무시하도록 설정해야 합니다. - 보호할 파일을 암호화 합니다. :
git-secret hide
이제 암호화된 파일을 Commit & Push 하더라도 안전하게 보관할 수 있습니다.
단, 반드시 매 Commit 전에 반드시git-secret hide
명령어를 실행하여 변경된 사항이 반영되도록 해야 합니다. - 보호된 파일을 복호화 합니다. 이때 비밀번호 입력을 요구합니다. :
git-secret reveal
다른 사용자를 추가하는 방법은 다음과 같습니다. :
- gpg Public Key를 받습니다. (Private Key는 필요 없습니다.)
- 당신의 gpg에 전달 받은 Public Key를 Import 합니다. :
gpg --import KEY_NAME
- git-secret에 사용자를 추가합니다. :
git-secret tell person@email.id
- 파일들을 다시 암호화 합니다.
이제 새로 추가된 사용자들은 그들의 Private Key로 복호화 할 수 있습니다.
설치
설치 전 요구사항
- git 2.7.0 버전 이상
- gpg (GnuPG) 1.4.20 버전 이상
- 운영체제 : Mac OS X >= 10.9, Ubuntu >- 14.04, Debian >= 8.3, Fedora
설치 방법
여기선 Mac OS X 환경에서 설치하는 과정만 포함합니다.
각 OS 별 설치 방법은 git-secret Installation 문서를 참고 바랍니다.
$ brew install git
$ git --version
git version 2.20.0
$ brew install gnupg
$ gpg --help
gpg (GnuPG) 2.2.11
...하단 생략...
$ brew install git-secret
0.2.4
명령어
$ git-secret usage
usage: git secret [--version] [add|cat|changes|clean|hide|init|killperson|list|remove|reveal|tell|usage|whoknows]
'git secret --version' will show version and exit
See 'git secret [command] -h' for more information on each command below
add [filename.txt] - adds file to be hidden. Also add this file to .gitignore
cat [filename.txt] - cats the decrypted contents of the named file to stdout
changes [filename.secret] - indicates if the file has changed since checkin
clean - deletes encrypted files
hide - encrypts (or re-encrypts) the files to be hidden
init - creates the .gitsecret directory and contents needed for git-secret
killperson [emails] - the reverse of 'tell', removes access for the named user
list - shows files to be hidden/encrypted, as in .gitsecret/paths/mapping.cfg
remove [files] - removes files from list of hidden files
reveal - decrypts all hidden files, as mentioned in 'git secret list'
tell [email] - add access for the user with imported public key with email
whoknows - shows list of email addresses associated with public keys that can reveal files
사용 예시
###
# gpg 키 생성
# - Real Name, E-Mail 입력
#. - --full-generate-key 옵션은 Mac OS X에서 사용합니다.
###
$ gpg --full-generate-key
또는
$ gpg --gen-key
###
# git-secret 초기화
#. - 명령어 : git-secret init
###
$ git-secret init
'/Users/jhyunto/Documents/workspace/oauth2.0-cookbook/.gitsecret/' created.
cleaning up...
###
# 사용자 추가
#. - git-secret
###
$ git secret tell jhyunto@gmail.com
gpg: keybox '/Users/hyunsoo0813/Documents/workspace/oauth2.0-cookbook/.gitsecret/keys/pubring.kbx' created
gpg: /Users/hyunsoo0813/Documents/workspace/oauth2.0-cookbook/.gitsecret/keys/trustdb.gpg: trustdb created
done. jhyunto@gmail.com added as someone who know(s) the secret.
cleaning up...
###
# 파일 추가
# - 추가할 파일이 git tracked 중 이라면 먼저 제거해야 합니다. : git rm --cached <filename>
#. - 명령어 : git-secret add <filename>
###
$ git rm --cached client-implicit/src/main/resources/application.properties
rm 'client-implicit/src/main/resources/application.properties'
$ echo 'client-implicit/src/main/resources/application.properties' >> .gitignore
$ git-secret add client-implicit/src/main/resources/application.properties
1 item(s) added.
$ git rm --cached social-authcode/src/main/resources/application.properties
rm 'social-authcode/src/main/resources/application.properties'
$ echo 'social-authcode/src/main/resources/application.properties' >> .gitignore
$ git-secret add social-authcode/src/main/resources/application.properties
1 item(s) added.
###
# 암호화
# - 명령어 : git-secret hide
###
$ git-secret hide
done. all 1 files are hidden.
###
# 복호화
# - 명령어 : git-secret reveal
###
$ git-secret reveal
File '/Users/hyunsoo0813/Documents/workspace/oauth2.0-cookbook/client-implicit/src/main/resources/application.properties' exists. Overwrite? (y/N) y
File '/Users/hyunsoo0813/Documents/workspace/oauth2.0-cookbook/social-authcode/src/main/resources/application.properties' exists. Overwrite? (y/N) y
File '/Users/hyunsoo0813/Documents/workspace/oauth2.0-cookbook/social-linkd-in/src/main/resources/application.properties' exists. Overwrite? (y/N) y
done. all 3 files are revealed.
Reference
반응형
'IT 인프라 > DevOps' 카테고리의 다른 글
Docker 이미지 용량을 줄이는 Tip (0) | 2019.11.19 |
---|---|
나만의 Docker Compose Cheat Sheet (0) | 2019.11.18 |
나만의 Dockerfile Cheat Sheet (0) | 2019.11.18 |
나만의 Docker Cheat Sheet (0) | 2019.11.16 |
일반 계정으로 docker 명령어 사용하기 (0) | 2019.11.16 |