OPA Gatekeeper对Kubernetes资源操作限制

news2024/11/15 6:58:29

OPA介绍

Open Policy Agent(OPA,发音为“oh-pa”)是一个开源的通用策略引擎,它统一了堆栈中的策略执行。OPA 提供了一种高级声明性语言,可让您将策略指定为代码和简单的 API,以从您的软件中卸载策略决策制定。您可以使用 OPA 在微服务、Kubernetes、CI/CD 管道、API 网关等中实施策略。

官网地址: Open Policy Agent | Documentation

GateKeeper安装方式

Installation | Gatekeeper

OPA Gatekeeper 是 Open Policy Agent 的子项目,专门用于将 OPA 实现到 Kubernetes 集群中。 Gatekeeper 是一个验证和变异的 webhook,它强制执行由 Open Policy Agent 执行的基于 CRD 的策略,Open Policy Agent 是 CNCF 作为毕业项目托管的云原生环境的策略引擎。

环境准备

  1. kubernetes 集群
  2. kubectl工具
  3. 安装好gatekeeper
  4. rego语言的基础编程语法
  5. 编写ConstraintTemplate yaml在脚步本编写逻辑

资源对象限制

在Kubernetes集群中限制一些的账号可以操作部分资源对象,以下是控制ingress的update的例子

  • 编写ConstraintTemplate 用来限制部分用户可以操作资源对象
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: resourceoperation
  annotations:
    metadata.gatekeeper.sh/title: "resource operation"
    metadata.gatekeeper.sh/version: 1.0.0
    description: >-
      Allow the users can be operation resource
spec:
  crd:
    spec:
      names:
        kind: ResourceOperation
      validation:
        # Schema for the `parameters` field
        openAPIV3Schema:
          type: object
          properties:
            allows:
              description: allow user to operation resource object
              type: array
              items:
                properties: 
                  operations: 
                    type: array
                    desciption: resource operation array eg (CREATE,UPDATE....)
                    items:
                      type: string
                  users: 
                    type: array
                    desciption: user array eg (admin)
                    items:
                      type: string  
                type: object
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package resourceoperation

        import future.keywords.every
        
        name = input.review.object.metadata.name
        kind = input.review.kind.kind
        operation = input.review.operation
        user_info = input.review.userInfo
        username = user_info.extra.username[0]

        violation[{"msg": msg}] {
          not exists(input.review.parameters.allows,operation,username)
          msg := sprintf("The resource not allowed %s for %v:%v ,user : %s",[operation, kind, name,username])
        }

        exists(allows,operation,username){
          every obj in allows {
            operation in obj.operations
            username in obj.users
          }
        }

        

      

input.review.operation: 获取当前接口操作的类型 (CREATE,UPDATE,DELETE)

input.review.userInfo: 获取当前操作的用户

如果当前的操作类型和用户不在配置的清单中就提示错误信息

将资源对象apply到集群当中

kubectl apply -f <resourceoperation>.yaml 

  • 编写ResourceOperation 来配置用户和操作,允许admin账号可以修改ingress资源对象
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ResourceOperation
metadata:
  name: ingress-update-allow
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Ingress"]
  parameters:
    allows:
    - operations: ["UPDATE"]
      users: ["admin"]     

kubectl apply -f <ingress-update-allow>.yaml 到集群中

测试验证

  1. 使用admin账号编辑ingress资源对象
  2. 使用其它账号编辑ingress资源对象

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

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

相关文章

第七十六天学习记录:计算机硬件技术基础:Intel系列微处理器

Intel系列微处理器概述 8086/8088微处理器 8086/8088微处理器是英特尔公司于1978年推出的16位处理器&#xff0c;在80年代是个非常流行的芯片&#xff0c;被广泛用于个人电脑和工作站。它是x86家族处理器的一员&#xff0c;被视为现代PC体系结构的基础。 8086/8088微处理器的…

对耳朵伤害最小的耳机类型,列举几款不入耳的骨传导耳机

骨传导耳机是最近几年火爆起来的耳机&#xff0c;它是将声音转化为不同频率的机械振动&#xff0c;通过人的颅骨、骨迷路、内耳淋巴液、螺旋器、听神经、听觉中枢来传递声波。与普通耳机相比最大的区别是声音不经过外耳道&#xff0c;避免了耳道长时间堵塞导致的中耳炎疾病发生…

基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境安装pytesseract注册百度云账号 模块实现1. 数据模块2. 模型构建3. 附加功能 系统测试1. 文字邮件测试准确率2. 网页测试结果 工程源代码下载其它资料下载 前言 本项目采用朴素贝叶斯和支持向量机&#xff08;S…

石化园区宽带自组网应急通信方案

痛点需求 传统的通信手段在可靠性、即时性、安全性、可视化等方面的能力相对较弱&#xff0c;无法从根本上满足石化园区的应急通信需求。结合某大型石化园区实际需求&#xff0c;现亟需建设一套高可靠、高安全、广覆盖、机动灵活且支持多媒体通信的应急通信系统&#xff0c;以…

阿里云建站主机之虚拟主机、轻量或云服务器ECS

阿里云搭建网站主机可以选择云服务器ECS、云虚拟主机或轻量应用服务器&#xff0c;轻量应用服务器2核2G3M带宽一年108元&#xff0c;2核4G4M带宽轻量服务器一年297.98元12个月&#xff0c;云服务器ECS可以选择通用算力型u1&#xff0c;云虚拟主机共享型119元一年起&#xff0c;…

大数据Doris(四十三):kafka 简单json格式数据导入到Doris

文章目录 kafka 简单json格式数据导入到Doris 一、创建 Doris 表 二、创建 Kafka topic 三、创建 Ro

AI实战营:生成模型+底层视觉+AIGC多模态 算法库MMagic

目录 环境安装 黑白照片上色 文生图-Stable Diffusion 文生图-Dreambooth 图生图-ControlNet-Canny 图生图-ControlNet-Pose 图生图-ControlNet Animation 训练自己的ControlNet 环境安装 mim install mmagicpip install opencv-python pillow matplotlib seaborn tqdm …

阿里二面:使用 Nacos 做注册中心怎么做优雅发布?

大家好&#xff0c;我是君哥。 今天来聊一聊使用 Nacos 做注册中心怎么做优雅发布。 跟其他的注册中心一样&#xff0c;Nacos 作为注册中心的使用如下图&#xff1a; Service Provider 启动后注册到 Nacos Server&#xff0c;Service Consumer 则从 Nacos Server 拉取服务列表…

Unsafe类的使用

目录 一、Unsafe是什么&#xff1f;二、Unsafe对象的获取三、CAS1、相关方法2、demo 四、数组操作五、内存分配六、线程调度 参考于&#xff1a;https://blog.csdn.net/Wisimer/article/details/115220750 一、Unsafe是什么&#xff1f; Unsafe是jdk提供的一个直接访问操作系…

k8s 集群部署尝试

K8S 部署方式有很多&#xff0c;有的方式不太友好&#xff0c;需要注意很多关键点&#xff0c;有的方式对小白比较友好&#xff0c;部署简单方便且高效 二进制源码包的部署方式 使用 二进制源码包的方式部署会比较麻烦&#xff0c;大概分为如下几步&#xff1a; 获取源码包部…

基于abaqus的Huang晶体塑性UMAT改VUMAT

黄永刚院士编写的单晶晶体塑性UMAT&#xff0c;主要用于在Abaqus有限元仿真中进行单晶及多晶晶体塑性变形的计算&#xff0c;是许多科研工作者学习晶体塑性模拟的教学资源。可以在其基础上对硬化模型进行修改&#xff0c;甚至引入损伤。 UMAT主要应用于隐式分析&#xff0c;而…

力扣动态规划专题(二)01背包 416. 分割等和子集 1049.最后一块石头的重量II 494. 目标和 474. 一和零 步骤及C++实现

文章目录 01背包二维dp数组一维dp数组 滚动数组 416. 分割等和子集1049.最后一块石头的重量II494. 目标和474. 一和零 01背包 完全背包的物品数量是无限的&#xff0c;01背包的物品数量只有一个。 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xf…

基于ArcGIS的nc(NETCDF)转tif格式

软件版本&#xff1a;ArcMap10.4.1 nc(NETCDF)是一组独立于机器的软件库支持创建、访问和共享面向阵列的数据格式科学数据&#xff0c;它也是共享科学数据的社区标准。&#xff08;摘自Unidata官网&#xff09;&#xff0c;被广泛应用于大气、海洋、水文等领域&#xff0c;是我…

stm32读取BH1750光照传感器

stm32读取BH1750光照传感器 一.序言二.BH1750指令三.IIC协议四.代码实例4.1 bh1750.c源文件4.2 bh1750.h头文件 一.序言 BH1750是用IIC协议进行数据传输的。有SCL,SDA&#xff0c;VCC,GND四根线。下图是原理图 二.BH1750指令 我们先看芯片手册的操作指令&#xff08;下图&a…

直播 RTM 推流在抖音的应用与优化

动手点关注 干货不迷路 背景 随着互联网技术以及网络基建的快速发展和普及&#xff0c;视频直播已经成为了一种越来越普遍的娱乐和社交方式。无论是个人还是企业&#xff0c;都可以通过视频直播平台进行直播活动&#xff0c;向观众展示自己的生活、工作或者产品。同时&#xff…

有什么办法恢复格式后的u盘数据?5个方法,赶紧收藏起来

随着科技的不断进步&#xff0c;U盘已经成为了我们重要的移动存储设备之一&#xff0c;但是在使用过程中&#xff0c;很多人都可能会不小心将U盘格式化导致数据丢失。那么有什么办法恢复格式后的U盘数据&#xff1f;本文将会为您介绍恢复U盘格式化后数据的5种方法&#xff0c;如…

MT6761/MT6762/MT6765核心板模块 demo串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发&#xff0c;USB 串口适配器&#xff08; USB 转串口 TTL 适配器的简称&#xff09;对于检查系统启动日志非常有用&#xff0c;特别是在没有图形桌面显示的情况下。 1. 选购适配器 常用的许多 USB 转串口的适配器&#x…

SpringCloud:分布式事务Seata实践优化

1.极致性能优化 1.1. 同库模式 通常&#xff0c;一个TM会产生一笔主事务日志&#xff0c;一个RM会产生一条分支事务日志&#xff0c;每个分布式事务由一个TM和若干 RM组成&#xff0c;一个分布式事务总共会有1N条事务日志&#xff08;N为RM个数&#xff09;。 在默认情况下&…

万物的算法日记|第五天

笔者自述&#xff1a; 一直有一个声音也一直能听到身边的大佬经常说&#xff0c;要把算法学习搞好&#xff0c;一定要重视平时的算法学习&#xff0c;虽然每天也在学算法&#xff0c;但是感觉自己一直在假装努力表面功夫骗了自己&#xff0c;没有规划好自己的算法学习和总结&am…

CTFshow-pwn入门-前置基础pwn5 - pwn12

pwn5-pwn12的题目全是关于汇编语言的知识&#xff0c;pwn5-pwn12的汇编文件的代码都是一样的。 我们将可执行文件和汇编文件托到ctfshow-pwn专用虚拟机里&#xff0c;给可执行文件加上执行权限并查看其信息。 32位的&#xff0c;直接扔到ida中去。 在虚拟机中使用cat命令读取下…