Terraform
将您的 Sentinel 策略集上传到 HCP Terraform
要为您的 Terraform 运行启用 Sentinel 策略执行,您必须将您的策略上传到您的 HCP Terraform 组织。在本教程中,您将在您的组织中创建一个新的 Sentinel 策略集,配置工作区以应用您的策略,并触发 Sentinel 策略检查。
先决条件
对于本教程,您需要
- HCP Terraform 或 Terraform Enterprise 帐户
- 访问 Terraform 组织的
owners组 - 一个 GitHub 帐户
- 一个 AWS 账户以创建示例资源
您还应该熟悉如何 通过 VCS 变更触发 HCP Terraform 运行和 销毁 HCP Terraform 工作区。
分叉示例仓库
分叉 示例仓库,其中包含 Terraform 配置以配置一个 EC2 实例。

创建一个 HCP Terraform 工作区
导航到您的 HCP Terraform 组织并创建一个新的 VCS 后端工作区,该工作区连接到您分叉的 learn-terraform-sentinel 仓库。
配置工作区变量
导航到您的 learn-terraform-sentinel 工作区的“变量”页面。
定义一个名为 instance_type 的变量并将值设置为 t2.large。
定义您的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 的环境变量。 确保将两者都设置为 敏感。
完成时,您的变量定义将与以下内容匹配

分叉 Sentinel 策略集仓库
现在分叉 示例策略仓库,其中包含 Sentinel 策略和规则强制定义。
restrict-aws-instances-type-and-tag.sentinel 文件包含一个 Sentinel 策略,该策略定义了一个 main 规则,该规则由定义基础设施需求的两个其他规则组成
mandatory_instance_tags规则检查所有 EC2 实例是否具有Name标签。instance_types_allowed规则检查 EC2 实例的类型是否为t2.micro、t2.small或t2.medium。
您必须在策略仓库中列出所有定义的策略,并将其放在 sentinel.hcl 文件中。该文件还设置每个策略的强制级别,该级别指定策略失败时应采取的行为。HCP Terraform 将按照此文件中策略出现的顺序评估策略。
此配置包含一个策略定义。
sentinel.hcl
policy "restrict-aws-instances-type-and-tag" {
enforcement_level = "hard-mandatory"
}
请注意为您的策略配置的 enforcement_level。策略可以具有三种强制级别之一
- 建议 (默认):策略可能会失败。HCP Terraform 会将所有失败记录在审计日志中。
- 软强制:如果发生失败,组织所有者或具有覆盖权限的用户可以覆盖策略以允许运行继续。HCP Terraform 会将所有覆盖记录在审计日志中。
- 硬强制:策略必须通过才能继续运行。
连接策略集
在 HCP Terraform UI 中,导航至 设置 > 策略集。然后,单击 连接新的策略集 以创建新的策略集。

选择您 learn-sentinel-policy-upload 仓库的分支作为源。有关更多信息或有关其他 VCS 连接设置,请访问我们的从 VCS 更改触发 HCP Terraform 运行教程。
HCP Terraform 可以将策略集应用于整个组织,也可以应用于特定的工作区。
在 配置设置 页面
- 选择 Sentinel 策略框架。
- 在 策略范围 下,选择 应用于选定的工作区的策略。
- 选择您的
learn-terraform-sentinel工作区,然后单击 添加工作区。 - 单击 连接策略集。

触发 Sentinel 检查
导航到你的 learn-terraform-sentinel 工作区。点击 Actions 菜单并选择 Plan and apply (standard)。
由于你将 instance_type 变量设置为 t2.large,本次运行将导致策略检查失败,因为它违反了 instance_types_allowed 规则。Terraform 不会让你应用该计划。

导航到工作区的 Variables 页面,并将 instance_type 的值更新为 t2.small。保存变量。
启动另一次运行。这次,Sentinel 将验证提议的更改并允许你应用该计划。

由于这是教程的结尾,请点击 Discard Run。
删除策略集
导航回 Settings > Policy Sets 下的策略集,然后点击 Delete policy set。通过点击“Yes, delete policy set”确认。

删除工作区
如果你将继续其他策略教程,请跳过此步骤。
HCP Terraform 不会按工作区收费,因此如果你稍后完成其余教程,可以保留工作区。要删除它,请导航到工作区的 Settings,然后选择 Destruction and Deletion,并按照提示删除工作区。
下一步
你现在已经将 Sentinel 策略集上传到 HCP Terraform,并触发了策略失败和通过。要了解有关 Sentinel 的更多信息,请查阅以下资源