写点什么

HashiCorp 策略即代码框架 Sentinel 新增多项开发体验改进

  • 2023-05-18
    北京
  • 本文字数:989 字

    阅读完需:约 3 分钟

HashiCorp策略即代码框架Sentinel新增多项开发体验改进

HashiCorp发布了策略即代码框架Sentinel一些改进,新特性包括:改进导入配置语法、新增静态导入特性、支持命名函数以及 per-policy 参数值。它还提供了新的辅助函数,用来确定一个值是否未定义。

 

0.19 版本引入了经过改进的导入配置系统,提供了标准化的命名约定,以及使用 HCL 语法的一致性更好的导入配置。现在, import块还允许覆盖策略中使用的导入和插件的默认配置。新语法如下所示:

import "plugin" "time" {	config = {		timezone = "Australia/Brisbane"	}} import "module" "reporter" {	source = "./reporter.sentinel"}
复制代码

 

0.19 版本还引入了一个新的静态导入特性,允许将静态的结构化 JSON 数据导入策略。该导入块有两个配置属性:source表示数据的路径;format目前只支持 JSON 格式。

 

import "static" "people" {    source = "./data/people.json"    format = "json"}
复制代码

 

数据一旦导入,就可以在策略中使用了。假如 JSON 中有一个名为names的键,则可以使用length(people.names)确定该对象的长度。HashiCorp 表示将在以后的版本中添加对其他数据格式的支持。

 

0.20 版本引入了命名函数。该功能允许定义不能重新分配或重用的函数。请注意,匿名函数仍然可以重新分配,如果之后调用该函数,可能会导致策略失败。命名函数的语法如下所示:

 

func sum(a, b) {	a + b}
复制代码

 

0.21 版本增加了两个辅助函数,用来确定一个值是否已定义。在以前的版本中,策略作者必须使用else表达式从未定义值中恢复并提供替代值。

 

foo = undefined // 在0.21之前的版本中foo else false is false // falsefoo else true is true // true // 在0.21+版本中foo is defined // falsefoo is not defined // true
复制代码

 

该版本还增加了 per-policy 参数值。这些值为每个策略提供一次,优先于全局提供的值。以前,参数值在一个配置中只提供一次,并在所有策略中共享。

 

policy "restrict-s3" {	source = "./deny-resource.sentinel"	params = {		resource_kind = "aws_s3_bucket"	}}
复制代码

 

Terraform Cloud 的最新版本还增加了对开放策略代理(OPA)的支持,作为一种可选的策略即代码框架。OPA 是一个开源策略引擎,它使用了一种名为Rego的高级声明性语言。

 

HashiCorp网站提供了 Sentinel 的下载。要了解关于这些版本的更多细节,可以查看HashiCorp官方博客更新日志

 

原文链接:

https://www.infoq.com/news/2023/04/hashicorp-sentinel-devex/

2023-05-18 08:005988

评论

发布
暂无评论
发现更多内容

深入 JMeter 分布式加压机制:配置与性能优化技巧

测吧(北京)科技有限公司

测试

【YashanDB知识库】多csv文件一键式导入yashandb

YashanDB

数据库 yashandb

JMeter 分布式压测:实现大规模压力测试的最佳实践

测吧(北京)科技有限公司

测试

AC+AP Networking vs. Mesh Networking

wallyslilly

AI Agent:软件测试自动化的新纪元

测吧(北京)科技有限公司

测试

ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档

小喵子

云电脑 云游戏 ToDesk ToDesk云电脑

如何使用 Python 进行文件读写操作?

威哥爱编程

Python

VMware Tools 13.0.0 发布 - 客户机操作系统无缝交互必备组件

sysin

vmware

吊打面试官!从多维度理解架构

快乐非自愿限量之名

架构 面试

档案事业与数据要素之间有什么关系?

郑州埃文科技

数据要素

JMeter 调试技巧:从错误日志到性能瓶颈定位的全面攻略

测吧(北京)科技有限公司

测试

“全球金牌敏捷课程” · 2月22-23日CSM认证课程 · Jim老师

ShineScrum

Scrum Master Scrum认证 scrum敏捷开发

JMeter 与持续集成:自动化测试与压测的无缝对接

测吧(北京)科技有限公司

测试

用Golang写了个通用路由器,除了能路由HTTP协议外,还能路由Websocket/Tcp/Udp等协议,欢迎体验

Drunk

golang router 路由 DCE 通用路由

DeepSeek-V3模型:软件测试智能化的新篇章与挑战

测吧(北京)科技有限公司

测试

分布式系统架构:分布式缓存

不在线第一只蜗牛

架构 分布式

【YashanDB知识库】锁冲突检查

YashanDB

数据库 yashandb

Beanshell 脚本开发实战:提升 JMeter 脚本效率与灵活性 霍格沃兹测试开发 霍格沃兹测试开发​

测吧(北京)科技有限公司

测试

JMeter 脚本开发与优化:解锁 Beanshell 在性能测试中的强大功能

测吧(北京)科技有限公司

测试

软件测试丨SDK 功能测试

测试人

软件测试

manim边做边学--交替变换

EquatorCoco

开发语言

Svelte 最新中文文档翻译(1)—— 概述与入门指南

冴羽

Vue 前端 Svelte 中文文档 SvelteKit

数电票:引领会计行业数字化革命的关键力量

用友智能财务

税务 会计

如何在 JMeter 中自定义 Jar 文件:加解密与扩展功能的实现

测吧(北京)科技有限公司

测试

JMeter 执行 JUnit 测试用例:集成与自动化的高效解决方案

测吧(北京)科技有限公司

测试

QQ设计团队分享:手Q语音消息改版背后的功能设计思路

JackJiang

网络编程 即时通讯 IM

千万级的大表,如何做性能调优?

不在线第一只蜗牛

数据库 oracle

Java-Beanshell 语法与内置对象解析:如何利用 vars、ctx、prev 优化脚本

测吧(北京)科技有限公司

测试

ITIL认证工具商-ManageEngine Servicedesk Plus

ServiceDesk_Plus

ITIL IT服务管理 ITIL认证 ITIL工具

Svelte 最新中文文档翻译(2)—— .svelte、.svelte.js 和 .svelte.ts 文件

冴羽

Vue 前端 React Svelte SvelteKit

【YashanDB知识库】手工迁移Doris数据到崖山分布式

YashanDB

数据库 yashandb

HashiCorp策略即代码框架Sentinel新增多项开发体验改进_架构_Matt Campbell_InfoQ精选文章