身份验证证明了有关调用者的某些信息。授权决定调用者是否可以检索该客户的报告或执行该操作。有效的 API 凭证不得成为绕过租户边界的捷径。在添加端点或后台作业之前从权限矩阵开始。
将身份绑定到请求的对象
通过支持的认证机制解析调用者的身份,然后从可信服务器端状态获取其授权的租户和操作范围。将 URL 或请求正文中的租户 ID 视为请求的目标,而不是权限证明。根据调用者的实际授权检查报告、导出作业和下载工件。
OWASP 的授权备忘单 建议最小权限,默认拒绝,并对每个请求进行权限验证。将这些原则应用于异步工作程序并下载链接以及第一个 API 调用。合法创建的导出以后不得由其他租户下载,因为其对象 ID 很容易被猜测。
将读取权限与更改权限分开
报告阅读者可以检索批准的域数据,但不应自动获得DNS写入权限。 DNS操作员可能不需要访问存储的报告历史记录。审核员可能需要有限的证据视图而不是原始消息。记录每个角色允许的对象和操作,并在普通日志和导出之外进行秘密管理。
假设自动化凭证仅被批准读取租户 A 的报告。尽管身份验证有效,但租户 A 的DNS更改和租户 B 的报告读取都需要在该授权下被拒绝。单独的、明确批准的运营商授权将需要其自己的对象和操作检查。这些是假设的预期决策,而不是实施的权限矩阵或EmailAuth角色的描述。
让阴性测试成为接受的一部分
运行读取的允许的同租户报告,然后仅更改请求的租户。对缺少的读取范围和已撤销的主体重复此操作。还计划对对象级 ID、存储的导出、排队作业和更改的组成员身份进行实际测试。使用授权的合成租户和无害的数据,而不是探测其他客户的帐户。
记录每个授权测试的实际决定和任何公开的响应字段。被拒绝的请求不得通过元数据、计数、下载链接或缓存结果泄漏私有对象详细信息。包括有效的范围读取,以区分正确的执行和拒绝所有人的端点。此处不提供或执行令牌系统、OAuth 流程或生产授权测试。
在赠款的整个生命周期内对其进行操作
记录赠款所有者、批准目的、租户范围、到期或审核触发条件以及撤销路径。将凭证材料存储在批准的秘密系统中,在受控程序下轮换并审核使用情况,而无需记录秘密本身。执行延误工作时重新检查权限;排队任务不应在撤销后无限期地保留权限。
检查基础数据的敏感性。 RFC 9990 描述 汇总报告 内容和安全考虑;报告元数据仍然值得受控披露。如果授权失败,则返回适当的拒绝,而不确认其他租户的私有对象。如果发现跨租户数据,请控制泄露并调用组织的事件程序。不要简单地改变 UI 并假设 API 是安全的。
OWASP 的多租户指南,特别是其异步工作、缓存/会话和文件存储部分,支持强制执行超出初始请求的范围,并在延迟执行期间重新检查时间敏感的权限。