Pre-written Sentinel PoliciesをTerraform Moduleを使ってHCP Terraformにデプロイしてみる

Pre-written Sentinel PoliciesをTerraform Moduleを使ってHCP Terraformにデプロイしてみる

Clock Icon2025.06.18

Pre-written Sentinel Policies for AWS FSBP Foundations Benchmarkingのドキュメントを見ていたら、ポリシーの利用方法にTerraform Module Approachというのがありました。

Terraform Module Approach:

  • Use a dedicated Terraform module designed to manage Sentinel policy sets.
  • Provide a minimal set of variable inputs (typically four) to configure and attach the policies.
  • The module will automatically attach the latest versions of multiple policy sets to their respective workspaces.
  • Execute a Terraform plan to verify that the policy sets are applied successfully in HCP Terraform or Terraform Enterprise.

Terraform Registry

Terraform Moduleを使って、Sentinelポリシーをデプロイする仕組みのようです。

ドキュメントを見ただけでは、内容が理解できなかったので実際に試してみました。

Pre-written-Policy-Set モジュール

やり方がわからず、情報を漁っていたら以下のモジュールを見つけました。

Prewritten-Policy-Set | Terraform Registry

HashiCorp公式・Pre-written Sentinel policiesを対象していることから、Terraform Module Approachはこのモジュールを使うアプローチのようです。

内容を見てみると、以下を行っていました。

  • 指定されたGitHubリポジトリからSentinelポリシーをダウンロード
    • デフォルトでは、CISとFSBPのPre-written Sentinel Policyレポジトリが指定されている
  • 解凍してHCP Terraform または Terraform Enterpriseにアップロード
  • ポリシーセットとして組織とワークスペースに適用
  • 使い終わった一時ファイルを削除

terraform-AWS-Prewritten-Policy-Set/pre-written-policy/main.tf · hashicorp/terraform-AWS-Prewritten-Policy-Set · GitHub

モジュールを使ってリソースをデプロイ

HCP Terraform(または、Terraform Enterprise)にポリシーセットが作成されます。

HCP Terraform用の認証情報が必要です。

設定していない場合は、terraform loginで認証情報を作成できます。

モジュール呼び出しのコードを作成します。

main.tf
module "pre_written_policy_set" {
  source  = "hashicorp/Prewritten-Policy-Set/aws"
  version = "1.0.0"
  name                       = "example-policy-set"
  tfe_organization           = "<HCP Terraform Org>"
  policy_set_workspace_names = ["sample-ec2"] #ポリシー適用先 Workspace名
}

今回は最小限の設定としました。

デフォルトでは、Pre-written Sentinel policiesリポジトリ(パブリック)がポリシーリポジトリとして設定されます。

policy_github_repositoryを設定すれば、独自のリポジトリをポリシーリポジトリとして指定することも可能です。

Terraformを実行して、ポリシーセットを作成します。

terraform init
terraform plan
terraform apply

HCP Terraformを確認してみると、FSBPとCIS 2つのポリシーセットが作成されていることがわかります。

Cursor_と_Policy_Sets___classmethod-sandbox___HCP_Terraform.png

指定したWorkspaceがスコープに設定されています。

example-policy-set-0-policy-set___Policy_Set___classmethod-sandbox___HCP_Terraform.png

動作確認

Runを作成してみます。

ポリシーチェックが行われることを確認できました。

run-LyGmjjoSt6vbyfTq___Runs___classmethod-sandbox___HCP_Terraform.png

FSBPのポリシー(FSBP-Policy-Set-for-AWS-Terraform)をもう一つ適用していたのですが、example-policy-set-1-policy-setとチェック内容は同じでした。

チェック内容自体も問題なさそうです。

おわりに

Terraform Moduleを使ったPre-written Sentinel Policiesのデプロイについてでした。

Terraformで管理する際の参考としても使えるかと思います。

検証が一通り終わったあとに、2025/6/20に廃止予定の記載を追加するPRを見つけました。

今回紹介したモジュールは使わずに、他の方法でデプロイするようにしましょう。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.