大型项目中基本都包含有复杂的访问控制策略,特别是在一些多租户场景中,例如Kubernetes中就支持RBAC,ABAC等多种授权类型。在Golang中目前比较热门的访问控制框架有Open Policy Agent与Casbin,本文主要分析其异同与选型策略。
Open Policy Agent
Open Policy Agent(简称OPA)是一个开源的策略引擎,托管于CNCF,通常用来做在微服务、API网关、Kubernetes、CI/CD等系统中做策略管理。
OPA将策略从代码中分离出来,按照官网的说法OPA实现了_策略即代码_,通过Rego声明式语言实现决策逻辑,当系统需要做出策略时,只需携带请求查询OPA即可,OPA会返回决策结果。