Dapr 集成 Open Policy Agent 实现 接口的访问控制

大型项目中基本都包含有复杂的访问控制策略,特别是在一些多租户场景中,例如Kubernetes中就支持RBAC,ABAC等多种授权类型。Dapr 的 中间件 Open Policy Agent 将Rego/OPA策略应用到传入的Dapr HTTP请求中。

Open Policy Agent

Open Policy Agent(简称OPA)是一个开源的策略引擎,托管于CNCF,通常用来做在微服务、API网关、Kubernetes、CI/CD等系统中做策略管理。

OPA将策略从代码中分离出来,按照官网的说法OPA实现了策略即代码,通过Rego声明式语言实现决策逻辑,当系统需要做出策略时,只需携带请求查询OPA即可,OPA会返回决策结果。

e0407343d3a642bdb00c3263689df942.png

OPA 通过评估查询输入并对照策略和数据来生成决策。OPA 和 Rego 是不分领域的,所以你可以在策略中描述几乎任何事件。比如:

  • 哪些用户可以访问哪些资源。

  • 哪些子网允许出口流量进入。

  • 工作负载必须部署到哪个集群。

  • 哪些注册表可以下载二进制文件。

  • 容器可以用哪些操作系统的能力来执行。

  • 系统在一天中的哪些时间可以被访问。

  • 政策决定不限于简单的是/否或允许/拒绝的答案。像查询输入一样,你的策略可以生成任意的结构化数据作为输出。

OPA 的策略可以用 Rego 编写,这是一种专门为 OPA 设计的语言。类似于 JavaScript,OPA 使其非常容易将规则转换为有效的 OPA 策略。

那么我们为什么需要OPA?

大型软件中各个组件都需要进行一些策略控制,比如用户权限校验、创建资源校验、某个时间段允许访问,如果每个组件都需要实现一套策略控制,那么彼此之间会不统一,维护困难。一个自然的想法是能否将这些策略逻辑抽离出来,形成一个单独的服务,同时这个服务可能需要提供各种不同sdk来屏蔽语言差异。

OPA正是解决这个问题,将散落在系统各处的策略进行统一,所有服务直接请求OPA即可。通过引入OPA可以降低系统耦合性,减少维护复杂度。

Http API中使用OPA授权

我们在Dapr 实现的Http服务中 引入OPA来实现Http API授权。示例代码见:https://github.com/geffzhang/dapr-opa-test, 这将导致 foo 服务在调用服务bar-service的方法,该方法被为bar-service配置的 OPA 策略阻止

首先需要实现策略,拒绝所有访问HTTP 请求,通过Rego实现如下:

apiVersion: dapr.io/v1alpha1

kind: Component

metadata:

name: poc-opa

spec:

type: middleware.http.opa

version: v1

metadata:

    - name: rego

value: |

        package http

        default allow = false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【招聘(大连)】北森云计算 .NET 专场招聘

为了更好的实现战略布局,逐步形成以三个产品研发中心(北京、成都、大连)为主,青岛和南京为辅的产品研发团队配置。北森云第三研发中心(大连)正式成立,目前大连的人选招聘正式开启,欢…

C#多线程编程-必知必会

“发现问题的能力,运用技术解决问题的能力,是一个技术人成长的关键”图片故事:洋姜的花,拍摄于2022年7月23日,地点:北京奥林匹克森林公园 ,摄影师:刘先生概要:使用C#发起…

『中级篇』Dockerfile详解(17)

一般的&#xff0c;Dockerfile 分为四部分&#xff1a;基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 ####官网学习 https://docs.docker.com/engine/reference/builder/#usage ####FROM 必须为第一个命令&#xff0c;指定基础镜像 FROM <image> FROM &…

KestrelServer详解[1]:注册监听终结点(Endpoint)

具有跨平台能力的KestrelServer是最重要的服务器类型。针对KestrelServer的设置均体现在KestrelServerOptions配置选项上&#xff0c;注册的终结点是它承载的最重要的配置选项。这里所谓的终结点&#xff08;Endpoint&#xff09;与“路由”介绍的终结点不是一回事&#xff0c;…

快来加入阿里云大学【云学院】班级助理招募—机会稍纵即逝,错过遥遥无期!...

2019独角兽企业重金招聘Python工程师标准>>> 如果你对云计算、大数据、云安全、人工智能领域感兴趣~ 如果你想从事与此相关的工作~~ 如果你又喜欢边交流边学习的方式~ 那么&#xff0c;加入我们吧&#xff01; 我们将为你提供一个广阔的平台&#xff0c;让你接触到云…

深入理解ajax系列第五篇——进度事件

前面的话 一般地&#xff0c;使用readystatechange事件探测HTTP请求的完成。XHR2规范草案定义了进度事件Progress Events规范&#xff0c;XMLHttpRequest对象在请求的不同阶段触发不同类型的事件&#xff0c;所以它不再需要检査readyState属性。这个草案定义了与客户端服务器通…

对象(poco)深度克隆

提供深度克隆对象功能,基于编译表达式实现&#xff0c;性能与原生代码几无差别&#xff0c;远超 json/binary 序列化实现。1. 简单示例class Person {public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }public DateTime Birth { get; s…

Linux之ACL权限控制

ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置&#xff0c;可以针对单一用户或组来设置特定的权限 设置ACL权限&#xff1a;setfacl查看ACL权限&#xff1a;getfacl 比如&#xff1a;某一目录权限为 drwx------ 2 root root 40…

WIX、Squarespace、WordPress 三者的优劣分别是什么?

层出不穷的智能建站&#xff0c;模板建站&#xff0c;源码建站&#xff0c;云建站&#xff0c;仿站&#xff0c;各种建站概念都抛洒于红海之中。到底什么样的网站适合自己&#xff0c;什么样的网站值得我们去消费&#xff0c;什么样的网站能长久&#xff0c;是个非常值得思考的…

GitHub 使用

Git 是由 Linux 之父 Linus Tovalds 为了更好的管理 linux 内核开发而创立的分布是版本控制/软件管理配置软件. 简单来说, Git 管理你的 代码的历史记录 的工具. 首先注册账户 (已经完成, moveofgod) 然后, 下载一个 GitHub Desktop(mac), msisgit 客户端 (可以用命令行实现, …

LinkedHashMap 与 HashMap区别

2019独角兽企业重金招聘Python工程师标准>>> LinkedHashMap 与 HashMap区别 &#xff08;非原创&#xff09; HashMap,LinkedHashMap,TreeMap都属于Map Map 主要用于存储键(key)值(value)对&#xff0c;根据键得到值&#xff0c;因此键不允许键重复,但允许值重复。 …

C# 11 中的 file local type

C# 11 中的 file local typeIntro在之前的版本中&#xff0c;我们想要一个类型只在当前的类型中生效&#xff0c;通常我们会在一个类的内部声明一个 private 的类型以此来控制这个类型的访问权限&#xff0c;在 C# 11 中引入了一个 file local type&#xff0c;仅在声明类型的这…

PHP实现类似百度搜索自动完成(代码简单)

一、效果图: 二、HTML代码 <html lang"en"> <head><meta charset"utf-8"><title>jQuery UI 自动完成&#xff08;Autocomplete&#xff09; - 默认功能</title><link rel"stylesheet" href"/public/Auto…

CentOS 搭建Postfix+Dovecot简单邮件系统

2019独角兽企业重金招聘Python工程师标准>>> 服务器信息 系统&#xff1a;CentOS 6.5 minimal版本 主机&#xff1a;虚拟机 虚拟机IP&#xff1a;192.168.128.128/24 宿主IP:10.1.79.24/24 安装postfix 注意&#xff1a;CentOS 7实际上已经用postfixSasl2代替sendma…

php面试题2018

一 、PHP基础部分 1、PHP语言的一大优势是跨平台&#xff0c;什么是跨平台&#xff1f; PHP的运行环境最优搭配为ApacheMySQLPHP&#xff0c;此运行环境可以在不同操作系统&#xff08;例如windows、Linux等&#xff09;上配置&#xff0c;不受操作系统的限制&#xff0c;所以…

学生党的专属定制福利,你想要的这里全都有!

同学们&#xff1a;您好&#xff01;很⾼兴认识⼤家&#xff01;我是微软的 Regional Cloud Advocate Kinfey Lo&#xff0c;感谢您在课余时间打开这封信。踏⼊⾦秋&#xff0c;技术峰会进⼊了旺季&#xff0c;有⾯向商业的&#xff0c;有⾯向开发者的&#xff0c;有⾯向技术社…

Quartus prime16.0 与modelsim ae 联调

前言 quartus和modelsim联调对仿真还是很方便的&#xff0c;当然最好是quartus干综合到烧录的活&#xff0c;modelsim单独仿真。而且ae版的性能比se版差。 流程&#xff1a; 1.配置modelsim ae路径&#xff1a; 我这里是这个路径&#xff0c;根据你自己安装的地方配置路径。 2.…

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼&#xff0c;后来写了一篇博客&#xff08;《后台管理UI的选择》&#xff09;介绍了选择过程与常用后台UI&#xff0c;令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间&#xff0c;最后界面效果还是不佳&#xf…

分析拼多多的崛起【产品思维】

最近朋友圈讨论拼多多上市的新闻大火&#xff0c;各有各的看法&#xff0c;很有意思&#xff0c;突然想起前段时间得到上的《梁宁-产品思维30讲》&#xff0c;所以想从数据和产品角度分析分析拼多多的崛起。 一&#xff1a;拼多多的迅速崛起 我们先看看拼多多这几年的成长历程&…

KestrelServer详解[2]: 网络连接是如何创建的?

《KestrelServer详解[1]&#xff1a;注册监听终结点&#xff08;Endpoint&#xff09;》已经详细讲述了如何使用KestrelServer&#xff0c;现在我们来简单聊聊这种服务器的总体设计和实现原理。当KestrelServer启动的时候&#xff0c;注册的每个终结点将转换成对应的“连接监听…