[关闭]
@Rays 2017-11-25T12:01:51.000000Z 字数 2607 阅读 2224

使用HashiCorp Sentinel创建并执行“策略即代码”

语言开发


摘要: HashiCorp发布了Sentinel,一种集成在HashiCorp Enterprise产品中的嵌入式“策略即代码”(Policy as Code)框架。Sentinel支持“基于逻辑的细粒度策略决策”,实现了审计的自动化,并在与架构即代码和其它HashiCorp平台工具一并工作时,实现在如有必要时执行企业策略、合规策略或安全策略。

作者: Daniel Bryant

正文:

HashiCorp发布了Sentinel,一种集成在HashiCorp Enterprise产品中的嵌入式“策略即代码”(Policy as Code)框架。Sentinel支持“基于逻辑的细粒度策略决策”,实现了审计的自动化,并在与架构即代码和其它HashiCorp平台工具一并工作时,,实现在如有必要时执行企业策略、合规策略或安全策略。

HashiCorp当前提供了架构自动化工具产品套装,使用了广为采用的开源项目TerraformVaultConsulNomad,分别支持工程师实现架构的策略规定、安全、连接并运行。根据“HashiCorp之道”(Tao of HashiCorp)介绍,工具基于“架构即代码(IaC,Infrastructure as Code)”构建。IaC支持大规模地开展基础设施管理的编纂和自动化。但是在大型组织中,这种大规模创建、更改和注销基础架构的能力是有风险的,因为缺乏经验的工程师或自动化的配置错误可引发影响业务运营的重大错误。

一些现代基础设施平台和工具提供了不同程度的访问控制,一些云服务提供商也提供了身份和访问管理(IAM,Identity and Access Management) 类型的策略及访问列表(ACL,Access Control List)控制。据HashiCorp Sentinel官方网页介绍,这些ACL系统“解决了一个直接且必要的问题,就是广泛存在的系统锁定问题”。对于更高级的软件策略决策,Sentinel从中脱颖而出,它实现的是一种可重用的系统。

很多现有的策略或ACL系统并非可实用的“策略即代码”。一些策略是通过点击GUI设置的,不易于重做和版本管理。通常它们并不提供任何测试策略的系统,而是去测试可能破坏策略的行为。这使得自动化测试难以实现。而策略语言本身也是因产品而异的。

Sentinel将策略的组织和监管编码为文本配置,实现了限制风险,可确保对基础设施的变更是安全的。Sentinel在Terraform Enterprise、Vault Enterprise、Consul Enterprise和Nomad Enterprise中引入了“策略即代码”。当前,Sentinel并不支持上述工具的开源版本。Sentinel是在实时运行的系统中实现“防护栏”、业务需求和合法合规等。这就是说,Sentinel并非一种“亡羊补牢”型的审计工具。

Sentinel支持:

Sentinel定义并使用自己的策略语言。该语言在设计上考虑了非编程人员的理解,其中提供了多个用例,使得非开发人员也可以成为策略制定者。要了解更多的信息,可访问策略编写章节和Sentinel语言参考

命令sentinel apply实现在本地执行一个用于开发的策略,其用法为sentinel apply [选项] POLICY。命令执行由POLICY指定的路径中的策略文件。输出显示了策略是否通过,或是失败。配置文件可使用-config选项指定,其中定义了可用的导入插件、模拟数据和全局值,用于模拟嵌入到应用中的策略。可用的命令行选项如下:

下面是Terraform Sentinel策略文件的一个例子,策略定义为不允许在未提供标签的情况下设置资源:

  1. import "tfplan"
  2. main = rule {
  3. all tfplan.resources as r {
  4. r.attr contains "tags" and length(r.attr.tags) > 0
  5. }
  6. }

对于那些在工作中无需使用HashiCorp工具的工程师,如果他们热衷于此类“策略即代码”方法,可以尝试如下工具:对AWS资源做RSpec测试的awspecAzure Resource Manager模板Google Deployment Manager最佳实践等。他们也可以尝试使用AWS ConfigAzure Advisor等工具,实施合规性与安全的事后审计和报告。

关于HashiCorp Sentinel的更多信息,可参见HashiCorp网站,也可查看Sentinel公告的博客文章。

查看英文原文: Creating and Enforcing "Policy as Code" with HashiCorp Sentinel

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注