广告

通过服务网格对Kubernetes应用零信任安全

  • 浏览(315)
  • 评论(0)
  • 译者:k8s

今年早些时候,白宫发布了一项关于改善国家网络安全的行政命令,为联邦机构建立零信任架构奠定了基础。

国家安全局(NSA)和网络安全和基础设施安全局还联合发布了Kubernetes强化指南,重点介绍了Kubernetes关键零信任安全原则的最佳实践。

这些文档强调了组织和开发人员需要重新考虑保护其应用程序和基础设施的方式。考虑到安全需求随着云基础设施的采用而发生的变化,必须了解如何在运行时、云、平台,特别是Kubernetes集群中应用这些原则。

NSA指南推荐的一种关键方法是在Kubernetes环境中使用服务网格来授权、验证和加密服务对服务通信。让我们仔细看看开源服务网格如何帮助加强安全态势并促进零信任网络。

零信任安全

在开始讨论零信任方法如何应用于Kubernetes之前,我们需要一些关于零信任原则的背景知识,以及为什么它们变得越来越重要。

跨多个云和内部数据中心保护基础设施、数据和访问变得越来越复杂和困难。随着企业转向多云和混合基础设施,他们为保护其私有数据中心而采取的措施开始过时。基于IP的身份和基于周界的访问在一个IP地址瞬息万变、劳动力不断变化(通常是远程)且需要不断访问共享资源的世界中已不再适用。

这种转变需要一种不同的安全方法,这种方法不信任任何东西,甚至不信任你自己的服务和用户,而是在允许访问之前对所有内容进行身份验证和授权。关键的是,零信任的转变不是二元的;这是一种持续的方法,需要对你的架构进行根本性的转变。幸运的是,这三个最佳实践零信任原则可以帮助指明方向:

——提供基于身份的服务到服务访问和通信:服务应该基于服务身份。授权应使用服务标识,而不是IP地址。在建立连接时,服务应该相互验证其身份。

——包括秘密和证书管理以及强化的Kubernetes加密:秘密应该加密,有时间限制,并且能够与全局服务标识一起使用,从而在传输过程中实现数据加密。访问凭据应该有时间限制,要求用户或应用程序按定义的时间间隔刷新其凭据。

——通过审核和记录启用可观察性:应审核和记录所有访问尝试。

对Kubernetes应用零信任原则

现在我们已经确定,在动态环境中,基于网络周界的安全性还不够,我们需要减少对网络周界控制的依赖。组织可以采取哪些步骤在Kubernetes环境中实施零信任原则?

1、提供基于身份的服务对服务访问和通信

每个Kubernetes集群都提供了一个平面网络,其中每个容器或服务都可以不受任何限制地与另一个容器或服务进行通信。Kubernetes认为容器网络或在其上运行的应用程序是可信的,不需要身份验证。例如,如果数据库服务和日志记录服务在同一个Kubernetes集群上运行,默认情况下,它们可以在网络级别相互访问。

用户可以在Kubernetes中创建策略,以应用默认规则来拒绝集群中的入口和出口流量。然而,即使有这些限制,你仍然需要服务到服务的身份验证和授权,以确保只向服务提供所需的资源。

你可以通过引入服务网格来解决此问题,该网格允许你为Kubernetes集群上运行的每个服务分配服务标识。基于服务标识,网格可以使用MTL对服务标识进行身份验证,并且可以使用意图对服务访问请求进行授权或阻止,从而允许运维人员通过服务名称定义服务到服务的通信权限。有了服务网格,只有当两个服务都可以相互验证其凭据时,日志记录服务才能访问数据库服务。

2、包括秘密和证书管理以及强化的Kubernetes加密

为Kubernetes控制平面使用凭据,无论是用于标识还是用于管理秘密,都会扩大攻击面,很难维护,并且不符合上面列出的原则。Kubernetes秘密在零信任安全架构中有几个弱点:

——默认情况下,秘密是base-64编码的,而不是加密的。

——因为秘密不会过期(没有时间限制),所以会让你面临风险。

——Kubernetes只能在集群边界内管理资源,如机密。如果有多组集群,则必须分别管理多个集群中使用的资源。

带有秘密代理的服务网格可以解决这一难题。例如,Kubernetes上的Consul与HashiCorp的Vault进行了集成,这是一种中心化的秘密管理解决方案,可以弥补Kubernetes秘密中的漏洞。

目标是确保通过集中的访问控制和审核对秘密进行加密。该工作流应支持单个Kubernetes集群和联合多集群部署。此外,证书自动旋转可以帮助运维人员减少其TLS证书的生存时间(TTL)值,增强其安全态势。

3、通过审核和记录实现可观察性

为了提高Kubernetes的安全性,了解集群内部发生了什么,以了解发出了什么服务访问请求,这一点很重要。审核日志允许审核团队检查事件数据,以查看使用了哪些凭据、执行了哪些操作以及与这些事务相关的时间戳。这为安全团队提供了更好的洞察力和责任感。

服务网格部署sidecar代理,能够对集群中运行的每个服务发出度量,并保留所有服务到服务通信和访问请求的记录。理想情况下,服务网格将与Prometheus和Grafana等开源监控工具集成,以便于分析服务网络模式和加强安全性。

结论

随着多个Kubernetes集群、多个运行时、多云和内部部署以及它们之间的各种互连,服务部署环境变得更加复杂,遵循零信任安全原则成为必要。

像HashiCorp-consur这样的服务网格可以是这个过程的重要组成部分,它提供了一个管理层,通过提供相互认证和授权任何访问的基于身份的服务网络来实施零信任原则。Concur可以轻松地在Kubernetes和多个环境中实施细粒度安全策略,而无需将所有安全参数编码到应用程序本身中,从而实现快速、易于管理的进入,实现更零信任的安全态势。

原文链接:

https://thenewstack.io/applying-zero-trust-security-to-kubernetes-via-service-mesh/


  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头