首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CNCF

    Rego Playground:新特性

    作者:Torin Sandall 去年这个时候,我们推出了Rego游乐场(Rego Playground)。游乐场提供了一个在线交互环境,用户可以在这里试验和共享OPA策略。

    1.3K10发布于 2020-04-01
  • 来自专栏伪架构师

    Rego 不好用?用 Pipy 实现 OPA

    •初探可编程网关 Pipy•可编程网关 Pipy 第二弹:编程实现 Metrics 及源码解读•可编程网关 Pipy 第三弹:事件模型设计 在使用OPA的时候,一直觉得Rego不是那么顺手,使用pipy restartPolicy: Alwaysstatus: {} kubectl apply -f pod-ok.yamlpod/web-server created 总结 OPA 哪哪都好,唯一缺点就是其引进的 Rego

    97340发布于 2021-08-12
  • 来自专栏CNCF

    Rego的第二个设计原则:接受分层数据

    这是关于Open Policy Agent(OPA)策略语言Rego背后的设计原则的博客系列的第二部分。前面我们描述了如何将Rego的语法设计为反映真实策略的结构。 Rego策略。一个或多个Rego策略。Rego是一种专门为跨任何域表达策略而构建的定制语言。 ? Rego必须应对深度嵌套的数组和对象 在Rego中,当你知道确切的路径时,在数组和对象中穿梭是很简单的。它使用与许多编程语言相同的语法:点表示法和括号表示法。 当然,Rego具有足够的灵活性,你可以根据需要分解路径。 Rego的设计是为了适应它周围的世界--而不是反过来。这导致与OPA集成的障碍很低,通常不需要特定于OPA的代码。 Rego对检查JSON值提供了一流的支持。

    3.2K20发布于 2020-03-27
  • 来自专栏MoeLove

    Open Policy Agent(OPA) 入门实践

    Rego OPA 中的策略是以 Rego 这种 DSL(Domain Specific Language) 来表示的。 Rego 允许我们使用规则(if-then)封装和重用逻辑,规则可以是完整的或者是部分的。 每个规则都是由头部和主体组成。在 Rego 中,如果规则主体对于某些变量赋值为真,那么我们说规则头为真。 img 图 4 ,Rego 完整规则示例 部分规则是生成一组值并将该组分配给变量的 if-then 语句。 img 图 5 ,Rego 部分规则示例 逻辑或是要在 Rego 中定义多个具有相同名称的规则。 r := rego.New( rego.Query(os.Args[2]), rego.Load([]string{os.Args[1]}, nil)) // Create a prepared

    3K21编辑于 2021-12-09
  • 来自专栏k8s技术圈

    云原生策略引擎 OPA 介绍

    Rego 语言的设计 Rego 语言为 OPA 项目提供一种领域无关的描述策略的声明式 DSL。 Rego 的主要设计源于 Datalog,但是与 Datalog 不同的是,Rego 扩展了对 JSON 的支持,在 Rego 语言中,输入输出都是标准的 JSON 数据。 当服务需要执行 Rego 代码时,只需要调用相关的 API 即可 REST API:如果服务不是用 Go 编写,为了拥有 Rego 运行环境,此时则必须使用 REST API。 ConstraintTemplate 的 rego 字段用 Rego 语言具体描述了 Policy,但并没有指定 Policy 中具体的参数。 Rego 语言与传统的编程语言有一定的差异,从语法的学习到能够熟练运用 Rego 写出符合 OPA 最佳实践的 Policy ,还是具备一定的学习曲线。

    4.1K10发布于 2020-12-01
  • 来自专栏LEo的网络日志

    09 Jan 2022 在docker上启用open policy agent

    定义一个策略 $ cat /etc/docker/policies/authz.rego package docker.authz default allow = false allow { input.Body.HostConfig.SecurityOpt[_] == "seccomp:unconfined" } 该策略会拒绝disable seccomp的容器运行,策略文件使用rego语言定义规则 docker plugin install openpolicyagent/opa-docker-authz-v2:0.4 opa-args="-policy-file /opa/policies/authz.rego openpolicyagent/opa-docker-authz-v2:0.4 这里需要注意的是,安装插件默认会mount宿主机的/etc/docker/目录到插件中的/opa目录,这就是为什么我们创建的策略文件authz.rego

    77220编辑于 2023-10-17
  • 来自专栏IT派

    用57行代码搞定花8000万美元采购车牌识别项目

    没关系,可以再来一次(因为真的不长): // Open form and submit enquire for `rego` function getInfo(rego) { horseman Gecko/20100101 Firefox/27.0') .open(url) .type('#registration-number-ctrl input[type=text]', rego .ctrl-holder.ctrl-readonly') .html() .then(function(body) { console.log(processInfo(body, rego return horseman.close(); }); } // Scrape the results for key info function processInfo(html, rego this).text().trim() === 'Registration status & expiry date:'; }).next().text().trim(); return { rego

    1.3K60发布于 2018-03-29
  • 来自专栏伪架构师

    OPA Gatekeeper 策略入门

    Template:其定义分为两部分:crd 和 targets,crd 的确是一个 CRD 定义,也就是说生成一个 Template CR 对象,会随之生成一个 CRD;targets 则是一组 rego spec: names: kind: ns-user targets: - target: admission.k8s.gatekeeper.sh rego prefix: type: string targets: - target: admission.k8s.gatekeeper.sh rego names: kind: resource-limit targets: - target: admission.k8s.gatekeeper.sh rego 另外也可以用 Rego Playground 进行在线调试,来编写稍微复杂一点的策略。 我还是喜欢 Kyverno..

    1.7K20发布于 2020-08-25
  • 来自专栏出海数据合规

    基于策略驱动的可插拔隐私计算框架 (PDPPC):智能调度系统

    当数据平面准备执行一个跨节点的MPC聚合操作时,它会向控制平面发送包含参与方ID、数据敏感级别、算法类型、网络拓扑等上下文信息的JSON对象声明式语言Rego:OPA使用Rego语言编写策略。 Rego是一种基于Datalog的查询语言,专门针对结构化数据(JSON/YAML)进行了优化。 通过加载不同的Rego策略包,系统可以瞬间从"GDPR模式"切换至"PIPL模式",或者在跨辖区场景下同时应用两者的交集(最严约束)。 PDPPC将ODRL与Rego结合:数据提供方发布ODRL格式的Offer(例如:"允许用于AI训练,但必须在TEE中运行,且结果必须在30天内删除")。数据消费方发送Request。 PDPPC的控制平面将双方的ODRL策略解析为Rego输入,进行自动化的策略撮合(PolicyReasoning)。

    17700编辑于 2026-01-25
  • 来自专栏CNCF

    为什么使用OPA而不是原生的Pod安全策略?

    Rego的策略代码 在本文中,我们假设你已经熟悉了OPA和Rego语言。我们还假设你有一个正在运行的Kubernetes集群,该集群部署了OPA和kube-mgmt容器。 我们的no-priv-pod.rego文件如下所示: package kubernetes.admission deny[msg] { c := input_containers[_] c.securityContext.privileged 在Rego中,你不需要定义循环—下划线字符将自动为你完成此操作。 第10-12行:我们再次为init容器定义函数。请注意,在Rego中,可以多次定义同一个函数。 这样做是为了克服Rego函数中不能返回多个输出的限制。当调用函数名时,将执行两个函数,并使用AND操作符组合输出。因此,在我们的例子中,在一个或多个位置中存在一个有特权的容器将违反策略。 要将我们的代码应用到ConfigMap中,我们运行以下命令: kubectl create configmap no-priv-pods --from-file=no-priv-pod.rego kube-mgmt

    1.6K20发布于 2020-09-04
  • 来自专栏张善友的专栏

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

    Dapr 的 中间件 Open Policy Agent 将Rego/OPA策略应用到传入的Dapr HTTP请求中。 OPA将策略从代码中分离出来,按照官网的说法OPA实现了策略即代码,通过Rego声明式语言实现决策逻辑,当系统需要做出策略时,只需携带请求查询OPA即可,OPA会返回决策结果。 OPA 和 Rego 是不分领域的,所以你可以在策略中描述几乎任何事件。比如: 哪些用户可以访问哪些资源。 哪些子网允许出口流量进入。 工作负载必须部署到哪个集群。 OPA 的策略可以用 Rego 编写,这是一种专门为 OPA 设计的语言。类似于 JavaScript,OPA 使其非常容易将规则转换为有效的 OPA 策略。 那么我们为什么需要OPA? dapr-opa-test, 这将导致 foo 服务在调用服务bar-service的方法,该方法被为bar-service配置的 OPA 策略阻止 首先需要实现策略,拒绝所有访问HTTP 请求,通过Rego

    89420编辑于 2022-10-04
  • 来自专栏k8s技术圈

    使用 Kube-mgmt 将 OPA 集成到 Kubernetes 集群中

    OPA 提供了一种高级声明式语言 Rego,简化了策略规则的定义,以减轻程序中策略的决策负担。在微服务、Kubernetes、CI/CD、API 网关等场景中均可以使用 OPA 来定义策略。 OPA 的策略是用一种叫做 Rego 的高级声明性语言来声明的,Rego 是专门为表达复杂的分层数据结构的策略而设计的。 在 Rego 中,可以定义具有多个相同名称的函数,只要它们都产生相同的输出,当调用多次定义的函数时,将调用该函数的所有实例 第25-33行:第一个 fqdn_matches 函数的定义。 在生产环境中,在将 Rego 代码应用到集群之前一定要进行全方位测试,比如可以添加单元测试,同时也可以使用 Rego Playground 来对代码进行验证。 policy=rego 由于我们开启了 --require-policy-label 参数,所以还需要带上对应的标签。

    1.7K30编辑于 2022-04-06
  • 来自专栏微言码道

    走马观花云原生技术(12):规则管理Open Policy Agent

    Policy Policy是策略,在OPA中,使用的是一个声明式语言Rego,通过Rego来定义Policy 我们定义如下的Policy: • 任意一个服务,如果开放了http协议,则认为不安全,禁止 使用Rego来编写这个Policy package example import future.keywords.every # 如果violation的结果是0,则allow为true allow 语言来定义,意味着如果你想写好OPA,学习Rego是必不可少的 使用OPA来执行与运行这个Policy与Input . /opa eval -i input.json -d example.rego 得到的结果是 { "violation": [ "web" ] } 这是OPA运行后得出的结果 结论 OPA的应用可能并不普通,大多数情况下,可能并不会在自己的架构上再加一层OPA,这增加了复杂度,而且需要学习一个Rego的声明式语法,也需要付出成本。

    1.3K20编辑于 2022-11-18
  • 来自专栏k8s技术圈

    使用 Gatekeeper 进行 OPA 策略管理

    这允许为 Rego 策略创建策略模板,将策略创建为 CRD,并在策略 CRD 上存储审计结果,这个项目是谷歌、微软、红帽和 Styra 一起合作实现的。 -03-27T06:47:25Z Gatekeeper 使用 OPA 约束框架来描述和执行策略,在定义约束之前必须首先定义一个 ConstraintTemplate 对象,它描述了强制执行约束的 Rego description: A label string targets: - target: admission.k8s.gatekeeper.sh rego type: string description: A label string 然后下面的 targets 部分就是定义的约束目标,使用 Rego 每个模板库下面都包含一个 template.yaml 文件用来描述约束模板,samples 目录下面就包含具体的约束对象和示例资源清单,这些策略也是我们去学习 Rego 语言的很好的案例。

    96830编辑于 2022-04-06
  • 来自专栏ThoughtWorks

    Policy as Code之OPA实现

    OPA 策略 OPA 中的策略是以 Rego 这种DSL(Domain Specific Language)来表示的。每个规则都是由头部和主体组成。 在 Rego 中,如果规则主体对于某些变量赋值为真,那么我们说规则头为真。可以通过绝对路径引用任何加载到 OPA 中的规则来查询它的值。 下面的案例中有具体代码,可在后面的章节详细了解rego编写。 OPA 原理 OPA 将策略执行与决策解耦。当软件需要做出决策时,它向OPA 查询并提供结构化数据(例如JSON)作为输入。 文件名: input.json 测试代码 文件名: policy_test.rego 使用命令行验证policy逻辑 如下命令使用input.json文件来验证是否能满足policy.rego Rego是基于查询进行断言的语言,基于规则查询结果,给出true或false的查询语言。

    1.1K10编辑于 2023-08-08
  • 来自专栏CNCF

    政策驱动的持续集成?

    该组织使用用OPA的政策语言Rego编写的政策执行CI政策。CI的供应者是GitHub Actions,示例可以很容易地移植到其他CI的供应者。 pkg] } # Returns true only if there are no violations allow { count(violations) == 0 } 这是存储库中的ci.rego 政策文件 Rego政策管理package.json的依赖 此政策接受每个项目的package.json文件作为输入,并将政策应用于该文件(请注意input.dependencies)。 这通常是Rego政策的良好实践。 violations[pkg]块创建一个黑名单违例包列表,当发生违例时,该列表会返回到评估输出中,从而使开发者更容易知道为什么评估失败。 opa eval \ --fail-defined 'data.ci.violations[pkg]' \ --input package.json \ --data ci.rego

    1.1K20发布于 2019-12-04
  • 来自专栏charlieroro

    open policy agent 语法总结

    Rego中可以使用名为data的全局变量访问这两种数据。 异步加载的基本文档可以通过data全局变量进行访问。 } shell_accessible[server.id] { server := input.servers[_] server.protocols[_] == "ssh" } rego 语法 标量 rego支持字符串、数字、布尔和null greeting := "Hello" max_height := 42 pi := 3.14159 allowed := | ["smoke","dev"] | "west" | +-----------------+--------+ 这与python中的推导式类似 # Python equivalent of Rego 函数 Rego支持自定义函数,这些函数可以与内置函数一样调用。

    2.6K10编辑于 2022-05-09
  • 来自专栏机器之心

    教程 | 如何通过57行代码复制价值8600万澳元的车牌识别项目

    以下是这一方法的概念验证代码: // Open form and submit enquire for `rego` function getInfo(rego) { horseman /20100101 Firefox/27.0') .open(url) .type('#registration-number-ctrl input[type=text]', rego ctrl-holder.ctrl-readonly') .html() .then(function(body) { console.log(processInfo(body, rego return horseman.close(); }); } // Scrape the results for key info function processInfo(html, rego trim() === 'Registration status & expiry date:'; }).next().text().trim(); return { rego

    1.4K60发布于 2018-05-08
  • 来自专栏出海数据合规

    基于策略驱动的可插拔隐私计算框架(PDPPC):跨平台互联互通标准

    OPA的声明式语言Rego专门处理复杂层级数据结构决策,适合表达法律条文的条件逻辑。任何对数据平面的调用请求首先被控制平面的**策略执行点(PEP)**拦截。 OPA根据预加载的Rego策略库评估,返回Allow(允许)、Deny(拒绝)或Obligation(附加义务)。 策略支持热加载——当PIPL发布新司法解释时,合规团队仅需更新Rego脚本,无需重启底层MPC计算节点,真正实现"法律法规的可插拔"。 在PDPPC中,这段法律逻辑转化为Rego代码结构,通过布尔逻辑判断请求是否满足跨境传输条件、安全评估标准和敏感数据同意要求。 数据拥有者发布ODRLOffer声明使用规则,仅当数据使用者请求符合描述时握手成功,随后转化为Rego规则执行。

    20010编辑于 2026-01-26
  • 来自专栏新智元

    【57行代码搞定8600万美元项目】用开源工具DIY车牌识别系统

    没关系,可以再来一次(因为真的不长): // Open form and submit enquire for `rego` function getInfo(rego) { horseman Gecko/20100101 Firefox/27.0') .open(url) .type('#registration-number-ctrl input[type=text]', rego .ctrl-holder.ctrl-readonly') .html() .then(function(body) { console.log(processInfo(body, rego return horseman.close(); }); } // Scrape the results for key info function processInfo(html, rego this).text().trim() === 'Registration status & expiry date:'; }).next().text().trim(); return { rego

    1.1K100发布于 2018-03-22
领券