内容提要
Fly.io 实现了一种新的安全令牌系统“Macaroons”,允许用户编辑权限并支持细粒度访问控制。通过“洞察”机制,Macaroons 限制权限,确保安全性和灵活性。用户可以添加限制条件,增强安全性,并支持第三方验证,提升 API 的安全性和可用性。
延伸解读
Macaroons 的核心机制:可衰减令牌
Macaroons 允许任何持有者添加“caveat”(限制条件)来进一步限制令牌权限,而无需服务器密钥。每个 caveat 独立签名并链式 HMAC,验证时需全部通过。这意味着用户可以自行生成最小权限令牌,例如限制路径、操作或金额,而无需开发者介入。这种设计在保持安全性的同时,提供了极大的灵活性。
第三方 Caveat 与插件式安全
第三方 caveat 允许将令牌的验证委托给外部服务,如 SSO 或审计系统。通过加密的 ticket 和 challenge,平台无需理解 caveat 的具体含义,只需验证 discharge Macaroon。这为安全令牌创建了插件系统,用户可集成自定义策略,如 Slack 机器人或双人审批,而平台本身无需修改。
Fly.io 的工程实践与权衡
Fly.io 将令牌验证与 caveat 清除分离,验证在隔离服务上进行,清除则分布式执行。这解决了 HMAC 设计下“能验证即可生成”的部署难题。令牌验证结果可缓存,并借助 LiteFS 实现全球快速验证。此外,服务令牌可从用户令牌派生并进一步衰减,用于内部服务间授权,确保权限可追溯且受限。
实际收益与潜在限制
Macaroons 为 Fly.io 带来了可邮件传输的令牌、用户驱动的权限系统、灵活的 SSO 集成以及可追溯的服务间授权。然而,纯限制性 caveat 在表达某些角色时可能不够直观,且团队使用了内部数据库 ID 作为公共 caveat 格式,这可能带来长期维护挑战。这些权衡体现了在安全性与实用性之间的取舍。
Q&A
什么是Macaroons系统?
Macaroons是一种新的安全令牌系统,允许用户编辑权限并支持细粒度访问控制。
Macaroons如何增强API的安全性?
Macaroons通过“洞察”机制限制权限,确保安全性和灵活性,并支持第三方验证。
用户如何自定义Macaroons的权限?
用户可以根据需要添加限制条件,创建最小权限的令牌,而无需开发者的干预。
Macaroons适用于哪些应用场景?
Macaroons适用于各种应用场景,包括银行应用,能够实现细粒度的权限控制。
Macaroons的设计如何降低被盗用的风险?
Macaroons的设计使得令牌可以安全地在用户之间传输,降低了被盗用的风险。
Macaroons如何支持第三方验证?
Macaroons支持第三方洞察机制,使其可以与其他系统集成,增强安全性和灵活性。