首页 > 其他分享 >cerbos minio s3 存储试用

cerbos minio s3 存储试用

时间:2023-10-12 22:44:06浏览次数:41  
标签:3592 minio s3 env cerbos policies

cerbos 支持blob 存储,以下是关于minio s3 的集成试用

环境准备

  • docker-compose
version: "3"
services:
    minio:
       image: minio/minio
       ports:
         - "9000:9000"
         - "9001:9001"
       command: server /data --console-address ":9001"
       environment:
         MINIO_ACCESS_KEY: minio
         MINIO_SECRET_KEY: minio123
    cerbos:
       image:  ghcr.io/cerbos/cerbos:latest
       volumes:
         - ./policies:/policies
         - ./config:/config
       env_file:
       - ./.env
       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
       env_file:
       - ./.env
       ports:
         - "3594:3592"
         - "3595:3593"
  • 配置
    conf.yaml
 
---
server:
  httpListenAddr: ":3592"
  grpcListenAddr: ":3593"
 
# storage:
#   driver: "disk"
#   disk:
#     directory: /policies
#     watchForChanges: true
 
storage:
  driver: "blob"
  blob:
    # aws golang sdk minio 参考配置
    bucket: "s3://demoapp-cerbos/policies?endpoint=minio:9000&disableSSL=true&s3ForcePathStyle=true&region=us-east-1"
    prefix: policies
    workDir: ${HOME}/tmp/cerbos/work
    updatePollInterval: 15s
    downloadTimeout: 30s
    requestTimeout: 10s

环境变量.env
主要是s3 需要的

 
AWS_ACCESS_KEY_ID=minio
AWS_SECRET_ACCESS_KEY=minio123
  • s3策略
    直接创建对应的demoapp-cerbos bucket 并创建一个policies 的path,内容如下
 
---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
  version: default
  resource: contact
  rules:
  - actions: ["*"]
    effect: EFFECT_ALLOW
    roles:
      - admin    
  - actions: ["read", "create"]
    effect: EFFECT_ALLOW
    roles:
      - user
    condition:
      match:
          expr: request.principal.attr.department == "Sales"
 
  - actions: ["update", "delete"]
    effect: EFFECT_ALLOW
    roles:
      - user
    condition:
      match:
          expr: request.resource.attr.ownerId == request.principal.id
 

s3 效果

 

代码集成测试

还是以前的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: "delete",
    });
    console.log(result)
}
 
demo()
  • 效果

 

说明

cerbos 对于s3 的支持有几个配置参数(拉取时间),同时还会包含cache 所以使用的时候需要注意

参考资料

https://github.com/cerbos/cerbos-sdk-javascript
https://docs.cerbos.dev/cerbos/latest/configuration/storage

标签:3592,minio,s3,env,cerbos,policies
From: https://www.cnblogs.com/rongfengliang/p/17760798.html

相关文章

  • html5+css3
    一、HTML1、浏览器内核又可以分成两部分:渲染引擎(layoutengineer)和JS引擎(renderingengine)后来的JS的发展独立出来,常用5大浏览器分别是:IE(edge)、Chrome、Firefox、Safari、opera。浏览器内核有那些?分别被使用在那些浏览器?Trident(IE)国内很多双核浏览器其中一核就是trident......
  • cerbos 参考试用
    主要是基于本地存储策略,使用nodejs的客户端进行认证的试用环境准备docker-composeversion:"3"services:cerbos:image:ghcr.io/cerbos/cerbos:latestvolumes:-./policies:/policies-./config:/config......
  • cerbos 参考部署架构
    cerbos官方提供了几种部署模式,很值得学习参考,这样才能保证我们业务系统的可靠稳定参考部署模式集中式模式此模式结合负载均衡器,可以部署多cerbos示例,然后共享策略定义,应用通过lb提供的地址进行连接 sidecar模式比较适合容器运行的场景,每个业务pod会有一个独立运行......
  • cerbos 开源语言无关的授权解决方案
    cerbos实现了与casbin类似的功能,但是casbin需要自己基于adapter实现数据存储的处理,cerbos核心主要是配置策略,然后基于传递的数据进行check参考架构业务使用 说明策略定义上与casbin以及awsiam的一些玩法比较类似,但是cerbos提供了grpc以及restapi接口,实现了多......
  • mountpoint-s3 ga 并提供了安装包
    mountpoint-s3就在最近ga了,同时还提供了rpm以及deb包,可以方便安装使用安装直接下载对应的包,安装就可以了,比如下载rpm的然后yuminstall就可以了,但是因为默认没有systemd管理,需要自己配置参考使用环境配置version:"3"services:s3:image:......
  • Things3 工作流
    Things工作流Content有任何事情都记录下来,心中的任何想法都不要放过定时整理收件箱(需要保证整理完收件箱之后,任务都是可执行的)如果有事情2分钟就能解决,那么直接去做,属于小事情如果需要15-30分钟,则标记上标签如果需要1小时以上,就将任务设置成项目做一次任务分解,分解......
  • 搭建一个文件存储服务器minio,实现文件存储
    搭建一个文件存储服务器minio,实现文件存储Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能。你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的替代方案。安装官网:https://min.io/download根据官网内容进行安装即可。笔者采用wi......
  • S32Kxxx bootloader 之 LIN UDS bootloader
    了解更多关于bootloader的C语言实现,请加我Q扣:1273623966(验证信息请填bootloader),欢迎咨询或定制bootloader(在线升级程序)。LIN总线是汽车ECU使用比较多的一种总线,车灯,车门,汽车空调控制面板等等ECU都有在使用.而这些ECU离线升级时,就需要使用到LINbootloader,O......
  • aws awswrangler 集成minio 简单试用
    awsawswrangler现在已经改名为aws-sdk-pandas,但是对于python使用的时候安装已经是使用awswrangler名称以下是一个简单的集成minio的测试,核心是配置环境变量,这个也比较符合aws对于相关资源的集成玩法环境准备docker-compose文件 version:'3'services......
  • 宝塔安装minio
    docker安装minio先下载minio镜像dockerpullminio/minio镜像安装指令dockerrun-d\-p9000:9000\-p9090:9090\--nameminio1\-d--restart=always\-eMINIO_ACCESS_KEY=minio\-eMINIO_SECRET_KEY=minio@321\-v/data/docker/minio/data:/data\-v/data......