Skip to content

Commit

Permalink
Update documents
Browse files Browse the repository at this point in the history
  • Loading branch information
iGeeky committed Dec 24, 2023
1 parent bb242ec commit 35f4df7
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 101 deletions.
94 changes: 46 additions & 48 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

## Introductions

wolf是一个通用RBAC系统,适用于所有的HTTP应用.统一授权及访问控制.
Wolf是一个通用的RBAC权限系统,适用于所有的HTTP应用。它提供统一的授权和访问控制功能。

在每个公司内部,通常会有各种不同的后台服务及相应的管理后台。不同的系统往往会有自己独立的账号系统和权限管理模块。这种重复开发导致了开发资源的浪费,而且不统一的账号体系会造成管理上的混乱。如果这些系统是由不同的团队开发的,问题将更加复杂。

每个公司内部会有各种不同的后台服务及相应的管理后台.通常不同的系统会有一套自己的账号系统及权限管理模块。重复的开发使得开发资源浪费.并且不统一的账号,造成管理上的混乱。如果系统是由不同的团队来开发,这种情况将更糟糕.

本系统可以应用于各种平台,及各种系统之上. 统一账号及统一授权.并且各系统无需任何开发工作.

Wolf系统可以应用于各种平台和系统之上,实现统一的账号和授权管理。而且无需对各系统进行任何开发修改工作。

## Community

Expand All @@ -18,52 +16,52 @@ wolf是一个通用RBAC系统,适用于所有的HTTP应用.统一授权及
## Features



* 语言无关,任何HTTP程序都能使用,包括但不限于:纯静态网页,JSP,PHP,ASP,PYTHON,NODE JS等WEB系统
* 低耦合, 无侵入性, 支持新的应用不需要对应用进行任何修改与改造, 系统在代理层对资源权限进行管理
* 自带管理后台(`console模块`),可对`应用``用户``角色`, `权限``资源`进行管理
* 支持 `OAuth 2.0` 授权, 方便其它应用使用 `wolf` 账号登陆
* 支持2种用户认证方式: 密码认证, `LDAP`认证.
* 支持`Restful`接口, 也支持后端渲染的`纯html`应用
* 支持访问日志记录与查询, 以进行审计及问题追溯.
* 丰富的测试用例,代码行数覆盖率90%以上.
* 支持`PostgreSQL``MySQL`数据库.
* 支持APISIX网关[apache-apisix:wolf-rbac](https://github.com/apache/incubator-apisix/blob/master/doc/plugins/wolf-rbac-cn.md)
* 系统有三大模块:
* Wolf-Server 服务实现,管理后台功能实现
* Wolf-Console 管理后台前端代码实现
* Wolf-Agent RBAC的Access Check代理
* 系统包含以下实体对象:
* `Application`, 应用, 支持多应用. 不同的应用可以拥有不同的权限,角色及资源. 可以查看应用下的RBAC对象关系图表.
* `User`, 用户, 整体系统共享用户. 可以给用户授权的对象包括:
* 管理员权限, 设置为管理员的用户可以登陆`Console`管理后台,并对应用进行管理
* 应用列表, 可以为用户分配零到多个应用. 根据用户类型不同, 应用列表的意义也不同:
* 对于管理员用户, 表示可以对这些应用进行管理.
* 对于非管理员用户, 表示可以对这些应用进行登陆及使用
* 角色, 可以为用户分配多个角色, 用户最终拥有的权限是所有角色的权限的合集
* 权限, 可以直接为用户分配权限. 虽然标准的RBAC模型中通常不支持这种方式, 但是本系统支持
* `Role`, 角色, 角色可以包含一组权限.
* `Category`, 权限分类, 一种对权限进行分类(分组)的方式, 方便管理, 通常可以按大的功能模块进行分类. 在系统中`权限选择框`中会按分类对权限进行分组显示.
* `Permission`, 权限, 权限与资源是一对多的关系, 可以一个资源一个权限, 也可以多个资源使用同一个权限.
* `Resource`, 资源, 目前主要是HTTP请求. 资源的属性`Match Type` + `Name` + `Action` 确定一条唯一的资源. 一个资源最重要的4元组是:
* `Match Type`, URL匹配类型, 支持`精确匹配``后缀匹配``前缀匹配`三种模式
* `Name`, 指请求的HTTP URL. 如果是`精确匹配``前缀匹配`, 通常是以`/`开头. 如果是`后缀匹配`, 通常是资源共有的后缀, 如: `.jpg`, `.js`, *不支持通配符或正则*.
* `Action`, 指请求的`HTTP Method`. 方法`ALL`能匹配所有方法.
* `Permission`, 指定访问该资源需要的权限. 两个内置权限: `Allow All`表示所有用户可访问, `Deny All`表示所有用户不可访问.
* `Audit Log`, 审计日志, 记录了所有经过本系统的访问情况(包含`Wolf-Console`及本系统管理的应用). 记录了以下主要信息:
* 用户ID, 用户名, 用户昵称
* 访问日期, 时间及访问者的IP
* HTTP方法,及URL,
* 匹配上的资源.
* 访问响应的状态码.
* 请求args参数或request body(只支持了`Wolf-Console`的记录).
* 资源匹配方式, 支持不同的优先级, 优先级规则如下:
* `Match Type`优先级从高到低, 依次是: 精确匹配, 后缀匹配, 前缀匹配.
* `Action``HTTP Method`. `ALL`优先级比较低, 其它方法(如`GET`, `POST`, `PUT`)优先级相同, 但都比`ALL`高.
* `Name``HTTP URL`. 优先级与URL长度有关, URL越长优先级越高.
* 语言无关:任何HTTP程序都可以使用,包括但不限于纯静态网页、JSP、PHP、ASP、Python、Node.js等Web系统。
* 低耦合、无侵入性:支持新的应用接入时无需对应用进行任何修改或改造,系统在代理层对资源权限进行管理。
* 自带管理后台(`console模块`):可以对`应用``用户``角色``权限``资源`进行管理。
* 支持OAuth 2.0授权:方便其他应用使用Wolf账号进行登录。
* 支持两种用户认证方式:密码认证和`LDAP`认证。
* 支持`Restful`接口和后端渲染的纯HTML应用。
* 支持访问日志记录与查询,以进行审计和问题追溯。
* 丰富的测试用例,代码行数覆盖率达到90%以上。
* 支持`PostgreSQL``MySQL`数据库。
* 支持APISIX网关[apache-apisix:wolf-rbac](https://github.com/apache/apisix/blob/master/docs/zh/latest/plugins/wolf-rbac.md)
* 系统包含三个主要模块:
* Wolf-Server:服务实现和管理后台功能实现。
* Wolf-Console:管理后台前端代码实现。
* Wolf-Agent:RBAC的Access Check代理。
* 系统包含以下实体对象:
* 应用(Application):支持多个应用,不同的应用可以拥有不同的权限、角色和资源。可以查看应用下的RBAC对象关系图表。
* 用户(User):整个系统共享用户。可以为用户授权的对象包括:
* 管理员权限:设置为管理员的用户可以登录`Console`管理后台,并对应用进行管理。
* 应用列表:可以为用户分配零到多个应用。根据用户类型的不同,应用列表的含义也不同:
* 对于管理员用户,表示可以对这些应用进行管理。
* 对于非管理员用户,表示可以登录和使用这些应用。
* 角色:可以为用户分配多个角色,用户最终拥有的权限是所有角色的权限的合集。
* 权限:可以直接为用户分配权限。尽管标准的RBAC模型通常不支持这种方式,但本系统支持。
* 角色(Role):角色可以包含一组权限。
* 权限分类(Category):一种对权限进行分类(分组)的方式,方便管理,通常可以按照大的功能模块进行分类。在系统中的权限选择框中,权限会按照分类进行分组显示。
* 权限(Permission):权限与资源是一对多的关系,可以为一个资源分配一个权限,也可以多个资源使用同一个权限。
* 资源(Resource):目前主要指HTTP请求。资源的属性包括`匹配类型`+`名称`+`动作`,以确定唯一的资源。一个资源的重要属性有:
* 匹配类型 (Match Type):URL的匹配方式,支持`精确匹配``后缀匹配``前缀匹配`三种模式。
* 名称 (Name):指HTTP URL。如果是`精确匹配``前缀匹配`,通常以`/`开头。如果是`后缀匹配`,通常是资源共有的后缀,例如`.jpg``.js`*不支持通配符或正则表达式*
* 动作 (Action):指HTTP方法。`ALL`能匹配所有方法。
* 权限 (Permission):指访问该资源需要的权限。系统内置了两个权限:`Allow All`表示所有用户都可以访问,`Deny All`表示所有用户都不可访问。
* 审计日志(Audit Log):记录了所有经过本系统的访问情况(包括`Wolf-Console`和本系统管理的应用)。主要记录以下信息:
* 用户ID、用户名、用户昵称;
* 访问日期、时间和访问者的IP;
* HTTP方法和URL;
* 匹配上的资源;
* 访问响应的状态码;
* 请求参数或请求正文(仅支持`Wolf-Console`的记录)。
* 资源匹配方式支持不同的优先级,优先级规则如下:
* `匹配类型`的优先级从高到低依次为:精确匹配、后缀匹配、前缀匹配。
* 动作(即HTTP方法)的优先级:ALL优先级较低,其他方法(如GET、POST、PUT)优先级相同,但都高于ALL。
* 名称(即HTTP URL)的优先级与URL的长度有关,URL越长,优先级越高。

**注意: 本文中的URL仅指URL标准中的path部分, 不包含域名,端口及参数部分**


## Architecture

![Architecture](./docs/imgs/architecture.png)
Expand Down
Loading

0 comments on commit 35f4df7

Please sign in to comment.