コンテンツにスキップ

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"