Open Policy Agent
一、opa
The Open Policy Agent (OPA, pronounced “oh-pa”) is an open source, general-purpose policy engine that unifies policy enforcement across the stack.
OPA(OpenPolicyAgent), 云原生时代的通用规则引擎,重新定义策略引擎,灵活而强大的声明式语言全面支持通用策略定义。
关键词:
- 轻量级的通用策略引擎
- 可与服务共存
- 集成方式可以是sidecar、主机级守护进程或库引入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQlZZiL1-1681869060450)(/images/app/policy.png)]
优点:
强大的声明式策略
- 上下文感知
- 表达性强
- 快速
- 可移植
输入和输出支持任意格式
配合强大的声明式策略语言Rego,描述任意规则都不是问题全面支持规则和系统解耦
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGuZU9Wo-1681869060451)(/images/app/OPA-why.png)]集承方式多
- Daemon式服务
- Go类库引入
应用广泛
除了继承做auth外,还可以应用到k8s,terraform,docker,kafka,sql,linux上做规则决策工具齐全
命令行,有交互式运行环境、支持测试,性能分析(底层实现Go)
下载:
On macOS (64-bit):
curl -L -o opa https://openpolicyagent.org/downloads/latest/opa_darwin_amd64
On Linux (64-bit):
curl -L -o opa https://openpolicyagent.org/downloads/latest/opa_linux_amd64
示例
快速开始
./opa eval -i quick-start/input.json -d quick-start/data.json -d quick-start/example.rego "data.example_rbac"
基础知识
- [运行opa]({{< ref “technology/app/opa-run” >}})
- [Rego基础]({{< ref “technology/app/rego” >}})
二、opa 整合
官方文档: https://www.openpolicyagent.org/docs/latest/integration/
opa分为两个部分:
- Evaluation: 用于询问政策决定的OPA接口。集成OPA主要集中在将应用程序、服务或工具与OPA的策略评估接口集成上。这种集成将导致策略决策与应用程序、服务或工具分离。
- Management: 用于部署策略、了解状态、上传日志等。这种集成在所有OPA实例中通常是相同的,不管评估接口与什么软件集成。
怎么将opa整合到项目中?
有三种方式可以将opa整合到我们的项目中:
- 使用
REST API
通过HTTP以JSON的形式返回决策。 - 使用
Go API
以简单的Go类型(bool, string, map[string]接口{}等)返回决策。 - 使用
WebAssembly
将Rego策略编译为WASM指令,这样它们就可以被任何WebAssembly运行时嵌入和评估。
第三种先不做讨论,目前用不到,目前可以使用的接入方法有两种: 1、REST API, 2、Go API,下面分别说明。
1、REST API
可以将OPA
部署为主机级守护进程或sidecar容器。
opa
项目提供了这样的API服务。api访问接口可以对数据进行增删改成
.
接口:
POST /v1/data/<path>
Content-Type: application/json
加参数:
{"input": <the input document>
}
返回结果:
200 OK
Content-Type: application/json
{"result": true
}
详细rest api参考: https://www.openpolicyagent.org/docs/latest/rest-api/
2、Go API
引入 rego库:
import "github.com/open-policy-agent/opa/rego"
操作:
- 使用rego包构造一个准备好的查询。
- 执行准备好的查询以产生策略决策。
- 解释和执行政策决策。
rego
可以看做一个运行在golang
上的查询语言,golang
是rego
语言的编译器和执行器。
REST API和 Go API的区别是什么?
Go API
是基础,REST API
这是在Go API
上封装了一层http的调用接口而已。
三、定制扩展OPA
Custom Built-in Functions in Go
定制rego函数, 针对Go API
Custom Plugins for OPA Runtime
定制运行时,针对REST API
Open Policy Agent相关推荐
- Open Policy Agent(OPA) 【1】介绍
Open Policy Agent(OPA) tags: OPA,策略 文章目录 Open Policy Agent(OPA) 1. OPA 介绍 2. OPA 解决了哪些问题 3. rego介绍 4 ...
- Open Policy Agent: Top 5 Kubernetes 准入控制策略
如何使用 Open Policy Agent 实现准入策略控制,可以参考这里 本文翻译自 Open Policy Agent: The Top 5 Kubernetes Admission Contr ...
- Open Policy Agent(OPA) rego使用
下载opa 文档地址https://www.openpolicyagent.org/docs/latest/#1-download-opa curl -L -o opa https://openpol ...
- TiKV 成功晋级 CNCF 孵化项目
今天,CNCF(Cloud Native Computing Foundation,云原生计算基金会)技术监督委员会(TOC)宣布已经投票决议通过,正式将 TiKV 从沙箱项目晋级至孵化项目. TiK ...
- Kubernetes 必备工具:2021
文档翻译自 Kubernetes Essential Tools: 2021[1],篇幅较长,做了部分增删. 介绍 在本文中,我将尝试总结我最喜欢的 Kubernetes[2] 工具,并特别强调最新的 ...
- 配置安全的windows2003服务器
一.先关闭不需要的端口 只开了3389 21 80 1433 3306 修改3389端口: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHI ...
- 单点登录(SSO)—简介
单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即 通过一个应用中的安全验证 ...
- 教程-Win7极速优化20项
1. 加快Windows 7系统启动速度 启动-"msconfig"命令-系统配置-"引导"选项(英文系统是Boot)-点击"高级选项&quo ...
- android 8.0 l2tp问题,【Win】使用L2TP出現809錯誤
我是用的是win7+360(不知道有沒有影響...)+L2TP(共享密鑰) 1.修改注冊表 新建一個文本文件,復制以下內容,保存后文件擴展名改為.reg,雙擊運行文件. Windows Registr ...
最新文章
- AI入侵机械设计,苦逼的“机械狗”还有未来吗?
- 打印 指定目录下和子目录下的的所有.java文件的路径. (使用FileFilter过滤器)
- lwip之数据收发流程_2
- nginx linux脚本,shell脚本之nginx自动化脚本
- 屏幕自动亮度不停的变_LCD最后的荣耀?卢伟冰:我们的屏幕比iPhone11更优秀
- 学文科的优势_男生学文科有优势吗?
- java ML回归预测_ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值...
- 关于C语言中继承和多态的实现
- Windows服务创建及安装
- 故事的小黄花,从CSDN那年就飘着
- 爬kuku漫画网站的小爬虫
- 苹果iPad手机如何无线投屏电脑使用教程
- 国二计算机百度云,2016Office二级全套视频教程 全国计算机二级考试Office考试视频教程...
- 【Linux初始化init系统】
- 解决MATLAB不能设置为.m .slx .mat等文件默认打开方式
- 【PHP】百度贴吧自动/云签到脚本(PC 端)
- 遥感数据存储格式 ----BSQ、 BIL、BIP及相互转换
- [渝粤教育] 山东职业学院 话说铁道 参考 资料
- smbcontrol - 向smbd或nmbd进程发送消息
- HTML 表单元素的基本样式