应用安全【免费下载链接】CheatSheetSeriesThe OWASP Cheat Sheet Series was created to provide a concise collection of high value information on specific application security topics.项目地址https://gitcode.com/gh_mirrors/ch/CheatSheetSeries点击查看免费下载导读本文基于 OWASP Cheat Sheet Series 仓库中的《Authorization Decisions Output Handling》草案文档系统讲解现代授权系统中授权决策与决策结果输出处理的完整技术脉络从单次决策请求、批量请求等 PDP 调用机制到输出数据基数Output Data Cardinality的三种层级再到 PDP as Filter、Authorized Data Set、Authorization Filter 三大输出处理模式及其权衡最后给出延迟、吞吐、缓存与降级策略等性能决策依据。读完本文你将能够依据候选集规模、输出基数、PDP 类型PBAC / ReBAC / NGAC与延迟预算为具体业务场景选型正确的授权输出处理方案。授权请求的规范形式从原子决策到授权集合授权请求的规范形式是主体 X 能否对客体 Z 执行动作 YCan subject X perform action Y on object Z?。在最简单的情况下这类请求的结果是一个原子化的 permit允许或 deny拒绝判定。但在真实系统中授权决策几乎从不局限于单一、孤立的检查。系统经常需要确定一个主体在一组资源上可以做什么——例如渲染一份过滤后的列表或者决定为某个对象显示哪些操作按钮。这引出了一个超越单次 PDP 调用机制的问题被授权的资源集合或动作集合是如何确定的又由谁来负责确定历史上PDP 只返回原子化决策。如果系统需要知道主体能访问众多对象中的哪些PEPPolicy Enforcement Point策略执行点就必须先从数据源取出全部候选对象再逐一或以批处理方式减少往返向 PDP 检查。这种方式可用但会给数据源和 PEP 带来显著负载且在大数据集下扩展性很差。数据源 vs. PIP 的区分本文所说的数据源是应用自身的存储——持有被过滤或查询资源的数据库、API 或服务。它们不同于 Policy Information PointsPIP策略信息点——PIP 提供的是作为策略评估输入的属性相关内容在 Authorization Input Data Dimensions Distribution 中专门讨论。现代 PDP 实现——尤其是 ReBAC 和 NGAC 系统以及策略语言表达力足够强的 PBAC 系统——可以直接返回结构化结果一个计算出的允许资源集合或者一个可由数据源自行应用的过滤表达式。这使确定授权集合的责任从 PEP 转移到了 PDP 或数据层也让逐项迭代或批处理退化为兜底方案而非默认做法。Authorization Request Mechanics授权请求机制单次决策请求Single Decision Request一次单次决策请求就是向 PDP 发送的一条授权查询返回一个**输出数据output data**对象。一个请求至少是三元组——(subject, action, object)——通常还是四元组(subject, action, object, context)其中 context 携带与决策相关的附加信息如环境属性、风险信号或请求元数据详见 Authorization Input Data Dimensions Distribution 对输入数据的讨论。这一结构是刻意的PEP 只负责提供谁在请求、想做什么、对什么做而不提供决策应该如何做出的标准。PDP 中的策略逻辑完全负责评估这些标准。把授权标准泄漏进请求的做法——例如直接传角色名或权限标志——属于反模式因为它把 PEP 与策略内部实现耦合起来破坏了让授权体系可维护的关注点分离原则。PDP 返回的输出数据可能是简单的 permit/deny、结构化结果或列表——具体取决于策略逻辑产生什么以及 PDP 支持什么。批量请求Batch Request批量请求把多条独立的单次决策请求打包进一次 PDP 调用每次查询各自返回一个输出数据对象。它是调用层面的优化手段用于减少跨多次检查的往返次数与序列化开销。批量调用典型用于两种场景一个对象的多个动作PEP 需要知道主体能对某个特定资源执行哪些动作——例如决定是否渲染读取 / 编辑 / 删除按钮。与其发三次独立请求不如打包成一次调用。一个动作作用于已知且有界的候选集PEP 已经持有一小批对象需要对每个对象做同样的动作检查——例如过滤一小段搜索结果。与其逐条迭代调用不如一次性发出所有检查。即使有了批处理PEP 仍须先取得候选集而且当输出数据基数很高或事先未知时批处理也无济于事。Output Data Cardinality输出数据基数输出数据基数描述 PDP 返回的决策对象的结构与规模。它由策略逻辑定义而策略逻辑又反映消费方应用的需求。常见的三种输出基数层级层级含义示例Low低带最少元数据的简单决策{ decision: permit }Medium中决策包含多个结构化属性或小规模结果集{ allowed_projects: [A, B] }High高决策包含大规模或复杂的结果集{ resources: [doc1, doc2, ..., doc5000] }高输出基数往往需要分页pagination、流式streaming、查询改写query rewriting或者把授权逻辑进一步下推到靠近数据源的位置。这直接决定了本文下一节三种模式各自的适用边界。Policy Output Data Handling Patterns策略输出数据处理模式以下模式描述了当决策涉及一组资源而非单个对象时系统如何处理授权。它们的差异点在于授权集合在哪里被确定PEP、PDP 还是数据源以及 PDP 返回什么作为结果。模式一PDP as Filter暴力查找PEP 先从数据源取出所有可能相关的数据再对每一项向 PDP 发起检查——通过单次决策请求或在受支持时通过批量请求。被允许的项进入最终结果。优点Pros实现简单。兼容任何类型的 PDP。易于调试与监控。缺点Cons候选集大时延迟高、扩展性差PDP 调用被反复发起。取回的数据超出所需资源消耗增加。将 PEP 与服务业务逻辑紧密耦合。使 PEP 外部化变得困难甚至不可能。策略变更可能需要服务重新部署或重构。典型适用场景候选集较小、且 PDP 不支持 Authorized Data Set 与 Authorization Filter 时。模式二Authorized Data Set授权数据集PEP 向 PDP 发起单次请求PDP 直接返回主体可访问的完整资源集合——例如一份被允许的对象 ID 列表。PDP 基于策略逻辑与可用属性构造该结果。优点Pros无需事先取回候选集。一次返回全部结果减少往返次数。简化 PEP 逻辑——确定授权集合的复杂度由 PDP 承担。非常适合能利用内部关系图数据计算允许资源的 ReBAC / NGAC PDP。缺点Cons将 PEP 外部化例如外部代理仅在输出数据集为低到中基数时才可行。可能使数据访问的错误处理与监控变复杂。更大的输出数据集需要分页或流式处理。对采用 PBAC 方法的 PDP会导致策略复杂化。并非每个 PBAC PDP 实现都支持。典型适用场景低到中输出基数尤其是 PDP 能高效地从内部关系或图数据计算允许资源时。模式三Authorization Filter授权过滤器PEP 调用 PDPPDP 返回一个过滤表达式——例如查询谓词或基于属性的条件。PEP 在数据检索时应用该过滤器因此只有被允许的数据才会被取回。优点Pros无需事先取回候选集。对大数据集高度高效——过滤发生在数据源侧。高输出基数下扩展性良好。降低 PDP 负载。支持灵活的 PEP 部署位置——作为服务的一部分或外部代理。缺点Cons并非每个 PDP 都支持ReBAC 与 NGAC PDP 完全不支持。要求 PEP 或数据访问层正确应用返回的过滤器。可能使访问决策的错误处理、监控与诊断变复杂。典型适用场景高输出基数、资源可查询且授权约束可被翻译为数据源过滤器时。模式选型决策责任从 PEP 向 PDP/数据层转移三种模式本质上代表确定授权集合这一职责的三种落点模式授权集合确定方PDP 返回内容与候选集的关系PDP as FilterPEP逐项/批量问询每项一个原子决策需要先取回全部候选集Authorized Data SetPDP依据策略属性计算完整允许资源集合无需候选集Authorization Filter数据源应用 PDP 返回的过滤表达式过滤表达式无需候选集过滤在数据源这一演变在架构层面的意义在于它呼应了 OWASP Cheat Sheet Series 中 Authorization Patterns 讨论的 PDP 部署选择嵌入式库、Sidecar 进程或外部 PDP 服务——嵌入式与 sidecar 型 PDP 通常更擅长在本地计算授权集合而外部 PDP 更适合配合过滤器表达式或批量调用。同时Authorization_Cheat_Sheet 提醒我们无论选择哪种输出处理方式都必须坚持Deny by Default默认拒绝与Validate the Permissions on Every Request每个请求都校验权限的安全底线——过滤/计算只是执行方式不改变安全原则。Interaction Output Handling — Quick Reference快速参考场景常见做法单次访问检查Single Decision Request一个对象的多个动作如渲染 UI 控件Batch Request一个动作作用于小且已知的候选集PDP as Filter需要推导授权集合——低/中基数Authorization Filter 或 Authorized Data Set需要推导授权集合——高基数Authorization Filter 或分页的 Authorized Data SetPerformance Considerations性能考量性能在授权系统设计中至关重要——尤其在延迟敏感的环境里。授权决策会消耗响应产生前延迟预算的一部分从用户视角看**TTFBTime to First Byte**是最能反映响应性的指标之一。以下因素对评估集成与输出处理选型最为关键。输入侧的绩效因素如数据检索延迟、PDP 存储需求、同步开销见 Authorization Input Data Dimensions Distribution。策略评估延迟Policy evaluation latencyPDP 计算一次决策所需时间。取决于策略的数量与复杂度、被评估的输入数据量以及 PDP 是否必须在内部枚举或过滤大规模结果集。策略输出处理Policy output handling增加与输出基数成正比的工作量。所选输出处理模式会影响处理和应用结果所需的时间。PDP 集成开销PDP integration overhead涵盖每次 PDP 调用的网络延迟、TLS 握手、DNS 解析与序列化成本。协议选择如 HTTP/1.1 vs HTTP/2 vs gRPC会进一步影响此开销。进程内 PDP 可最小化该开销但可能增加本地资源争用。对于每个请求发起多次 PDP 调用的模式如不带批处理的 PDP as Filter此开销会成倍放大批量请求可直接削减这种倍增效应。运行时资源争用Runtime resource contention当 PDP 与边缘组件、网关或应用服务共置时尤其突出Busy Neighbor效应。PDP 通常是 CPU 与内存密集型组件。共享计算资源若无隔离会同时拖累 PDP 与宿主组件的吞吐。这一点在将 PDP 集成进边缘组件嵌入式或 sidecar时尤为相关——边缘组件往往为高 IOPS 吞吐而优化此时嵌入 PDP 就引入了 CPU 密集的策略评估与 I/O 密集的请求处理之间的取舍。缓存与记忆化Caching and memoization可显著降低决策延迟——许多 PDP 支持对确定性输入的评估结果缓存。这些优化可降低延迟但可能导致过期决策需要稳健的缓存失效逻辑。降级策略与超时Fallback strategies and timeouts决定 PDP 缓慢或不可用时系统的行为。fail-closed关闭时拒绝、fail-open关闭时放行与优雅降级的选择同时影响感知性能与安全态势。Performance Quick Reference性能速查表设计选择性能影响Batch Request减少往返次数增加负载体积PDP as Filter大候选集扩展性差重复 PDP 调用成倍放大集成开销PDP as Filter batching减少往返仍会取回超出所需的数据Authorized Data Set低/中基数高效单次往返Authorized Data Set高基数需要分页或流式存在大响应负载风险Authorization Filter通常对大型可查询数据集最佳将成本转移到数据源Remote PDP每次调用增加网络与序列化开销In-process/Sidecar PDP降低集成开销增加本地 CPU/内存压力Decision caching降低延迟若失效逻辑与新鲜度/延迟要求不一致可能产生过期决策Fallback: fail-open提升可用性削弱安全态势Fallback: fail-closed保持安全态势可能降低可用性与 OWASP Cheat Sheet Series 其他主题的衔接本主题是 OWASP Cheat Sheet Series 授权体系的一环可与仓库内其他文档配合阅读形成完整决策链输入侧Authorization Input Data Dimensions Distribution 定义了输入数据的本地性Locality、基数Cardinality与新鲜度Freshness并给出 On-Demand Data Pull、Out-of-Band Data Push、Request-Time Data Injection、Embedded Data 四种输入数据分发策略——输入数据如何到达 PDP 直接影响输出处理模式与缓存/失效策略的选择。策略侧Authorization Policy Dimensions Distribution 讨论策略所有权Microservice / Domain / Central与策略变更延迟决定策略是随 PDP 嵌入发布还是带外推送——这与输出处理中策略变更是否需要重新部署服务直接相关。架构侧Authorization Patterns 详细对比分散式服务级、集中式服务级、边缘级经典/现代授权模式及 PDP 部署选项嵌入式 / Sidecar / 外部是选择 Remote PDP 还是 In-process PDP 等性能决策的架构前提。基础原则Authorization_Cheat_Sheet 提供最小权限默认拒绝每次请求校验优先 ABAC/ReBAC 而非 RBAC等基础安全原则为所有授权模式提供安全底线。选择授权输出处理模式没有放之四海而皆准的答案最终决策取决于 PDP 类型PBAC / ReBAC / NGAC、输出基数、延迟预算、弹性要求、存储约束与治理边界。务实的最佳实践是小候选集用 PDP as Filter低/中基数授权集合用 Authorized Data Set高基数可查询资源用 Authorization Filter并在所有场景下配合批量请求与合理缓存策略控制延迟。赞分享应用安全【免费下载链接】CheatSheetSeriesThe OWASP Cheat Sheet Series was created to provide a concise collection of high value information on specific application security topics.项目地址https://gitcode.com/gh_mirrors/ch/CheatSheetSeries点击查看免费下载相关推荐OWASP Cheat Sheet Series 实战授权回归测试设计、三大验证模式与 CI/CD 门禁集成OWASP Cheat Sheet Series 实战授权回归测试设计、三大验证模式与 CI/CD 门禁集成 授权实现几乎从来不是静态的新端点不断加入、数据应用安全OWASP Cheat Sheet Series 的 Cheat Sheet PR 评审工作流五维审查与单一裁决实战指南OWASP Cheat Sheet Series 的 Cheat Sheet PR 评审工作流五维审查与单一裁决实战指南 本文面向 OWASP Cheat S应用安全超实用安全宝典OWASP Cheat Sheet Series输入验证和数据过滤终极指南超实用安全宝典OWASP Cheat Sheet Series输入验证和数据过滤终极指南 OWASP Cheat Sheet Series是一个开源项目旨在应用安全上一篇yuzu Switch模拟器完整指南电脑上免费跑起NSP和XCI游戏文件下一篇BartyCrouch您的本地化利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?