Skip to content

资源作用域

权限码只能表达「能做什么」,而作用域表达「能在哪些资源上做」。IAM 用 ResourceScope 把授权限定到某个项目、部门等层级节点。

  • ResourceScope(record):(scopeType, scopeRefId, accessMode),例如 ("PROJECT","101",READ) 表示对 PROJECT 101 具有读权限。
  • ScopeAccess:枚举 READ / WRITE
  • ResourceHierarchyProvider(接口):boolean isWithinScope(ResourceDescriptor resource, ResourceScope scope);——判断某资源是否落在给定作用域内(沿 parentPath 计算层级包含关系)。

alice 默认 Profile 401 持有作用域 (PROJECT,101,READ);其文档 1001 的 parentPathPROJECT:101,因此 isWithinScope 为 true,可读。当以 WRITE 访问时,因 401 仅有 READ,被拒并得 SCOPE_DENIED。切换到 Profile 402(含 PROJECT,101,WRITE)后即可写。