Cedar介绍

Cedar 是 AWS 开发的开源策略语言,专门用于定义细粒度授权规则。它不是 AWS 专属服务,而是一个独立的开源项目。

https://github.com/cedar-policy

Cedar 与 Verified Permissions 的关系

image-20260316120452272

简单类比:

image-20260316120531524

Cedar 语言特点

  1. 类似自然语言,可读性强
// 允许文档所有者执行任何操作
permit (
    principal,
    action,
    resource
)
when {
    resource.owner == principal
};
  1. 默认拒绝 (Deny by Default)
没有显式 permit 的请求 → 自动 DENY
有任何 forbid 匹配 → DENY (forbid 优先于 permit)
  1. 两种规则: permit 和 forbid
// 允许规则
permit (
    principal in Group::"Editors",
    action == Action::"Edit",
    resource
);

// 禁止规则 (优先级更高)
forbid (
    principal,
    action == Action::"Delete",
    resource
)
when {
    resource.classification == "archived"
};

Cedar 策略评估逻辑

                请求进入
                   │
                   ▼
          ┌────────────────┐
          │ 是否有 forbid   │──── 是 ───▶ DENY
          │    匹配?        │
          └────────────────┘
                   │ 否
                   ▼
          ┌────────────────┐
          │ 是否有 permit   │──── 是 ───▶ ALLOW
          │    匹配?        │
          └────────────────┘
                   │ 否
                   ▼
                 DENY
            (默认拒绝)

如果想完全控制或不想依赖 AWS,可以直接用开源 Cedar。

如果想省事、要与 Cognito 集成、不想运维,就用 Verified Permissions。