CoSec v1.10.1 发布,基于 RBAC 和策略的多租户响应式安全框架


CoSec

基于 RBAC 和策略的多租户响应式安全框架。

License GitHub release Maven Central Codacy Badge codecov Integration Test Status

更新内容(v1.10.1) 🎉 🎉 🎉

  • 特性:新增  ContainsConditionMatcher

  • {
    "name": "TestContains",
    "effect": "allow",
    "actions": [
    {
    "type": "all"
    }
    ],
    "condition": {
    "type": "contains",
    "part": "request.attributes.ipRegion",
    "pattern": "上海"
    }
    }

认证

Authentication-Flow

授权

Authorization-Flow

OAuth

OAuth-Flow

建模类图

Modeling

安全网关服务

Gateway

授权策略流程

Authorization Policy

内置策略匹配器

ActionMatcher

ActionMatcher

如何自定义 ActionMatcher (SPI)

参考 RegularActionMatcher

class CustomActionMatcherFactory : ActionMatcherFactory {
companion object {
const val TYPE = "[CustomActionType]"
}

override val type: String
get() = TYPE

override fun create(onfiguration: Configuration): ActionMatcher {
return CustomActionMatcher(onfiguration)
}
}
class CustomActionMatcher(configuration: Configuration) :
AbstractActionMatcher(CustomActionMatcherFactory.TYPE, configuration) {
override val type: String
get() = CustomActionMatcherFactory.TYPE

override fun internalMatch(request: Request, securityContext: SecurityContext): Boolean {
//Custom matching logic
}
}

META-INF/services/me.ahoo.cosec.policy.action.ActionMatcherFactory

# CustomActionMatcherFactory fully qualified name
 

ConditionMatcher

ConditionMatcher

如何自定义 ConditionMatcher (SPI)

参考 ContainsConditionMatcher

class CustomConditionMatcherFactory : ConditionMatcherFactory {
companion object {
const val TYPE = "[CustomConditionType]"
}

override val type: String
get() = TYPE

override fun create(configuration: Configuration): ConditionMatcher {
return CustomConditionMatcher(configuration)
}
}
class CustomConditionMatcher(configuration: Configuration) :
AbstractActionMatcher(CustomActionMatcherFactory.TYPE, configuration) {
override val type: String
get() = CustomConditionMatcherFactory.TYPE

override fun internalMatch(request: Request, securityContext: SecurityContext): Boolean {
//Custom matching logic
}
}

META-INF/services/me.ahoo.cosec.policy.condition.ConditionMatcherFactory

# CustomConditionMatcherFactory fully qualified name

策略 Schema

Policy Schema

策略 Demo

{
"id": "id",
"name": "name",
"category": "category",
"description": "description",
"type": "global",
"tenantId": "tenantId",
"statements": [
{
"name": "Anonymous",
"effect": "allow",
"actions": [
{
"type": "path",
"pattern": "/auth/register"
},
{
"type": "path",
"pattern": "/auth/login"
}
]
},
{
"name": "UserScope",
"effect": "allow",
"actions": [
{
"type": "path",
"pattern": "/user/#{principal.id}/*"
}
],
"condition": {
"type": "authenticated"
}
},
{
"name": "Developer",
"effect": "allow",
"actions": [
{
"type": "all"
}
],
"condition": {
"type": "in",
"part": "context.principal.id",
"in": [
"developerId"
]
}
},
{
"name": "RequestOriginDeny",
"effect": "deny",
"actions": [
{
"type": "all"
}
],
"condition": {
"type": "reg",
"negate": true,
"part": "request.origin",
"pattern": "^(http|https)://github.com"
}
},
{
"name": "IpBlacklist",
"effect": "deny",
"actions": [
{
"type": "all"
}
],
"condition": {
"type": "path",
"part": "request.remoteIp",
"path": {
"caseSensitive": false,
"separator": ".",
"decodeAndParseSegments": false
},
"pattern": "192.168.0.*"
}
},
{
"name": "RegionWhitelist",
"effect": "deny",
"actions": [
{
"type": "all"
}
],
"condition": {
"negate": true,
"type": "reg",
"part": "request.attributes.ipRegion",
"pattern": "^中国\\|0\\|(上海|广东省)\\|.*"
}
},
{
"name": "AllowDeveloperOrIpRange",
"effect": "allow",
"actions": [
{
"type": "all"
}
],
"condition": {
"type": "bool",
"bool": {
"and": [
{
"type": "authenticated"
}
],
"or": [
{
"type": "in",
"part": "context.principal.id",
"in": [
"developerId"
]
},
{
"type": "path",
"part": "request.remoteIp",
"path": {
"caseSensitive": false,
"separator": ".",
"decodeAndParseSegments": false
},
"pattern": "192.168.0.*"
}
]
}
}
}
]
}

感谢

CoSec 权限策略设计参考 AWS IAM 


相關推薦

2023-01-07

CoSec 基于 RBAC 和策略的多租户响应式安全框架。       更新内容(v1.9.0) 🎉 🎉 🎉 ⭐ 特性 特性:新增  RequestAttributesAppender API。 特性:新增  Ip2RegionRequestAttributesAppender,支持IP区域匹配器。

2023-01-09

CoSec 基于 RBAC 和策略的多租户响应式安全框架。       更新内容(v1.10.0) 🎉 🎉 🎉 ⭐ 更新内容 依赖:更新  io.opentelemetry:opentelemetry-bom 到 v1.22.0。 特性:新增  BoolConditionMatcher

2024-07-03

count migration)问题。 [优化] 增加基于 Github Action 的自动发布配置 [升级] minio docker 镜像版本升级至 RELEASE.2024-06-29T01-20-47Z 【依赖更新】 [升级] springdoc 版本升级至 2.6.0 [升级] aws-java-sdk-s3 版本升级至 1.12.754 [升级] softw

2024-07-17

enant-starter 2024年7月16日至今druid-multi-tenant-starter插件的已发布两年多。这个新工具的推出标志着一个高效、简便的SaaS多租户管理解决方案的诞生,为开发者提供了全新的便捷体验。 什么是druid-multi-tenant-starter? druid-multi-tenant-s

2024-11-01

L注入等一系列安全体系的多租户微服务解决方案。 [一] 发布背景 Dante Cloud 一直秉承着“简洁、高效、包容、务实”的理念,使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,不断地深耕细作、去粗取精、用心

2024-08-23

于 Postgresql 作为存储的自主封装 Nacos 镜像升级至 2.4.1 并发布至 Docker Hub 和 Quay IO 【其它更新】 [新增] 新增物联网相关页面初始化数据 [新增] 新增物模型 TSL 核心实体及 JSON 解析 [新增] 新增物模型数据接收并转换为 App

2024-07-22

信息可根据服务配置自动生成功能 【其它更新】 [发布] 基于 Postgresql 的、重新打包的 Nacos Server 2.4.0 已上传。 [新增] 新增社会化账号绑定接口定义。 [重构] 大幅调整 OSS 工程各模块定位、实现机制以及代码,重新定义

2024-08-27

用参数 支持 支持 通知公告 系统通知公告信息发布维护 支持 支持 操作日志 系统正常操作日志记录和查询 系统异常信息日志记录和查询 支持 支持 登录日志 系统登录日志记录查询包含登录异常 支

2023-08-19

新详情: 近期在基于 4.14.x 录制视频,新功能开发和版本发布速度会延后,4.14.x 系列主要以优化功能和修复 bug 为主。 build tencentcloud-sdk-java.version>3.1.831 feat (lamp-base): 消息发送 是否成功由实现类自行处理 (lamp-base):

2024-03-14

master Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 主要发布分支 可使用,但 Spring Cloud Alibaba、Tencent 等生态组件尚未发布正式版本 develop Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 Development 分支 新功能、ISSUE 均以此分支

2024-08-27

用参数 支持 支持 通知公告 系统通知公告信息发布维护 支持 支持 操作日志 系统正常操作日志记录和查询 系统异常信息日志记录和查询 支持 支持 登录日志 系统登录日志记录查询包含登录异常 支

2022-10-01

Snowy是国内首个采用国密技术为核心的前后分离后台权限管理系统,同时也是面向中小企业快速开发平台框架。框架采用主流技术开发设计,支持国产中间件、麒麟操作系统、Windows、Linux部署使用,框架使用SM2、SM3、SM4等国密算

2024-07-10

用参数 支持 支持 通知公告 系统通知公告信息发布维护 支持 支持 操作日志 系统正常操作日志记录和查询 系统异常信息日志记录和查询 支持 支持 登录日志 系统登录日志记录查询包含登录异常 支

2023-09-22

能四世同堂,凭什么开发 30 岁就要被干掉? 红杉资本发布一份报告,总结了这一年生成式AI突飞猛进的发展,探讨了生成式AI的发展趋势和市场表现。 一年前他们发布了一份预测,一年后红杉总结之前的预测,发现了他们预