什么是零信任?
零信任(Zero Trust)是一种安全理念,而不是一种所有安全团队都要遵循的最佳实践。零信任概念的提出是为了给云原生世界带来更安全的网络。零信任是一种理论状态,即网络内的所有消费者都不仅没有任何权限,而且也不具备对周围网络的感知。零信任的基础零信任网络中的所有用户,包括机器和人类,都需要通过一个密码学验证的身份。要是实践零信任,需要从引入用户身份开始,然后考虑限制用户的...
零信任(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/
更多云原生社区资讯,加入云原生社区讨论群,欢迎加入云原生社区,点击阅读原文了解更多。
更多推荐
所有评论(0)