治白癜风的医院哪里好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/译者导读
CNCF的毕业项目OpenPolicyAgent(OPA),为策略决策需求提供了一个统一的框架与服务。它将策略决策从软件业务逻辑中解耦剥离,将策略定义、决策过程抽象为通用模型,实现为一个通用策略引擎,可适用于广泛的业务场景。
比如:判断某用户可以访问哪些资源、允许哪些子网对外访问、工作负载应该部署在哪个集群、容器能执行哪些操作系统功能、系统能在什么时间被访问。需要注意的是,OPA本身是将策略决策和策略施行解耦,OPA负责相应策略规则的评估,即决策过程,业务应用服务需要根据相应的策略评估结果执行后续操作,策略的施行是业务强相关,仍旧由业务应用来实现[1]。
这篇译文是笔者对博文《EXTERNALIZEDAUTHORIZATIONUSINGOPAANDSPRINGSECURITY》的汉化[2]。博文主要介绍基于OPA和SpringSecurity对JavaWEB应用进行外部访问控制的技术实践(在这里对博文的背景做一定的补充介绍:无论是云原生应用还是传统单体应用,都面临着“失效的访问控制”以及“失效身份认证”这两类漏洞的严峻风险。
这两类漏洞均“跻身”OWASPTOP以及OWASPTOP榜单,可谓“老大难”问题;并且,云原生应用带来了API应用接口爆发式增长、对策略设置的灵活性要求提高的挑战;面对这样的风险与挑战,OPA可发挥其在业务场景“判断某用户可以访问哪些资源”的优势,帮客户缓解该问题)。
下面将进入译文部分。若读者朋友能够在阅读之后能收获对OPA技术思路的初步认识,甚至对OPA相似业务场景下能力和服务的研发有所助益,笔者将不胜荣幸。文中若有错漏之处,恳请读者朋友能帮忙指正。
前言
虽然OAuth2和OIDC已经成为访问控制的事实标准,流行度很广,但现有的访问控制标准(如XACML、UMA)难以落地甚至使用。因此开发人员继续推出自己的解决方案,但实现起来常常费时费力,增加了维护成本。
在本教程中,我们将探究如何通过使用OpenPolicyAgent和SpringSecurity将决策外部化以简化访问控制模块。
一、目标
通常,任何公开API的服务都需要“身份认证”(authentication)和“访问控制”(authorization)。虽然这两个术语听起来很相似,但二者在安全的作用方面有着根本的不同。“身份认证”是确定身份的过程,“访问控制”是确定权限的过程。二者都是非常关键的主题,因为对它们的