はじめに
今回はTerraform
の内容とは若干外れますが、Terraform
で開発していくために使用するツール類のインストールとセットアップを行ってみようと思います。
今回インストールするツール
今回は以下2つのインストール&セットアップを行います。
- git-secrets
- Visual Studio Code(VS Code)
インストール環境
前回と同様、Windows端末にインストールしていきます。
種別 | 内容 |
---|---|
OS | Windows 11 Home |
アーキテクチャ | AMD Ryzen 7 3700U |
git-secretsとは
AWS
がGitHub
で公開しているツールで、AWS
のクレデンシャル情報(アクセスキー&シークレットアクセスキー)を含むファイルがGit
でコミットされないようにするツールとなります。
仕組みとしてはGit
のフック機能を使用して、Git
のコミット実行時にコミットメッセージやマージした際の履歴等に所定の文字列(アクセスキー&シークレットアクセスキーの文字列)が含まれていればコミットを拒否する動作を行う仕組みとなります。
AWS
のクレデンシャル情報だけではなく、自分で拒否パターンを追加することもできるようなので、うまく使えば所定の文字列チェックツールとしても使えそうです。
公式ページにも記載されている通り、git-secretsはあくまでも保険的なツールとなります。
git-secretsをインストールしたとしても誤検知でコミットされてしまう可能性もあるため、過信しすぎないようにしてください。
git-secretsのインストール&セットアップ
git-secrets
は以下の流れでインストールとセットアップを行っていきます。
- git-secretsのインストール
- git-secretsのセットアップ
- git-secretsの動作確認
- 既存のGitリポジトリへのgit-secretsインストール
git-secretsのインストール
git-secrets
をインストールするためには、上述のGitHub
からクローンでダウンロードし、リポジトリ内に含まれるインストールスクリプトを実行することでインストールできます。
操作端末はWindows
となるため、PowerShell
で実行していきますが、インストールスクリプトはWindows
のデフォルトだと実行できないため、管理者権限でPowerShell
を起動して、以下コマンドを実行しておきます。
Set-ExecutionPolicy RemoteSigned
git clone
コマンドでGitHub
からgit-secrets
をダウンロードして、中にある「install.ps1
」を実行します。
尚、git-secrets
はユーザのホームディレクトリとなる「C:\Users\[ユーザ名]」の配下にダウンロードするものとします。
git clone https://github.com/awslabs/git-secrets.git
cd ./git-secrets
./install.ps1
git-secretsのセットアップ
以下の手順を実行し、git-secrets
のセットアップを行います。
- AWS用検査パターンの追加
- Gitフック用テンプレート作成
- テンプレートディレクトリ設定
git-secrets
は上述の通り、Git
のフック機能を使用してコミット時にチェックする仕組みとなるため、言い換えると上記セットアップはGit
フックを使用するための設定を追加していることとなります。
もう少し詳細に見ていくと下記のようなことが行われております。
-
上記1
Git
インストールを行った端末のホームディレクトリに存在する.gitconfig
ファイルに、コミット時に参照される検査パターンを追加。 -
上記2
所定のディレクトリ配下(今回はユーザのホームディレクトリ配下)にフック用テンプレートを作成。 -
上記3
.gitconfig
にテンプレート用ディレクトリを追加。
AWS用検査パターンの追加
.gitconfig
に検査パターンを追加するため、以下コマンドを実行します。
git secrets --register-aws --global
以下コマンドでsecrets.providers
やsecrets.patterns
の内容が表示されればOKです。
git config --global --list
Gitフック用テンプレート作成
所定のディレクトリ配下にGitフック用テンプレートをインストールします。
今回はユーザのホームディレクトリ配下となる「C:\Users\UserName\.git-templates\git-secrets」に各種フック用ファイルをインストールします。
git secrets --install $env:userprofile/.git-templates/git-secrets
テンプレートディレクトリ設定
ユーザが作成したフック用テンプレートを指定する際に使用されるinit.templatedir
変数に、先ほどフック用ファイルをインストールした場所を指定します。
git config --global init.templatedir $env:userprofile/.git-templates/git-secrets
git-secretsの動作確認
git-secrets
の動作を確認するため、適当な場所にテスト用Gitリポジトリを作成し、AWSクレデンシャル情報があった場合コミットできないかを確認します。
以下はユーザのホームディレクトリにterraformディレクトリを作成してローカルリポジトリを作成&コミットを行ってみます。
AWSのクレデンシャル情報はAWS CLI
セットアップ時に作成されているクレデンシャル情報を持ってきて実行することとします。
mkdir terraform
cd terraform
git init
cp $env:userprofile/.aws/credentials ./
git add .
git commit -m "test commit"
コミット実行時、以下のようにエラーメッセージが表示されれば成功です。
credentials:2:aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
credentials:3:aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
[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
既存のGitリポジトリへのgit-secretsインストール
上記「git-secretsの動作確認」と同様、新たにgit init
コマンドでリポジトリを作成する場合は、リポジトリ作成時に各リポジトリ内に作成される.git/hooks
にinit.templatedir
で設定したテンプレートが読み込まれるため、いちいちgit-secrets
の設定を行う必要はありませんが、既存のGitリポジトリには今回作成したフック用テンプレートが設定されていないため、別途設定する必要があります。
既存Gitリポジトリへインストールを行うためには以下コマンドを実行します。
尚、複数Gitリポジトリが存在する場合は、それぞれのリポジトリ配下で実行する必要があります。
cd [既存Gitリポジトリ]
git secrets --install
git secrets --register-aws
設定し終わったら先ほどと同様git-secrets
の動作確認を行い、先ほどと同様のエラーが表示されれば完了です。
cd [既存Gitリポジトリ]
cp $env:userprofile/.aws/credentials ./
git add .
git commit -m "test commit"
VS Codeのインストールとセットアップ
開発用としてVisual Studio Code
(以下VS Code
)をインストールして、追加で拡張機能などの設定を行います。
- VS Codeのインストール
- 拡張機能のインストール
- VS Codeのデフォルトターミナル変更
VS Codeのインストール
以下よりWindows用VS Code
をダウンロードし、インストールします。
インストール自体はインストーラを実行するだけなので割愛。
拡張機能のインストール
インストールしたVS Code
を起動し、画面左の拡張機能から以下を検索してインストールします。
- Japanese Language Pack for Visual Studio Code
- HashiCorp Terraform
これも検索して「インストール」をクリックするだけなので割愛。
VS Codeのデフォルトターミナル変更
Windows
でTerraform
を使用する場合、Git Bash
による使用が推奨されているそうなので、VS Code
のデフォルトのターミナルをGit Bash
に変更します。
最初にVS Code
を起動して、「ファイル」→「ユーザー設定」→「設定」を開き、「設定の検索」で以下を入力して検索します。
【検索文字列】
terminal integrated default profile windows
表示された設定のプルダウンメニューを確認すると、以下のように「Git Bash
」が選択できると思うので、「Git Bash
」を選択します。
変更後、「ターミナル」→「新しいターミナル」を開き、以下のようにGit Basah
のプロンプトが表示されれば完了です。
おわりに
今回はTerraform
の開発環境を整えるところまで実施しました。
次回はVS Code
で実際にTerraform
のコードを作成して実行するところまで進めようと思います。