一、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"

基础知识

  1. [运行opa]({{< ref “technology/app/opa-run” >}})
  2. [Rego基础]({{< ref “technology/app/rego” >}})

二、opa 整合

官方文档: https://www.openpolicyagent.org/docs/latest/integration/

opa分为两个部分:

  • Evaluation: 用于询问政策决定的OPA接口。集成OPA主要集中在将应用程序、服务或工具与OPA的策略评估接口集成上。这种集成将导致策略决策与应用程序、服务或工具分离。
  • Management: 用于部署策略、了解状态、上传日志等。这种集成在所有OPA实例中通常是相同的,不管评估接口与什么软件集成。

怎么将opa整合到项目中?

有三种方式可以将opa整合到我们的项目中:

  1. 使用REST API通过HTTP以JSON的形式返回决策。
  2. 使用Go API以简单的Go类型(bool, string, map[string]接口{}等)返回决策。
  3. 使用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"

操作:

  1. 使用rego包构造一个准备好的查询。
  2. 执行准备好的查询以产生策略决策。
  3. 解释和执行政策决策。

rego可以看做一个运行在golang上的查询语言,golangrego语言的编译器和执行器。

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相关推荐

  1. Open Policy Agent(OPA) 【1】介绍

    Open Policy Agent(OPA) tags: OPA,策略 文章目录 Open Policy Agent(OPA) 1. OPA 介绍 2. OPA 解决了哪些问题 3. rego介绍 4 ...

  2. Open Policy Agent: Top 5 Kubernetes 准入控制策略

    如何使用 Open Policy Agent 实现准入策略控制,可以参考这里 本文翻译自 Open Policy Agent: The Top 5 Kubernetes Admission Contr ...

  3. Open Policy Agent(OPA) rego使用

    下载opa 文档地址https://www.openpolicyagent.org/docs/latest/#1-download-opa curl -L -o opa https://openpol ...

  4. TiKV 成功晋级 CNCF 孵化项目

    今天,CNCF(Cloud Native Computing Foundation,云原生计算基金会)技术监督委员会(TOC)宣布已经投票决议通过,正式将 TiKV 从沙箱项目晋级至孵化项目. TiK ...

  5. Kubernetes 必备工具:2021

    文档翻译自 Kubernetes Essential Tools: 2021[1],篇幅较长,做了部分增删. 介绍 在本文中,我将尝试总结我最喜欢的 Kubernetes[2] 工具,并特别强调最新的 ...

  6. 配置安全的windows2003服务器

    一.先关闭不需要的端口 只开了3389 21 80 1433 3306 修改3389端口: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHI ...

  7. 单点登录(SSO)—简介

    单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即 通过一个应用中的安全验证 ...

  8. 教程-Win7极速优化20项

    1. 加快Windows 7系统启动速度     启动-"msconfig"命令-系统配置-"引导"选项(英文系统是Boot)-点击"高级选项&quo ...

  9. android 8.0 l2tp问题,【Win】使用L2TP出現809錯誤

    我是用的是win7+360(不知道有沒有影響...)+L2TP(共享密鑰) 1.修改注冊表 新建一個文本文件,復制以下內容,保存后文件擴展名改為.reg,雙擊運行文件. Windows Registr ...

最新文章

  1. AI入侵机械设计,苦逼的“机械狗”还有未来吗?
  2. 打印 指定目录下和子目录下的的所有.java文件的路径. (使用FileFilter过滤器)
  3. lwip之数据收发流程_2
  4. nginx linux脚本,shell脚本之nginx自动化脚本
  5. 屏幕自动亮度不停的变_LCD最后的荣耀?卢伟冰:我们的屏幕比iPhone11更优秀
  6. 学文科的优势_男生学文科有优势吗?
  7. java ML回归预测_ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值...
  8. 关于C语言中继承和多态的实现
  9. Windows服务创建及安装
  10. 故事的小黄花,从CSDN那年就飘着
  11. 爬kuku漫画网站的小爬虫
  12. 苹果iPad手机如何无线投屏电脑使用教程
  13. 国二计算机百度云,2016Office二级全套视频教程 全国计算机二级考试Office考试视频教程...
  14. 【Linux初始化init系统】
  15. 解决MATLAB不能设置为.m .slx .mat等文件默认打开方式
  16. 【PHP】百度贴吧自动/云签到脚本(PC 端)
  17. 遥感数据存储格式 ----BSQ、 BIL、BIP及相互转换
  18. [渝粤教育] 山东职业学院 话说铁道 参考 资料
  19. smbcontrol - 向smbd或nmbd进程发送消息
  20. HTML 表单元素的基本样式

热门文章

  1. 使用Zadig从0到1搭建持续交付平台
  2. 单体架构、SOA和微服务
  3. 孤岛模式微电网逆变器VSG控制_SIMULINK_模型搭建详解
  4. 又因明星婚恋,微博瘫痪了
  5. js实现点击查看大图功能
  6. 获取android设备唯一ID和用途
  7. 网络通信时字节序转换原理与网络字节序、大端和小端模式 .
  8. message提示框的三种显示方式
  9. Python实现多个excel文件合并源码及打包exe程序
  10. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)