@
cndenis 你的业务场景其实不复杂,当前企业内部使用的系统通常都有身份认证这套系统,即“访问前登录”。但由于各种原因,内部开发的业务系统以及购买、订阅的第三方系统均无法证明足够安全。
业界通常如何解决这种问题呢?这里我讲一下我所知道的一种解决方案,即在业务系统前套一层「零信任」的网关。
先讲一下用户登录访问的流程,这里以本地用户(业务系统本身创建的用户)和 IAM 身份源举例:
- 本地用户:访问 Web->未登录重定向业务系统登录页面->登录成功进入 Web 应用。
- IAM 身份源:1. 访问 Web->2. 未登录重定向业务系统登录页面->3. 重定向至 IAM 登录页->4. 登录成功重定向到业务登录页面->5. 进入 Web 应用
注:如果不清楚 IAM 是什么的话,你可以将上面的第 3 步的 IAM 登录页理解为“微信扫码登录”、“钉钉扫码登录”、“google 登录”、“github 登录”等登录方式。
这种情况下,发布在公网的业务系统在登录前是可以被爆破的,无法确保哪些 API 不会存在漏洞。
「零信任」是怎么做的呢,简单来讲就是在业务系统前加了个「零信任网关」,用户访问业务系统均由「零信任网关」代理访问业务系统。如果你熟悉 nginx ,可以将「零信任网关」想象为一个具有身份鉴权能力的增强版 nginx 。
任何访问业务系统请求的流量,均会经过「零信任网关」,未登录的流量均会被拦截。只要当用户在「零信任」上线后,被“授权”的用户才能顺利地经过「零信任网关」访问到业务系统。这是一种关键的安全机制,它在网关层面拦截所有不可信的访问请求。
使用「零信任」后的用户访问流程:1. 访问 Web -> 2. 「零信任网关」判断请求无“身份”信息重定向至「零信任」的登录页面 -> 3. 「零信任」登录后放通请求,重定向至业务系统登录页面 -> 4. 业务系统登录成功进入 Web 。
一般人看到这里会觉得第 3 步和第 4 步都要登录,用户用起来很麻烦需要登录两次,但绝大部分情况下只需要登录一次,怎么做到的呢?这里我讲两种常用的方案:
1. 上面提到过的 IAM 身份源,如果「零信任」和业务系统的身份源都是同一个 IAM 系统,那么登录一次后,当用户访问其他业务系统时,会重定向跳转至 IAM 页面,此时会自动完成登录再回到登录后的业务系统页面。例如:我们访问 A 服务用的是 google 的身份,第一次需要登录 google 账号,后面访问 B 服务、C 服务等,若业务系统本身默认使用 google 账号登录,那么访问时便自动完成这个登录动作。
2. 对业务系统进行简单改造,用「零信任」的身份登录系统。什么意思呢?当第 3 步完成后,用户已经成功上线「零信任」系统了,此时用户访问业务系统,业务系统本身并不知道当前用户是谁,但业务系统可以去请求「零信任」拿到身份信息,完成用户上线。
以上两种方案本质上其实是同一种,对于用户而言它只需要登陆一次即可,当然厂家提供的登录方式不止于此。
「零信任」是个理念,上述是「零信任」的一种实现、一种解决方案。
至于你问的有没有成熟好用的产品推荐,并且满足体制内的安全要求(例如等保、信创)。在网络安全厂商里是可以找到相应的「零信任」解决方案的,尤其是国内头部的网络安全厂商如“深信服”、“奇安信”,又或者其他互联网大厂,你可以直接联系他们了解更多。