LoginSignup
0
1

More than 1 year has passed since last update.

AWSのアクセスキーがファイルに含まれていたらエラーとしたい

Posted at

目次

概要

AWSを用いた開発を行なっていると、AWSのアクセスキーを用いてローカル環境で検証を行います。
しかし、検証後にそのままコミットして、AWSアクセスキーをGitリポジトリに混入させてしまうリスクがあります。
そこで、AWSのアクセスキーがファイルに含まれていたらエラーとする方法について検証しました。

準備

git-secretsのインストール

$ brew update
$ brew install git-secrets

コマンドの確認

$ which git-secrets
/usr/local/bin/git-secrets

$ git secrets
usage: git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]

インストールされていることを確認。

設定

git secrets --register-aws --global
OK

以下が追加されていることを確認

~/.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

allowedに値を指定すると、エラーならず、許容されます。
上記の値は以下URLのサンプルのキー情報です。

検証

AWSのアクセス情報を含むファイル作成

vi aws_credential.txt

ファイルの中身を表示

$ cat aws_credential.txt 
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLo
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEo

git secretsでファイルをスキャンしてみる

$ git secrets --scan --no-index
fatal: not a git repository (or any of the parent directories): .git
aws_credential.txt:3:aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEo

[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

上記のように、エラーとなってくれました。

後は、これをhuskyと組み合わせてgitでcommit時に上記コマンドを実行するようにすればよさそうです。

huskyの使い方は以下でまとめているので、気になる方はどうぞです。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1