本文主要是介绍Tungsten Fabric+K8s轻松上手丨通过Kubernetes网络策略进行应用程序微分段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击下载文档,查看本文所有相关链接https://tungstenfabric.org.cn/assets/uploads/files/tf-ceg-case4.pdf
在大多数生产环境中,需要实施网络访问控制。Kubernetes提供了一种方法来描述Pod 组应该如何通过使用NetworkPolicy资源进行通信。
与Kubernetes中的大多数事情一样,要使网络策略正常运行,您需要一个支持它们的Kubernetes CNI插件。
使用场景
在几乎所有环境中,为应用程序需要通信的组件建立明确的规则,都是一个好主意。Kubernetes网络策略规范是一种直接的方法,可让您将NetworkPolicy直接与应用程序清单集成在一起。
NetworkPolicy定义资源的方式,使您可以精确地指定哪些网络通信是被允许的,而哪些则不允许,同时使用podSelector定义处理在Kubernetes上运行的应用程序的动态属性。
这意味着您的策略可以针对单个Pod或Pod组,从而将安全范围“缩小”到Pod的大小。
严格定义的网络策略与default-deny配置相结合,可以避免由于恶意应用程序入侵,和/或行为不当,或者配置错误而造成的麻烦。例如,一个应用程序组件可能具有滞留的缓存DNS条目或错误的配置参数,导致它与错误的后端进行通信。或者应用程序可能会被攻陷并被用作跳板,执行侦查,尝试横向渗透,或者只是使用Pod对Kubernetes API的访问权限来启动一些加密货币挖矿Pod,以窃取您的计算资源。
使用网络策略保护示例应用程序的安全
网络策略设计的主题比本指南中允许的空间要大得多。在此示例中,我们将执行以下操作:
- 为我们的default命名空间创建一个default-deny
Ingress策略。这意味着命名空间内的所有传入Pods的连接必须明确被允许; - 为每个示例应用程序组件创建一个Ingress NetworkPolicy对象,仅允许那些我们确定的对象。
步骤1:明确哪些组件应当可以相互通信
首先,我们需要提醒自己,应用程序的各个组件应该如何通信。为此,我们将回到在简介中看到的应用程序图:
从该图中可以看到:
- 外界需要到达yelb-ui的TCP端口80-(1)和(2)
- yelb-ui需要到达yelb-appserver的TCP端口4567
- yelb-appserver反过来将需要到达yelb-db的TCP端口5432,以及
- … yelb-cache的TCP端口6379。
步骤2:如何识别组件?
请记住,NetworkPolicy资源使用选择器来识别策略适用于哪个Pod,以及该策略将要控制的流量的源和目的地是什么。
在本演示中,我们将使用podSelectror方法,因此需要获取应用到应用程序Pod的标签列表。让我们查看cnawebapp-loadbalancer.yaml示例应用程序的清单,并收集标签:
这篇关于Tungsten Fabric+K8s轻松上手丨通过Kubernetes网络策略进行应用程序微分段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!