Thiết lập git secrets (git secrets 設定方法) - phongtmlf/docs GitHub Wiki

リンク元 git-secrets 設定方法 git-secrets の設定について記載します。

git-secrets là tool của AWS, dùng để phòng tránh việc các thông tin nhạy cảm bị commit lên github do nhầm lẫn (API key, secrets, etc)

Installing git-secrets

Mac

$ brew install git-secrets
https://github.com/awslabs/git-secrets#homebrew-for-macos-users

Linux

$ git clone https://github.com/awslabs/git-secrets.git
$ export PATH="$PATH:/path/to/repo/git-secrets"
$ cd ./git-secrets
$ make install

※ nếu khi chạy lệnh make install mà có lỗi sau thì tham khảo cách xử lý bên dưới

$ make install
cp: 通常ファイル `/usr/local/bin/git-secrets' を作成できません: 許可がありません
make: *** [install] エラー 1
# khi chạy lệnh make mà cần quyền sudo thì edit Makefile và thay đổi install directory
# ① Tạo directory dùng để install 

mkdir /home/${USER}/任意ディレクトリ

# ② edit PREFIX dòng 1 của Makefile
#thay đổi từ PREFIX ?= /usr/local thành:
PREFIX ?= /home/${USER}/任意ディレクトリ

# ③ make install

make install

# bin directory sẽ được tạo trong directory đã tạo ở trên 
# Hãy chọn lựa PATH thích hợp

https://github.com/awslabs/git-secrets#nix-linuxmacos

Windows

Chạy ở powershell

PS > .\install.ps1

※ Khi chạy lệnh trên mà bị lỗi về quyền thì thực hiện command dưới

PS > powershell -ExecutionPolicy RemoteSigned .\install.ps1

https://github.com/awslabs/git-secrets#windows

Các bước setup

① Setup để git-secrets thực hiện detect

Thiết lập để detect khi các thông tin sensitive liên quan tới AWS commit ở git hooks

# thiết lập global cho toàn bộ repo (nên làm)
$ git secrets --register-aws --global

# cat ~/.gitconfig に以下が追記されていること
# [secrets]
#	providers = git secrets --aws-provider
#	patterns = [A-Z0-9]{20}
#	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


# thiết lập cho từng repo (nên thiết lập cách trên)
# $ git secrets --register-aws

# cat .git/config に以下が追記されていること
# [secrets]
#	providers = git secrets --aws-provider
#	patterns = [A-Z0-9]{20}
#	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

Nếu muốn detect cả các nội dung không liên quan tới AWS (ví dụ API key, DB password) Tham khảo bảng sau để thêm xử lý

オプション / Operation Modes

patterns

thêm các pattern không muốn commit lên git
Có thể sử dụng regex

VD:detect chatwork token
$ git secrets --add --global '[a-z0-9]{32}'

→ ~/.gitconfig に secrets.patterns [a-z0-9]{32}が 追記されていればOK

→ ~/.gitconfig に secrets.patterns [a-z0-9]{32}が 追記されていればOK

providers

Set các chuỗi ký tự output trả về khi chạy command vào patterns
VD:
khi thực hiện command: git secrets --aws-provider
thì sẽ output access key và secret key đang set trong ~/.aws/credentials
providers sẽ set những chuỗi ký tự được output vào patterns
Dùng để detect những thông tin không muốn ghi trực tiếp vào file config (như API key)

$ git secrets --aws-provider
AKIAIOSFODNN7EXAMPLE  # 注:サンプルキー
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY # 注:サンプルキー

allowed

Các patterns cho phép
Nếu được set trong cả allowed và patterns
thì sẽ ưu tiên allowed
Lưu ý,
AKIAIOSFODNN7EXAMPLE
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
là key được public trong các tài liệu chính thức của AWS
(nên set trong allowed cũng không vấn đề gì)

Khi thay đổi .git/config thì có thể thực hiện command sau để check xử lý có đúng như kỳ vọng hay không $ git secrets --scan $filename

② Thiết lập git hooks(※cần thực hiện cho từng repo)

Thiết lập để git-secrets detect cho các action cụ thể của git

.git/hooks/commit-msg
.git/hooks/pre-commit
.git/hooks/prepare-commit-msg
$ cd /path/to/開発リポジトリ

# git hooks ファイルを作成する
$ git secrets --install                                                                                                                                              (git)-[develop]
✓ 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

Chú ý: Nếu đã từng thiết lập git hooks và có file sau thì khi thực hiện command git secrets --install sẽ bị dừng nửa chừng Do đó sẽ cần phải thêm code sau vào file của từng hooks .git/hooks/commit-msg

#!/usr/bin/env bash
git secrets --prepare_commit_msg_hook -- "$@"


既存の設定
...
.git/hooks/pre-commit
#!/usr/bin/env bash
git secrets --pre_commit_hook -- "$@"


既存の設定
...
.git/hooks/prepare-commit-msg
#!/usr/bin/env bash
$ git secrets --prepare_commit_msg_hook -- "$@"


既存の設定
...

(optional)thiết lập để tạo hooks từ template khi git init Nếu thiết lập như sau, khi dùng git init để tạo repo thì cũng sẽ tự động thiết lập hooks của git secrets

$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'

Tham khảo