首页 > 其他分享 >OPA基础

OPA基础

时间:2022-09-28 15:23:59浏览次数:51  
标签:策略 基础 决策 应用程序 OPA Policy Data

Open Policy Agent

  • Open Policy Agent(简称OPA)是一款go语言编写的开源通用策略引擎,它通过高级声明式语言rego编写策略代码为应用程序实现细粒度的访问控制机制,可用于为微服务、Kubernetes、CI/CD pipeline和API Gateway等应用场景实施策略机制;
  • OPA可以同微服务一起部署为独立运行的服务,例如以sidecar形式运行;

    • 通常,出于保护应用程序的目的,发往微服务的每个请求都需要获得授权后才能进行处理

    • 而为了检查授权,微服务则需要对OPA服务发出API调用,以确定收到的请求是否被授权;但策略的执行需要由应用程序完成,例如某HTTP请求被策略拒绝时,应用程序需要响应以“HTTP 403 Forbidden”;

OPA决策机制

  • 在OPA中,决策过程依赖于三个输入
    • Query:查询输入,它会触发决策过程;

      • 查询数据指定了OPA应该决策的事情,它必须格式化为JSON格式;

      • 例如,对于“是否允许用户Alice调用“GET /resrources”这个问题,查询输入包含了Alice、GET和/resources三个参数;
    • Data:OPA进行决策时需要参考的适配于特定环境的事实定义;

      • 例如,需要决策将Pod调度至哪个Kubernetes集群节点,数据应该是可用节点及相应容量的列表;
      • Data同样必须以JSON格式提供,且可能会随时间而变化,OPA会将其最新状态缓存在内存中;
    • Policy:指定了决策计算逻辑,对于给定的Data和Query,该计算逻辑会产生策略决定,即查询结果;但OPA只是策略引擎,策略需要由用户自己定义;
  • 策略引擎负责解释Policy中包含的规则,并基于Data和Query做出策略决策,并将决策结果格式化为JSON格式进行输出;

Envoy ext_authz OPA配置示例

参考文档

https://www.openpolicyagent.org/docs/latest/

标签:策略,基础,决策,应用程序,OPA,Policy,Data
From: https://www.cnblogs.com/wangguishe/p/16738072.html

相关文章

  • Java入门基础知识
    概念关键字:具有特殊用途的单词。保留字:未使用的关键字(gotoconst)。直接量:不可用作标识符(turefalsenull)。一、JAVA运行机制Java程序的运行必须经过编写、编译、运......
  • 线程基础知识18 线程池
    1什么是线程池线程池其实就是一种多线程处理形式,把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销。2为什么使......
  • Java基础知识练习
    Java基础知识练习1、if语句实现减肥计划:packagecom.itheima;/*使用if语句实现星期计划*///导包importjava.util.Scanner;publicclassTest01{publics......
  • Java面向对象基础
    Java面向对象基础一、类和对象1、什么是对象:万物皆对象,客观存在的事物皆可为对象2、面向对象:关注事物的信息,对事物的属性和行为有一定了解3、什么是类:对生活......
  • 分布式系统涉及理论基础
    拜占庭将军问题拜占庭将军需要有10只军队但是分散各地,敌国可以同时抵御5只军队同时进攻,因此将军必须找出办法通过通讯兵远程发布指令,让其他将军知道何时进攻,但是10个支军......
  • linux基础命令grep显示前后
    通过grep查找字段后,方便查看前后文本grep-C8'中央仓库在中国的镜像'settings.xml显示指定行的上线8行[root@znjc-ds-zcfwservconf]#grep-C8'中央仓库在中国......
  • 1、python 基础知识-文件编号排序及指定后缀名文件删除
    问题描述:需要对一些文件进行删除和存在一对一的文件保存(1)自动删除指定文件后缀名文件:importsyscurrDir=sys.path[0]importosdefremoveFile(dir,postfix):ifos.pat......
  • 模板方法设计模式基础知识!
    模板方法设计模式该设计模式解决的问题是:具有固定算法(步骤)的应用。但这些算法步骤,又针对不同的用户(情况)具有不同的实现方式。在该设计模式中,具有两大类方法:模板方法,步......
  • Vue3中v-model的基础使用
    v-model绑定的不再是value,而是modelValue,接收的方法也不再是input,而是update:modelValue。使用方法如下:<ChildComponentv-model="title">它是下面这种写法的简写:<Ch......
  • 前端基础面试题
    1.前端如何进行性能优化?前端进行性能优化的方案很多,这里只列举部分。在实际应用中不要贪多,想着都用上,要对网站的主要用户群体进行针对性优化。降低请求量合并资源,......