OPA—云原生策略模型

简介

OPA,全称 Open Policy Agent(开放策略代理),官网是 openpolicyagent.org。OPA 主要为了解决云原生应用的访问控制、授权和策略。OPA 是通用的,与平台无关。请求和响应是以 JSON 格式发送的。

OPA将决策与策略执行解耦。当你的软件需要做出决策时,它查询 OPA 并提供结构化数据(例如,JSON)作为输入。OPA 通过评估查询输入并对照策略和数据来生成决策。

可能接触过k8s的,一般都知道OPA就是拿来做访问控制的,其实OPA不光是使用在访问授权等方面,它可以在策略中描述几乎任何事件。比如:

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

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

  • ......

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

权限

为了方便定义权限集合,一般需要引入 Role 的概念,一个 Role 对应一个权限集合,另外为了方便批量操作,会引入 Group 的概念把用户做一个集合。这个大体就是 Kubernetes RBAC(Role-based access control)的设计思路。

Kubernetes 中的 RBAC 由于其基于意图的 API,提供的控制比较少。从 API 的角度来看,只有十几个动作,这意味着如果 xx 可以更新一个资源,她就可以更新这个资源的任何部分。

简而言之,Kubernetes API 提供了一个强大的、可扩展的、统一的资源模型,但也正是这个资源模型使得 RBAC 对于很多用例来说过于粗粒度。RBAC 所能提供的控制是非常宝贵的,但比起其他系统,RBAC 还远不能满足 Kubernetes 的需要。

k8s创建了一个 Admission Control 机制,在这里你可以把控制的范围远远超过 RBAC 和标准的访问控制机制。Kubernetes API 服务器提供了一条访问控制的管道,分为 Authorization(如 RBAC),和 Admission。

授权(Authorization)发生在每次 API 调用上,而准许(Addmission)只发生在更新(创建、更新和删除)上。通过授权,你将获得以下信息以做出决定:

  • 用户:用户、组、认证提供的额外属性。

  • 动作:路径、API 动词、HTTP 动词。

  • 资源:资源、子资源、命名空间、API 组。

通过 Admission,你会得到一个 YAML 中的 AdmissionReview 对象。它包括所有关于资源被修改的信息,以做出任何你想要的决定

你可以通过编写、部署和维护实现准入控制 webhook 协议(一个简单的 HTTP/json API)的自定义代码,编写任何你喜欢的逻辑来保护你的 API。

也可以通过opa来实现admission controller

这里介绍一个组件:

Gatekeeper 是通用策略引擎 Open Policy Agent(OPA)的 Kubernetes 专用实现

相关推荐
思诺学长几秒前
微服务与分布式系统
微服务·云原生·架构
步步为营DotNet1 小时前
深挖.NET 11:.NET Aspire 在云原生应用韧性架构构建的探索与实践
云原生·架构·.net
今晚务必早点睡2 小时前
2026 最新互联网架构演进:从“云原生”走向“AI 原生”
人工智能·云原生·架构
蜀道山老天师2 小时前
Docker 进阶:数据持久化与容器网络互联(数据卷、挂载目录、端口映射、自定义网络)
运维·网络·docker·云原生·容器
ん贤2 小时前
KServe 部署教程(CPU版)
云原生·kserve
qq_白羊座3 小时前
K8s 在完整 CI/CD 流程里的作用
云原生·容器·kubernetes
编码如写诗3 小时前
瑞芯微RK3588+麒麟V10国防版+昇腾310异构部署k8s集群+KubeSphere
人工智能·ai·云原生·kubernetes
想你依然心痛3 小时前
工业物联网云原生时代:时序数据库全链路选型与 Apache IoTDB 实践
物联网·云原生·时序数据库·iotdb
密瓜智能3 小时前
MIG、Time-slicing 还是HAMi?密瓜智能CEO张潇本周六亮相JuiceFS Meetup,聊聊GPU共享的生产取舍
人工智能·云原生·kubernetes·开源·gpu算力·ai算力
用户15583199681418 小时前
文件同步冲突技术根因与解决方案:Last-Write-Wins、OT、CRDT对比
云原生