Pre-written Sentinel PoliciesをTerraform Moduleを使ってHCP Terraformにデプロイしてみる
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 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にアップロード
- ポリシーセットとして組織とワークスペースに適用
- 使い終わった一時ファイルを削除
モジュールを使ってリソースをデプロイ
HCP Terraform(または、Terraform Enterprise)にポリシーセットが作成されます。
HCP Terraform用の認証情報が必要です。
設定していない場合は、terraform login
で認証情報を作成できます。
モジュール呼び出しのコードを作成します。
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つのポリシーセットが作成されていることがわかります。
指定したWorkspaceがスコープに設定されています。
動作確認
Runを作成してみます。
ポリシーチェックが行われることを確認できました。
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)でした。