Uber如何重新定义微服务的访问控制

Uber如何重新定义微服务的访问控制

💡 原文英文,约2200词,阅读约需8分钟。
📝

内容提要

Uber开发了基于属性的访问控制(ABAC)系统Charter,以应对复杂的授权需求。该系统通过动态评估属性和条件,提高了授权决策的精确性和灵活性,支持数千个资源的管理,简化了政策管理并提升了性能。

🎯

关键要点

  • Uber开发了基于属性的访问控制(ABAC)系统Charter,以应对复杂的授权需求。

  • Charter通过动态评估属性和条件,提高了授权决策的精确性和灵活性。

  • Uber的基础设施依赖于数千个微服务,每天进行数百万次授权决策。

  • 传统的访问控制无法处理复杂的授权需求,ABAC提供了更好的解决方案。

  • 每个访问请求可以分解为:一个行为者在特定上下文中对资源执行某个动作。

  • Charter作为集中式服务管理所有授权策略,简化了政策管理。

  • 基本政策将行为者与资源通过动作连接,但在复杂场景中存在局限性。

  • ABAC通过添加条件扩展了基本政策模型,使得授权决策可以考虑更多上下文和属性。

  • Uber定义了四种属性存储接口,以获取行为者、资源、动作和环境的属性。

  • 选择Common Expression Language (CEL)作为表达条件的语言,支持多种数据类型和内置函数。

  • ABAC在Kafka主题管理中展示了实际应用,简化了对数千个主题的授权管理。

  • ABAC的实施带来了更精确的授权政策、动态适应性和显著的可扩展性。

  • 70个Uber服务已采用基于属性的政策,以满足特定的授权需求。

🔎

延伸解读

ABAC的优势与应用

Uber的ABAC系统Charter通过动态评估属性和条件,显著提升了授权决策的灵活性和精确性。这种方法不仅适用于复杂的授权需求,还能在高并发环境中快速响应,确保用户体验。尤其在Kafka主题管理中,ABAC简化了对数千个主题的授权管理,避免了繁琐的个别政策设置。

传统访问控制的局限性

传统的访问控制方法在处理复杂场景时显得力不从心。例如,无法根据用户的地理位置或时间限制访问权限。Uber的Charter系统通过引入属性和条件,克服了这些局限,使得授权决策能够考虑更多上下文信息,从而满足更复杂的业务需求。

政策管理的集中化

Charter作为集中式服务,简化了政策管理流程。通过将所有授权策略集中存储,Uber的安全团队能够更高效地审计和管理政策。这种集中化不仅提高了政策的一致性,还减少了各个微服务之间的授权逻辑分散带来的管理复杂性。

延伸问答

Uber的Charter系统是如何工作的?

Charter是一个集中式服务,用于管理所有授权策略,政策存储在数据库中,并通过统一的配置分发系统推送到各个服务,服务使用authfx库评估请求的政策。

什么是基于属性的访问控制(ABAC),它解决了什么问题?

ABAC是一种访问控制模型,通过动态评估属性和条件来处理复杂的授权需求,解决了传统访问控制无法满足的灵活性和精确性问题。

Uber是如何实现ABAC的?

Uber通过定义四种属性存储接口,使用Common Expression Language (CEL)来表达条件,并在授权决策中动态评估这些条件,从而实现ABAC。

ABAC在Kafka主题管理中的应用是什么?

ABAC使Uber能够创建一个通用政策来管理所有Kafka主题的访问控制,简化了对数千个主题的授权管理,避免了逐个管理政策的复杂性。

Charter系统如何提高授权决策的灵活性?

Charter通过允许在授权决策中考虑更多上下文和属性,动态评估条件,从而提高了决策的灵活性和精确性。

ABAC实施后,Uber的授权政策有哪些变化?

ABAC实施后,Uber的授权政策变得更加精确和细粒度,能够动态适应属性变化,且政策管理集中化,性能保持在微秒级。

🏷️

标签

➡️

继续阅读