1. 功能概览
Attention
地球号所有的请求都应该查看shop,corp,zone是否被拉黑。而且这个检查要在RAM里做。
1.1. 控制因素
地球号的访问控制包含四部分参与:APP控制,DEV控制,API控制,TOKEN控制,ROUE控制,LOGIN控制。一个完整的应用令牌/用户令牌要经历上述三部分分。注意,API,ROUE,TOKEN这三部分控制都有人工数据表干涉的情况。主要的方式是拉黑,冻结。
1.1.1. 应用控制
应用控制(RAM.APP)是一个典型的数据库控制,每个API来了后要查询APP表,看这个app_id有没有被拉黑等。
1.1.2. 设备控制
设备控制(RAM.DEV)是一个典型的数据库控制,每个API来了后要查询DEV表,看这个dev_id有没有被拉黑等。
1.1.3. 登录控制
登录控制(RAM.LOGIN)是一个典型的数据库控制,每个API来了后要查询login表,看这个login_id有没有被拉黑等。
1.1.4. 用户控制
用户控制(RAM.LOGIN)是一个典型的数据库控制,只对用户令牌有意义,用户令牌来了,RAM会检查这个令牌User_id在不在用户表中,有没有被拉黑。如果两项都通过,才算通过用户控制。通过用户控制后才能进行ROUE控制,因为通过这个控制,我们才能给用户一个天然的None角色,也就是基本注册角色。
1.1.5. 接口控制
接口控制(RAM.API)API在定义的时候本身定义了它要求的访问控制,这些访问控制有些是互相重复的。接口控制包含两部分,接口定义携带的接口头字段和接口人工控制表。
接口定义控制
[!info] 接口定义控制说明在接口系统头字段里。标记了接口要求的令牌特征条件,角权特征条件,接口形式条件。
字段 | 样式 | 说明 |
---|---|---|
XduaApiTokenColor | X/R/G/B | API要求的令牌颜色。 XRGB允许司中颜色令牌与或者*允许所有颜色的令牌。 |
XduaApiTokenType | A/U | API要求的令牌类型,A代表app是应用令牌,U代表usr是用户令牌。 |
XduaApiTokenAudience | aHEVYhE1 | API要求的令牌受牌方,例如,社区(zone)操作的API要求令牌的持有者(aud字段)必须是"aHEVYhE1"这个应用app_id |
XduaApiTokenSubject | AnoNymuS | API要求的令牌订阅者,地球号的所有算法服务,数据服务,登录服务,验码服务API要求令牌必须是匿名令牌。地球号的平台服务要求令牌不能是匿名令牌。 |
XduaApiTokenShop | XdUaXduA | API要求的令牌店铺必须是哪些店铺。 |
XduaApiRole | Root,God | 为什么命名为role而不是roles,因为在地球号的接口设计宗旨里,尽量保证一个接口只有一个角色。 |
XduaApiRule | CreateZone | 与XduaApiAction 完全保持一致。 |
XduaApiAction | CreateZone | 接口允许的动作列表,半角逗号隔开 |
XduaApiHttpSchema | HTTP/HTTPS | API要求访问的协议类型,因为网关传来的是大写,所以必须大写。 |
Note
为什么在接口已经有XduaApiRule
的情况下还要设计XduaApiRole
,这是一个保险措施,理论上说,一个完善的角权系统,仅仅靠权限就能做到访问控制,但是权限的配置是经历过角色的配置的。在配置的过程中,可能会有人工失误的地方,某人不小心给与一个小的角色一个很大的注明系统权限。因为系统权限哪些角色能够拥有都是确定的,比方说,CreateZone,只能XdUaXduA里的Root发出,为了防止有人把CreateZone分配给Root以外的人。此时应该用XduaApiRole做下限制,算是ailure issurance
,最后的保险。
接口人工控制
接口人工控制,是以apiram表为基础进行的。api表里规定了每个api的enable,expire。对这些字段的控制可以让运营人员对具体的某个api进行关闭,拉黑,冻结,下线。
1.1.6. 令牌控制
令牌控制(RAM.TOKEN)TOKEN在生成的时候本身定义了它的约束。但同时,一个应用令牌一旦发放出去,就应该要做到实时监控。并且能够随时下线,拉黑,冻结,上线接口。这个时候就需要token表来做人工干涉。用户令牌在登录后,如果在做关键操作,此时,系统管理员应该立刻远程关闭令牌,立即掐断这个令牌。
令牌定义控制
[!info] 令牌定义控制说明在接口系统头字段里。标记了接口要求的令牌特征条件,角权特征条件,接口形式条件。
字段 | 样式 | 说明 |
---|---|---|
clr | X/R/G/B | 令牌颜色 |
typ | app/user | 令牌类型,app是应用令牌,usr是用户令牌。 |
aud | aHEVYhE1 | 令牌受牌方 |
sub | AnoNymuS | 令牌订阅者 |
dev | AnoNymuS | 规定了什么设备可以发起本令牌 |
dev | AnoNymuS | 规定了令牌可以在什么IP发起 |
api | AddZone.CreateZone | 令牌规定了哪些API可以使用本接口,半角逗号隔开。 |
shop | XdUaXduA | 令牌订阅店铺 |
role | Root,God | 规定了令牌要求的用户角色 |
rule | CreateZone | 规定了令牌要求的用户权限 |
令牌人工控制
令牌人工控制,是以token表为基础进行的。它提供了人工干涉令牌有效性的机制。包括注销一个应用令牌,拉黑一个应用令牌,注销一个用户令牌。详述如下:
功能 | 说明 |
---|---|
注销一个应用令牌 | 如果一个应用令牌泄露,用户需要注销它 |
拉黑一个应用令牌 | 如果一个应用令牌试图恶意访问地球号,拉黑他,并给与解释 |
冻结一个应用令牌 | 如果一个应用令牌访问频繁,或者事先规定了它的冻结时间,此时要冻结这个令牌一段时间 |
注销一个用户令牌 | 如果一个用户的登录令牌泄露,他需要重新登录一次,这样可以自动注销掉原来的令牌 |
1.1.7. ROUE控制
ROUE是地球号的角权访问控制机制。最终会查出用户的权限,和API,TOKEN要求的权限比对,打到控制的要求。当然系统还提供了对roue级别的人工控制。