
Terraform Cloudと統合してSnyk IaCを実行してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
今回は、Terraform Cloudと統合してSnyk IaCを実行してみようと思います。
前提条件
まず初めにTerraform CloudとSnyk IaCを統合するには、Terraform Cloud側で有料プランを利用する必要があったため注意が必要です。
This feature is available for all Snyk plans. Note that Terraform Cloud run tasks are available in the Terraform Cloud Team & Governance tier. The Terraform Cloud Free tier does not support run tasks.
今回の記事は、Hashicorp社と交渉の上、検証用のトライアルアカウントを利用しています。
全体像
全体像は以下になります。
terraform plan実行後にSnyk IaCを実行するように統合します。

Snyk Account Credentialsの取得
Terraform CloudのRun Taskで利用する、Snyk Account Credentialsの取得を行います。
Snyk Account Credentialsは、Organization単位で取得可能みたいです。
「Integrations」から「terraform」と入力し「Terraform-Cloud」をクリックします。

「Account Credentials」の画面に遷移したら、「URL」と「HMAC Key」をコピーして控えておきます。

Run Taskの作成
では、Terraform Cloud側でSnyk Account Credentialsを利用してRun Taskを作成していきます。
Organization Settingsの「Run tasks」から「Create Run task」をクリックします。

「Create a Run Task」画面位遷移したら、Run Taskの作成に必要な情報を入力します。
「Endpoint URL」と「HMAC key (optional)」には、Snyk Account Credentialsで取得した情報を設定します。

Workspaceへの関連付け
Run Taskの作成が完了したら、Terrform CloudのWorkspaceへ関連付けを行います。
Workspace Settingsの「Run tasks」をクリックします。
Run Taskの作成が完了している場合、「Available Run Tasks」に先ほど作成したRun Taskが表示されます。作成したSnykのRun Taskをクリックします。

「Associate Run Task」画面に遷移したら、WorkspaceとRun Taskの関連付けを行います。
今回はterraform planの後に行いたいため、Run stageを「Post-plan」で選択します。また、Enforcement Levelは「Advisory」で進めていきます。

Run Taskの実行
Workspaceへの関連付けまで完了したため、Run Taskを実行していきます。次のコードを用意してSnyk IaCルールが検知されるように検証します。
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "pubic" {
vpc_id = aws_vpc.vpc.id
cidr_block = "10.0.1.0/24"
map_public_ip_on_launch = true
}
上記のコードでは「map_public_ip_on_launch」がtrueであるため以下のルールに検知されます。
予定通り、Post-planで検知されていることがわかります。

「Details」をクリックするとSnyk Web UIにリダイレクトし検知されたルールの詳細が確認できます。

参考
まとめ
以上、Terraform Cloudと統合してSnyk IaCを実行してみたでした。
非常に簡単にセットアップできたのでぜひ、お手元で試してもらえればと思います。この記事がどなたかの参考になれば幸いです。
AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!






