terraform-policy について
terraform-policyは、Terraform Policyファイルの作成とテストを支援するユーティリティスキルです。ポリシーの作成や変換はtfpolicy-authorへ、テストはtfpolicy-testへ振り分け、インストール済みtfpolicy CLIのバージョンに応じたガイダンスを提供します。
主な機能
- 01.policy.hclファイルの作成と変換
- 02.policytest.hclファイルの作成とデバッグ
- 03専用サブスキルへのタスク振り分け
- 04tfpolicy CLIのバージョン別動作の確認
活用シーン
- 01要件に基づくポリシー作成
- 02Sentinelポリシーの変換
- 03ポリシーテストのデバッグ
- 04バージョンに応じた作成ガイダンスの選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hashicorp/ agent-skills --skill terraform-policyインストール後、Claude Code で/terraform-policyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreexamples/conversion/cloudfront-associated-with-waf/cloudfront-associated-with-waf.policy.hclcloudfront-associated-with-waf.sentinelREADME.mdexamples/conversion/cloudtrail-server-side-encryption-enabled/cloudtrail-server-side-encryption-enabled.policy.hclcloudtrail-server-side-encryption-enabled.sentinelREADME.mdexamples/conversion/dms-endpoint-should-be-ssl-configured/dms-endpoint-should-be-ssl-configured.policy.hcldms-endpoint-should-be-ssl-configured.sentinelREADME.mdexamples/conversion/dms-endpoints-should-use-ssl/dms-endpoints-should-use-ssl.policy.hcldms-endpoints-should-use-ssl.sentinelREADME.mdexamples/conversion/ec2-network-acl-should-have-subnet-ids/ec2-network-acl-should-have-subnet-ids.policy.hclec2-network-acl-should-have-subnet-ids.sentinelREADME.mdexamples/conversion/ec2-vpc-default-security-group-no-traffic/ec2-vpc-default-security-group-no-traffic.policy.hclec2-vpc-default-security-group-no-traffic.sentinelREADME.mdexamples/conversion/efs-access-point-should-enforce-user-identity/efs-access-point-should-enforce-user-identity.policy.hclefs-access-point-should-enforce-user-identity.sentinelREADME.mdexamples/conversion/elasticache-redis-replication-group-encryption-at-transit-enabled/elasticache-redis-replication-group-encryption-at-transit-enabled.policy.hclelasticache-redis-replication-group-encryption-at-transit-enabled.sentinelREADME.mdexamples/conversion/elasticsearch-encrypted-at-rest/elasticsearch-encrypted-at-rest.policy.hclelasticsearch-encrypted-at-rest.sentinelREADME.mdexamples/conversion/elasticsearch-https-required/elasticsearch-https-required.policy.hclelasticsearch-https-required.sentinel詳細
terraform-policy
ユーティリティスキル — 呼び出すスキル:tfpolicy-author | tfpolicy-test
次の場合に使用します:
- 説明や要件をもとに、新しい
.policy.hclポリシーを作成する .sentinelポリシーを Terraform Policy に変換する.policytest.hclテストファイルを作成またはデバッグする- Sentinel ポリシーライブラリを Terraform Policy に移行する
作成またはテストの手順を提示する前に、インストールされている tfpolicy CLI のバージョンを確認し、それに応じて案内してください。このスキルでは、直近の 2 つのマイナー系列である 0.2.x と 0.3.x のガイダンスを管理しています。新しいマイナー系列がリリースされたら、最も古い系列を削除して新しい系列を追加してください。
- CLI が
0.2.xの場合(ベースライン)、リソースポリシーまたはプロバイダーポリシーを含む.policy.hclファイルを作成する際は、トップレベルにpolicy { required_providers { ... } }ブロックを含めてください。これはtfpolicy validateで必須です。バージョン範囲の検証はベストエフォートであり、resource_policy "*"のようなワイルドカードターゲットはスキーマ検証されません。tfpolicy testは、モックのattrs/prior_attrsをプロバイダーのスキーマと照合する事前チェックを行いません。また、core::alltrue/core::anytrueは存在せず、この0.2.x系列に限り、モックのresource {}ブロックではattrs/prior_attrsを完全に省略できます。 - CLI が
0.3.x以降の場合、上記の他のガイダンスも適用されますが、リソース状態の省略を許可する0.2.xの例外は適用されません。.policytest.hclファイル内のすべてのモックresource {}ブロックには、attrsまたはprior_attrsを宣言する必要があります。両方の評価結果が空の場合、そのテストケースはスキップされます(provider {}とmodule {}のモックには影響しません)(tfpolicy-test を参照)。tfpolicy testは、対象の.policy.hclに既存のトップレベルpolicy { required_providers { ... } }ブロックがあればそれを再利用し(.policytest.hclレベルに別途宣言する必要はありません)、すべてのテストの実行前に、解決済みのプロバイダースキーマと照合してプロバイダー、リソース、データソースのポリシー、およびcore::getdatasource()/core::getresources()の引数を検証します。スキーマが一致しない場合、実行全体が失敗します(tfpolicy-test を参照)。core::alltrue(list)とcore::anytrue(list)も使用できます。core::length()を使ったリスト内包表記による回避策よりも、これらを優先してください(tfpolicy-author を参照)。meta.tfe_stackとmeta.tfe_workspace.tagsは、リソース、プロバイダー、モジュールの各ポリシーで使用できます。Stack の評価以外では、Stack のフィールドは空です。 - CLI のバージョンが不明な場合は、まずユーザーに確認してもらうか、
0.2.xと0.3.xの手順を明確に区別したガイダンスを提示してください。
次の場合には使用しないでください:
- Terraform モジュール用の
.tftest.hclファイルを作成する場合 —terraform-testを使用してください - 一般的な Terraform HCL を作成する場合 —
terraform-style-guideを使用してください
振り分け
| タスク | サブスキル |
|---|---|
.policy.hcl ポリシーを作成または変換する | tfpolicy-author |
.policytest.hcl テストを作成またはデバッグする | tfpolicy-test |
例
- 「暗号化されていない EC2 インスタンスをブロックする」→ tfpolicy-author
- 「この Sentinel ポリシーを tfpolicy に変換する」→ tfpolicy-author
- 「EBS ポリシー用の policytest を作成する」→ tfpolicy-test
トラブルシューティング
- 誤ったスキルが呼び出されましたか? 上の振り分け表からサブスキルを直接読み込んでください。
npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-author
npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-test
コメント
Markdown 対応