HashiCorp发布了策略即代码框架Sentinel的一些改进,新特性包括:改进导入配置语法、新增静态导入特性、支持命名函数以及 per-policy 参数值。它还提供了新的辅助函数,用来确定一个值是否未定义。
0.19 版本引入了经过改进的导入配置系统,提供了标准化的命名约定,以及使用 HCL 语法的一致性更好的导入配置。现在, import
块还允许覆盖策略中使用的导入和插件的默认配置。新语法如下所示:
0.19 版本还引入了一个新的静态导入特性,允许将静态的结构化 JSON 数据导入策略。该导入块有两个配置属性:source
表示数据的路径;format
目前只支持 JSON 格式。
数据一旦导入,就可以在策略中使用了。假如 JSON 中有一个名为names
的键,则可以使用length(people.names)
确定该对象的长度。HashiCorp 表示将在以后的版本中添加对其他数据格式的支持。
0.20 版本引入了命名函数。该功能允许定义不能重新分配或重用的函数。请注意,匿名函数仍然可以重新分配,如果之后调用该函数,可能会导致策略失败。命名函数的语法如下所示:
0.21 版本增加了两个辅助函数,用来确定一个值是否已定义。在以前的版本中,策略作者必须使用else
表达式从未定义值中恢复并提供替代值。
该版本还增加了 per-policy 参数值。这些值为每个策略提供一次,优先于全局提供的值。以前,参数值在一个配置中只提供一次,并在所有策略中共享。
Terraform Cloud 的最新版本还增加了对开放策略代理(OPA)的支持,作为一种可选的策略即代码框架。OPA 是一个开源策略引擎,它使用了一种名为Rego的高级声明性语言。
HashiCorp网站提供了 Sentinel 的下载。要了解关于这些版本的更多细节,可以查看HashiCorp官方博客或更新日志。
原文链接:
https://www.infoq.com/news/2023/04/hashicorp-sentinel-devex/
评论