Amazon Verified Permissions

使用 Cedar 策略语言将应用授权逻辑外部化,实现细粒度访问控制的托管服务

概述

Amazon Verified Permissions 是一项托管授权服务,使用 Cedar 策略语言将应用程序的授权逻辑从代码中分离出来。开发者定义策略模式(Schema)描述实体类型和关系,编写 Cedar 策略表达访问规则,应用在运行时调用 Verified Permissions API 进行授权决策。支持 RBAC(基于角色)和 ABAC(基于属性)的混合授权模型。

Cedar 策略语言与模式设计

Cedar 是 AWS 开发的开源策略语言,语法简洁可读。策略由 permit(允许)和 forbid(禁止)语句组成,指定主体(Principal)、操作(Action)、资源(Resource)和条件(Condition)。模式(Schema)定义实体类型(User、Group、Document 等)、操作(read、write、delete 等)和实体间关系(User memberOf Group、Document in Folder)。模式验证确保策略引用的实体和操作都是合法的,防止拼写错误导致的策略漏洞。策略存储(Policy Store)是策略和模式的容器,一个应用通常对应一个策略存储。静态策略适用于固定规则,模板策略适用于需要参数化的规则(如「资源所有者可以编辑自己的资源」)。

Cognito 集成与多租户设计

Verified Permissions 与 Cognito 原生集成,Cognito 用户池的 ID Token 中的声明(claims)可直接作为授权决策的输入。典型流程:用户登录 → Cognito 颁发 Token → 应用调用 IsAuthorizedWithToken API → Verified Permissions 评估策略 → 返回允许/拒绝。多租户 SaaS 设计中,租户隔离通过策略实现:每个租户的数据标记租户 ID,策略确保用户只能访问自己租户的资源。层级权限模型(组织→部门→团队→个人)通过实体的父子关系和策略继承实现。批量授权(BatchIsAuthorized)API 在单次调用中评估多个授权请求,减少网络往返,适合列表页面需要判断每个项目权限的场景。

性能与运维设计模式

Verified Permissions 的授权决策延迟通常在个位数毫秒级别,适合在线请求路径。对于超高频场景,可在应用侧缓存授权结果(注意缓存失效策略)。策略变更通过 API 或控制台即时生效,无需重新部署应用。策略测试台(Policy Test Bench)允许在不影响生产的情况下模拟授权请求,验证策略行为。CloudTrail 记录所有策略变更和授权决策,支持合规审计。策略分析工具可检测策略冲突(同一请求同时匹配 permit 和 forbid)和死策略(永远不会匹配的策略)。与 Lambda Authorizer 集成可在 API Gateway 层面实现细粒度授权,无需在每个 Lambda 函数中重复授权逻辑。

共有するXB!