# 了解权限模型
Authing 的访问控制与权限管理模型核心围绕着两个点来设计:资源(Resource)和策略(Policy)。策略定义了对某个(类)资源的某个(些)操作权限,将策略授权给用户(或角色),就能知道用户(或角色)是否具备对某个资源的某个操作具备操作权限。
此模型中涉及到了三个实体:
- 资源 (Resource)
- 操作 (Action)
- 主体,即用户或角色 (Identity)
每个策略本质上就是一个 JSON Document,每个策略包含多个语句(Statements):
{
"statements": [
{
"resource": "books:123",
"action": ["books:edit"],
"effect": "ALLOW"
},
{
"resource": "books:123",
"action": ["books:delete"],
"effect": "DENY"
}
]
}
每个 语句(Statement)
由以下几个部分组成:
- 资源(Resource):可以是某个特定资源(如
books:123
)、多个资源(如books:123,books:124
),也可以是一类资源(如books:*
)。 - 操作(Action):可以是某个特定操作(如
books:edit
)、多个操作(如books:read,books:edit
),也可以是一类操作(如books:*
)。 - 效用(Effect):允许(ALLOW)或拒绝(DENY)。
你可以将该策略授权给某个用户或某个角色,授权给角色的策略会被该角色下的所有用户继承,被授予策略的用户会自动获得该策略中定义的权限。如果一个用户被授予了多个策略,他具备的权限是这些策略的并集。
如把上述示例策略授予了用户 A(不论是直接授予还是通过角色继承),他将具备资源 books:123
的 books:edit
权限,而不具备 books:delete
权限。