首页 > 其他分享 >cerbos 参考试用

cerbos 参考试用

时间:2023-10-12 21:13:17浏览次数:28  
标签:3592 参考 试用 policies cerbos com id user

主要是基于本地存储策略,使用nodejs 的客户端进行认证的试用

环境准备

  • docker-compose
version: "3"
services:
    cerbos:
       image:  ghcr.io/cerbos/cerbos:latest
       volumes:
         - ./policies:/policies
         - ./config:/config
       command: server --config=/config/conf.yaml
       ports:
         - "3592:3592"
         - "3593:3593"
    cerbos-compile:
       profiles:
         - compile
       image:  ghcr.io/cerbos/cerbos:latest
       volumes:
         - ./policies:/policies
       command: compile /policies
       ports:
         - "3594:3592"
         - "3595:3593"
  • 策略定义

策略说明:定义了一个contact 的资源,同时配置了几种角色的规则策略,同时部分角色的规则使用了条件进行检查

---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
  version: default
  resource: contact
  rules:
  # admin 支持所有角色
  - actions: ["*"]
    effect: EFFECT_ALLOW
    roles:
      - admin    
  #  销售部门用户可以进行读取以及创建
  - actions: ["read", "create"]
    effect: EFFECT_ALLOW
    roles:
      - user
    condition:
      match:
          expr: request.principal.attr.department == "Sales"
   # 用户角色对于更新以及删除,需要主体id 与属性的所有id一致
  - actions: ["update", "delete"]
    effect: EFFECT_ALLOW
    roles:
      - user
    condition:
      match:
          expr: request.resource.attr.ownerId == request.principal.id
  • nodejs 应用
const { HTTP } = require("@cerbos/http");
 
const cerbos = new HTTP("http://localhost:3592");
 
const demo = async function () {
    let result = await cerbos.isAllowed({
        principal: {
            id: "[email protected]",
            roles: ["user"],
            attr: { department: "Sales" },
        },
        resource: {
            kind: "contact",
            id:"333",
            attr: { ownerId: "[email protected]" },
        },
        action: "update",
    });
    console.log(result)
}
 
demo()
  • 效果

 

说明

以上是一个简单的测试,就是一个简单的测试,实际上会发现cerbos 使用还是特别方便的,类似的casbin 因为实现了太多的功能,反而弄的比较复杂,使用以及管理上不是特别方便,尤其是需要大规模使用. 亚马逊团推实际上也开源了一个cedar的安全策略引擎,也是不错的,毕竟aws 的iam 实现还是很牛的

参考资料

https://github.com/cerbos/cerbos-sdk-javascript
https://github.com/casbin/casbin
https://github.com/cedar-policy/cedar
https://docs.cedarpolicy.com/

标签:3592,参考,试用,policies,cerbos,com,id,user
From: https://www.cnblogs.com/rongfengliang/p/17760557.html

相关文章

  • cerbos 参考部署架构
    cerbos官方提供了几种部署模式,很值得学习参考,这样才能保证我们业务系统的可靠稳定参考部署模式集中式模式此模式结合负载均衡器,可以部署多cerbos示例,然后共享策略定义,应用通过lb提供的地址进行连接 sidecar模式比较适合容器运行的场景,每个业务pod会有一个独立运行......
  • 92基于java的医院管理系统设计与实现(配套lun文,可参考做毕业设计)
    本章节给大家带来一个基于java医院管理系统设计与实现,可适用于医院信息管理系统,医院挂号系统,医院医生排班系统,医院患者管理系统,医院医生预约系统,医院预约系统,医院药物信息系统等等;项目背景随着计算机科学的迅猛发展和互联网技术的不断推进,人们的生活方式发生了巨大的变化,同时......
  • cerbos 开源语言无关的授权解决方案
    cerbos实现了与casbin类似的功能,但是casbin需要自己基于adapter实现数据存储的处理,cerbos核心主要是配置策略,然后基于传递的数据进行check参考架构业务使用 说明策略定义上与casbin以及awsiam的一些玩法比较类似,但是cerbos提供了grpc以及restapi接口,实现了多......
  • nittest单元测试框架—加载测试用例的3种方法以及测试报告存储管理
     项目结构 测试用例importunittestclassLoginTestCase(unittest.TestCase):deftest_login_success(self):self.assertEqual({'code':200,'msg':'登录成功'},self.login('kobe','666'))deftest_......
  • 通过unittest加载测试用例的不同方法
    使用python+unitest做自动化测试执行时,执行用例时就涉及测试用例的加载。即如何把测试cases加载到测试suite,然后进行运行。一般把用例加载方法分为两大类:通过unittest.main(),或者通过testsuit。第一种方式使用比较简单,第二种比较灵活多样。 一、测试文件中有测试类,及main......
  • 87基于java的流浪动物领养系统设计与实现(配套lun文,PPT,可参考做毕业设计)
    本章节给大家带来一个基于java流浪动物领养系统设计与实现,可适用于流浪动物救助及领养管理系统,宠物教学、领养宠物、宠物认领、领养申请、动物认领信息,动物申请认领等等;项目背景科学技术日新月异的如今,计算机在生活各个领域都占有重要的作用,尤其在信息管理方面,在这样的大背景......
  • 项目实战-套餐管理 - 参考答案
    1.新增套餐1.1需求分析和设计产品原型:业务规则:套餐名称唯一套餐必须属于某个分类套餐必须包含菜品名称、分类、价格、图片为必填项添加菜品窗口需要根据分类类型来展示菜品新增的套餐默认为停售状态接口设计(共涉及到4个接口):根据类型查询分类(已完成)根据分类id查......
  • 软件测试技术之地图导航的测试用例
    外观测试屏幕显示不能有花屏、黑点和闪屏,清晰度、亮度、颜色要正常。检测所有按键都能起到相应作用,是否手感不良。UI显示状态、颜色、清晰度、效果。控制:放大,缩小,音量调节功能测试。交叉路口查询测试,点击交叉路口查询后能正确输入城市名称吗。关键字查询:点击关......
  • nodejs xxl-job-executor 客户端试用
    代码fork自awesomeoxc/xxl-job-executor-nodejs,进行了一些以来包的升级,同时发布npm包到npm仓库中,方便使用npm包名称npm包我已经发布npm仓库中了,可以直接使用@dalongrong/xxl-job-executor参考使用安装npminstall@dalongrong/xxl-job-executor--saveor......
  • JVM参数 参考
    JVM参数 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; ​ 非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用(但是,这些参数往往是非常有用......