TF+K8s部署指南丨利用TF防火墙策略实现K8s网络策略

从5.0版本开始(版本更迭时间和具体内容),Tungsten Fabric支持使用防火墙安全策略框架实现Kubernetes 1.9.2网络策略。虽然Kubernetes网络策略也可以使用TF中的其它安全对象(如安全组和TF网络策略)来实现,但TF防火墙安全策略对标签的支持,有助于简化和抽象Kubernetes的工作负载。

TF防火墙安全策略可以实现路由与安全策略的解耦,并提供多维度分段和策略可移植性,同时显著提升用户可见性和分析功能。

另外,TF防火墙安全策略使用标签来实现不同实体之间的多维度流量分段,并具有安全功能。标签是与部署中不同实体相关联的键值对。标签可以是预先定义的,也可以是自定义的。

Kubernetes网络策略是有关如何允许Kubernetes工作负载的组(以下简称为pod)与其它网络端点相互通信的规范。网络策略资源使用标签来选择pod,并定义规则,这些规则规定了允许哪些流量进入所选的pod。

Kubernetes网络策略特性

Kubernetes网络策略具有以下特性:

  • 网络策略是特定于pod的,适用于一个pod或一组pod。如果指定的网络策略适用于一个pod,则到pod的流量由网络策略的规则决定。
  • 如果网络策略没有应用到pod,那么pod就会接受来自所有来源的流量。
  • 网络策略可以在ingress、egress或两个方向上为pod定义流量规则。如果没有明确指定方向,默认情况下,网络策略应用于ingress方向。
  • 当网络策略应用于pod时,该策略必须有明确的规则来指定ingress和egress方向的允许流量的允许列表。所有不符合允许列表规则的流量都会被拒绝和丢弃。
  • 可以在任何pod上应用多个网络策略。必须允许符合任何一个网络策略的流量通过。
  • 网络策略作用于连接而不是单个数据包。例如,如果从pod A到pod B的流量被配置的策略所允许,那么从pod B到pod A的该连接的返回数据包也是被允许的,即使已制定的策略不允许从pod B发起到pod A的连接。
  • Ingress策略。Ingress规则由源的身份和允许转发到pod的源的流量的protocol:port类型组成。

源身份可以是以下类型:

  • 无类别域间路由(CIDR)块——如果源IP地址来自CIDR块,且流量符合protocol:port,那么流量将被转发到pod。

  • Kubernetes命名空间——命名空间选择器标识命名空间,其pod可以将定义的protocol:port流量发送到ingress pod。

  • Pod——Pod选择器标识网络策略所对应的命名空间中的pod,这些pod可以向ingress pod发送匹配的protocol:port流量。

  • Egress策略。该策略指定了一个CIDR允许列表,允许特定protocol:port类型的流量从网络策略所针对的pod出发。

目的身份可以是以下类型:

  • CIDR块——如果目标IP地址来自CIDR块,且流量符合protocol:port,那么流量将被转发到目的地址。
  • Kubernetes命名空间——命名空间选择器标识命名空间,其pod可以将定义的protocol:port流量发送到egress pod。
  • Pod——Pod选择器标识网络策略所对应的命名空间中的pod,这些pod可以从egress
    pod接收匹配的protocol:port流量。

将Kubernetes网络策略表示为TF防火墙安全策略

Kubernetes和Tungsten Fabric防火墙策略在各自指定网络策略的语义上是不同的。通过TF防火墙策略高效实现Kubernetes网络策略的关键在于,在这两个实体之间映射相应的配置结构。

这些结构的映射关系如表1所示。

表1:Kubernetes网络策略和TF防火墙策略映射表
图片

注意:创建Tungsten Fabric防火墙策略结构的项目是容纳Kubernetes集群的项目。例如,如果Kubernetes集群是独立集群,则在全局范围内创建TF防火墙策略结构,如果Kubernetes集群是嵌套集群,则在项目范围内创建TF防火墙策略结构。

解决Kubernetes网络策略标签问题

在TF防火墙策略中,pod的表示方式与相应的Kubernetes网络策略中的表示方式完全相同。TF防火墙策略处理的是Tungsten Fabric术语中的label或tag。TF不会将标签扩展到IP地址。

例如,在默认的命名空间中,如果网络policy-podSelector指定:role=db,那么对应的防火墙规则指定pod为(role=db && namespace=default)。不对pod IP地址或其它做翻译。

如果同一个网络策略也有namespaceSelector为namespace=myproject,那么对应的防火墙规则将该命名空间表示为(namespace=myproject)。不做其它翻译,也不做其它规则表示"myproject"命名空间的pod。

同样,每个CIDR由一个规则来代表。实质上,Kubernetes网络策略被1:1翻译成TF防火墙策略。只有一个额外的防火墙规则为每个Kubernetes网络策略创建。该规则的目的是实现网络策略的隐性拒绝要求,没有其它规则产生。

TF防火墙策略命名公约

Tungsten Fabric防火墙安全策略和规则命名如下:

  • 为Kubernetes网络策略创建的TF防火墙安全策略以如下格式命名:
< Namespace-name >-< Network Policy Name >
  • 例如,命名空间"Hello"中的网络策略"world":
Hello-
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值