【環境】
ProductName: macOS
ProductVersion: 11.3
brewから(tfenvインストール)
$ brew install tfenv
version確認
$ tfenv --version
tfenv 2.1.0
インストール可能なバージョンを確認
$ tfenv list-remote
0.15.3
・
・
・
0.1.0
複数のTerraformバージョンインストール
$ tfenv install 0.15.3
$ tfenv install 0.15.2
# tfenv 0.15.3 インストール
~$ tfenv install 0.15.3
Installing Terraform v0.15.3
Downloading release tarball from https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_darwin_amd64.zip
######################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.SuqcbJ/terraform_0.15.3_darwin_amd64.zip
inflating: /usr/local/Cellar/tfenv/2.1.0/versions/0.15.3/terraform
Installation of terraform v0.15.3 successful. To make this your default version, run 'tfenv use 0.15.3'
## tfenv 0.15.2 インストール
$ tfenv install 0.15.2
Installing Terraform v0.15.2
Downloading release tarball from https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_darwin_amd64.zip
######################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.vGB3t7/terraform_0.15.2_darwin_amd64.zip
inflating: /usr/local/Cellar/tfenv/2.1.0/versions/0.15.2/terraform
Installation of terraform v0.15.2 successful. To make this your default version, run 'tfenv use 0.15.2'
このままだと、最後にインストールした0.15.2が選択されてしまう
0.15.3を使用したいので、バージョンを切り替る
% tfenv use 0.15.3
Switching default version to v0.15.3
Switching completed
$ tfenv list
* 0.15.3 (set by /usr/local/Cellar/tfenv/2.1.0/version)
0.15.2
git-secrets設定
gitをインストール
$ git init
全リポジトリにAWS認証情報のパターンを設定する
$ git secrets --register-aws --global
git-secrets設定
全リポジトリにAWS認証情報のパターンを設定します。
$ git secrets --register-aws --global
設定ファイルの内容を確認する
% 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
aws_access_key_id = "AKIAIOSFODNN7EXAMPLE"
|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公式ドキュメントのAWSアクセスキーを管理するためのベストプラクティスに記載されている、サンプルキー
動作確認
- AWS認証情報が記載されていた場合に、Gitのコミットを防ぐことができるのかを確認
- まずはテスト用のディレクトリを作成し、移動する
$ mkdir aws-secrets-test
$ cd aws-secrets-test
- テスト用のAWS認証情報は~/.gitconfigのallowedのサンプルキーを参考にする
- 数字の部分を7から8に変更してmain.tfを作成する
% echo "aws_access_key_id = \"AKIAIOSFODNN8EXAMPLE\"\naws_secret_access_key = \"wJalrXUtnFEMI/K8MDENG/bPxRfiCYEXAMPLEKEY\"" > main.tf
main.tfをコミット対象にします。
$ git add main.tf
Gitにコミットしてエラーになることを確認する
$ git commit -m "secrets test"
main.tf:1:aws_access_key_id = "AKIAIOSFODNN8EXAMPLE"
main.tf:2:aws_secret_access_key = "wJalrXUtnFEMI/K8MDENG/bPxRfiCYEXAMPLEKEY"
[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
まとめ
以上、Terraform環境導入でした