4ea9163a2de05541b83b44b0d5dcd44f.png

f9fc7db6eefe05eb2b0e1cdad1582d33.gif

零信任(Zero Trust)是一种安全理念,而不是一种所有安全团队都要遵循的最佳实践。零信任概念的提出是为了给云原生世界带来更安全的网络。零信任是一种理论状态,即网络内的所有消费者都不仅没有任何权限,而且也不具备对周围网络的感知。

零信任的基础

零信任网络中的所有用户,包括机器和人类,都需要通过一个密码学验证的身份。要是实践零信任,需要从引入用户身份开始,然后考虑限制用户的最小访问权限。零信任实践的基础是认证和授权,这是比起传统的安全策略来说,零信任中的认证变得更加严格,而授权将变得更加细化。举个例子,传统的授权是:“用户 A 可以访问数据中心 D 吗”,而在零信任的框架下将变成 “在某个特定的时间点,在某个特定的地区,使用某个特定的设备的用户 A 可以访问某个特定应用中的某个特定文件吗?”

越来越细化的授权

在 Kubernetes 中,我们使用 RBAC 来管理权限。所有用户都是以组为基础来授予或拒绝访问权限,单个用户(服务账户)会被授予过多的访问权限。零信任的一个重要特征就是更细的粒度,基于角色来授予访问权限是不够安全的。我们需要细化用户对单一资源在限定时间内的访问权限。这正好与微服务背后的原则相契合 —— 随着服务和数据被分解成更小的部分,就有可能允许我们细化地位服务授予访问权限。

有时间限制的授权

关于授权,我们往往会存在一种误解,即一个用户一旦被认证和授权,他就成了一个 “受信任” 的用户,该用户就可以随时的对系统进行访问。然后,在零信任网络中,没有受信任的用户或设备。用户的每一次访问都需要经过认证和授权。而且,授权还会有一个时间窗口,用户只能在这个规定的实践窗口中执行规定的动作。

如何在企业内实行零信任网络

因为网络是企业系统的命脉之一,牵一发而动全身,要在企业内实行零信任网络,通常需要战略高层管理人员接纳零信任,通过自上而下的方式强加给安全团队。然后渐进式的改进你的网络,从一个关键业务开始,使其变成零信任的。

在零信任网络里,默认是拒绝一切访问。需要在应用程序开发中,积极主动的允许来自应用程序的某些适当的请求。身份是零信任的基础,而不是网络。零信任的关注对象是访问点、身份认证与授权和攻击面。对于云原生应用,因为它们的生命周期短暂且是动态的,为了实现零信任,你必须为每个访问点配置一个规则,不断更新应用程序的证书和访问规则,这时候手动配置几乎是不可能的,你必须实现自动化。

在 IstioCon 2022 的主题演讲 [1] 有提到,Istio[2] 正在成为零信任的一个重要组成部分。其中最主要的是面向身份的控制,而不是面向网络的控制。这方面的核心原则在谷歌白皮书《BeyondProd:云原生安全的新方法》[3] 上有描写 。

如果我们能将身份概念扩展到用户,并为我们提供灵活而丰富的策略机制来指定、监控和跟踪访问控制,我们就能达到一个可操作的零信任架构 —— 将用户、服务和数据统一到一个管理层。我所工作的公司 Tetrate[4] 创建了 Tetrate Service Bridge[5] —— 可供大型组织使用的管理平面,也是践行了零信任的理念。

总结

零信任是一种安全理念,它的基础是认证和授权。但比起传统网络安全方法来说,零信任具有如下特点:

  • • 系统中的所有工作负载都有一个密码学验证的身份

  • • 零信任网络默认拒绝所有访问

  • • 具有更细粒度的访问授权。

为了在云原生应用中实行零信任,你需要:

  • • 自上而下的推行

  • • 从关键业务入口

  • • 建立自动化工具

参考

下面有一些资料你可以参考:

  • • 写给 Kubernetes 工程师的 mTLS 指南 [6]

  • • 利用服务网格为基于微服务的应用程序实施 DevSecOps[7]

  • • Istio 捐献给 CNCF 意味着什么?[8]

引用链接

[1] 主题演讲: https://events.istio.io/istiocon-2022/sessions/zero-trust-istio/
[2] Istio: https://istio.io/
[3] 《BeyondProd:云原生安全的新方法》: https://cloud.google.com/blog/products/identity-security/beyondprod-whitepaper-discusses-cloud-native-security-at-google
[4] Tetrate: https://tetrate.io/
[5] Tetrate Service Bridge: https://www.tetrate.io/tetrate-service-bridge/
[6] 写给 Kubernetes 工程师的 mTLS 指南: https://lib.jimmysong.io/translation/mtls-guide/
[7] 利用服务网格为基于微服务的应用程序实施 DevSecOps: https://lib.jimmysong.io/service-mesh-devsecops/
[8] Istio 捐献给 CNCF 意味着什么?: https://jimmysong.io/blog/istio-has-applied-to-join-the-cncf/

更多云原生社区资讯,加入云原生社区讨论群,欢迎加入云原生社区,点击阅读原文了解更多。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐