# 管理策略

# 策略数据结构

每个策略本质上就是一个 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:123books:edit 权限,而不具备 books:delete 权限。

# 使用 SDK 管理

你也可以使用 SDK 管理策略:

管理策略