×

Cerbos云原生应用访问控制引擎

消耗积分:2 | 格式:zip | 大小:1.43 MB | 2022-05-13

李秀珍

分享资料个

授权协议 Apache 2.0
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包

软件简介

Cerbos 是一款云原生应用的访问控制工具,通过为应用程序资源编写上下文感知访问控制策略来增强授权控制。

  • 使用直观的 YAML 配置语言编写访问规则
  • 使用 Git-ops 基础架构来测试和部署
  • 向 Cerbos PDP 发出简单的 API 请求,以评估策略并做出动态访问决策pYYBAGJp832AWaFaAAJizz8eYow825.png

用例:

派生角色:根据上下文数据为用户动态分配新角色。

---
apiVersion: "api.cerbos.dev/v1"
derivedRoles:
  name: common_roles
  definitions:
    - name: owner
      parentRoles: ["user"]
      condition:
        match:
          expr: request.resource.attr.owner == request.principal.id

    - name: abuse_moderator
      parentRoles: ["moderator"]
      condition:
        match:
          expr: request.resource.attr.flagged == true

 资源策略:为资源编写访问规则。

---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
  importDerivedRoles:
    - common_roles
  resource: "album:object"
  version: "default"
  rules:
    - actions: ['*']
      effect: EFFECT_ALLOW
      derivedRoles:
        - owner

    - actions: ['view', 'flag']
      effect: EFFECT_ALLOW
      roles:
        - user
      condition:
        match:
          expr: request.resource.attr.public == true

    - actions: ['view', 'delete']
      effect: EFFECT_ALLOW
      derivedRoles:
        - abuse_moderator

API 请求

cat <<EOF | curl --silent "http://localhost:3592/api/check?pretty" -d @-
{
  "requestId":  "test01",
  "actions":  ["view"],
  "resource":  {
    "kind":  "album:object",
    "instances": {
      "XX125": {
        "attr":  {
          "owner":  "alicia",
          "id":  "XX125",
          "public": false,
          "flagged": false
        }
      }
    }
  },
  "principal":  {
    "id":  "alicia",
    "roles":  ["user"]
  }
}
EOF

API 响应

{
  "requestId": "test01",
  "resourceInstances": {
    "XX125": {
      "actions": {
        "view": "EFFECT_ALLOW"
      }
    }
  }
}
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !