Terraform policy for さくらのクラウド
概要
Terraform policy for さくらのクラウド
は、Terraform for さくらのクラウドを用いて記述されたTerraformコードを、セキュリティおよびガバナンスの観点から静的にチェックするためのポリシーです。
本ポリシーはRegoで記述されており、OPA(Open Policy Agent)とConftestに依存しています。
利用例
実行環境にOPAとConftestがインストールされていることが前提となります。
ローカル環境での利用
Terraformコードの実装者がローカル環境で実行する方法です。 前述のとおり、ローカル環境にOPAとConftestがインストールされていることが前提となります。
# Run within the Terraform repository that uses the Terraform SakuraCloud provider
$ cd terraform
# Download the policy
$ conftest pull 'git::https://github.com/sacloud/terraform-provider-sakuracloud-policy.git//policy?ref=v1.1.0'
# Run the tests
$ conftest test . --ignore=".git/|.github/|.terraform/"
GitHub Actionsでの利用
GitHub Actions を用いて、CI(継続的インテグレーション)を行う方法です。
name: conftest terraform policy check
on:
pull_request:
env:
CONFTEST_VERSION: 0.55.0
jobs:
test:
name: policy check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Conftest
run: |
mkdir -p $HOME/.local/bin
echo "$HOME/.local/bin" >> $GITHUB_PATH
wget -O - 'https://github.com/open-policy-agent/conftest/releases/download/v${{ env.CONFTEST_VERSION }}/conftest_${{ env.CONFTEST_VERSION }}_Linux_x86_64.tar.gz' | tar zxvf - -C $HOME/.local/bin
- name: Conftest version
run: conftest -v
- name: download policy
run: conftest pull 'git::https://github.com/sacloud/terraform-provider-sakuracloud-policy.git//policy?ref=v1.1.0'
- name: run test
run: conftest test . --ignore=".git/|.github/|.terraform/" --data="exception.json"