在当今的软件工程领域,微服务架构占主导地位。虽然这种基础设施方法有很多优点,但它已经形成了一个非常复杂的管理网络。IBM 确认了这一点,共享该应用程序包含“数十个、数百甚至数千个不同的、可独立部署和可更新的服务”。除保持服务可靠性外,管理员还必须有效地管理数百个甚至数千个用户的权限。
这就是说,在用户访问特定服务之前,后端必须对其进行身份验证和授权。关键是,用户实际上是以自己的身份登录的,并且在此之后拥有执行特定操作所需的权限。决定权限、基于角色的访问控制(role-based access control,RBAC)以及其他控制已经变得非常棘手。另外,你管理服务相关权限的粒度是可变的。
为保证长期安全性、服务可用性和微服务可扩展性,设计清晰的用户权限策略是必不可少的。你无法使用“一扇摇摆的门”来保护你的 API 端点。在会话过程中控制用户看到和执行的操作是应用程序管理的基础。
评估标准
本文介绍了微服务中一些有用的用户权限策略,并对其进行了分解。这样做可以帮助你了解哪些策略最适合你的组织的服务。对于每个权限策略,我们将基于以下要点评估:
-
易用性:这种方法对用户的友好程度如何?每天使用基本功能有多简单?
-
可维护性:管理员如何能够在需要扩展或更改之后,快速地更改权限、组和结构?
-
稳定性:解决方案对于非预期故障的弹性有多大,以及其背后的 API 或机制是否能够长期有效地发挥作用?
这些标准构成了衡量策略有效性的强大基线。
权限策略简介
对你的权限进行管理时,有两种主要途径,每一种都有其细微差别。首先,你可以选择自己管理所有的权限,换句话说,你不需要依靠集中的第三方工具。这就是所谓的细粒度方法。采用这种方法的团队通常想要对他们的部署有不受约束的控制。
无需深入研究策略(稍后将详细介绍),可以根据用户和应用程序之间的关系、会话设计、服务器安排和 API 依赖关系等因素选择许多子方法。
相反,还有一种集中式服务的方法。一般情况下,这取决于对外部工具的集成和第三方服务的集成,这些服务在一定程度上保留了你的后端访问的权限。这样,你就可以使用统一的界面(包括命令行界面)来管理权限和角色。通常,对更改实际服务代码的依赖较少;你的重点是配置。
每一个策略都各有利弊。用例也随基础设施的不同而不同。在这种情况下,让我们深入研究。
策略 1:管理自己的权限
免责声明