如何配置Kubernetes来加密节点和pod之间的流量?

时间:2017-08-02 06:36:17

标签: kubernetes

为了准备HIPAA合规性,我们正在转换我们的Kubernetes集群,以便在整个机群中使用安全端点(在所有pod之间)。由于集群由目前使用HTTP连接的大约8-10个服务组成,因此由Kubernetes负责处理将非常有用。

我们想要解决的具体攻击向量是节点(物理服务器)之间的数据包嗅探。

这个问题分为两部分:

  • Kubernetes是否对pods和amp;之间的流量进行加密。默认情况下节点?
  • 如果没有,有没有办法配置它?

非常感谢!

4 个答案:

答案 0 :(得分:3)

  

Kubernetes是否对pods和amp;之间的流量进行加密。节点默认情况下?

Kubernetes不会加密任何流量。

linkerd这样的服务可以让您轻松地在您的http服务之间引入https通信。

您将在每个节点上运行服务网格的实例,并且所有服务都将与服务网格对话。服务网格内的通信将被加密。

示例:

您的服务-http-> localhost到servicemesh节点 - https-> remoteNode -http-> localhost到远程服务。

当您在与服务相同的窗格中运行服务网格节点时,localhost通信将在其他窗格无法访问的专用虚拟网络设备上运行。

答案 1 :(得分:3)

实际上正确的答案是"它取决于"。我会将群集分成两个独立的网络。

<强> 1。控制平面网络

换句话说,该网络是物理网络或底层网络。

k8s控制平面元素 - kube-apiserver,kube-controller-manager,kube-scheduler,kube-proxy,kubelet - 以各种方式相互交谈。除少数端点(例如度量标准)外,可以在所有端点上配置加密。

如果您还要进行测试,那么kubelet authn/authz也应该打开。否则,加密不会阻止对kubelet的未授权访问。该端点(在端口10250处)可以轻松地被劫持。

<强> 2。群集网络

群集网络是Pod使用的群集网络,也称为覆盖网络。加密留给第三方覆盖插件来实现,否则应用必须实现。

Weave overlay supports encryption。 @ lukas-eichler建议的服务网络链接器也可以实现这一点,但是在不同的网络层上。

答案 2 :(得分:2)

这里的回复似乎已经过时了。截至 2021 年 4 月 28 日,至少以下组件似乎能够为 Kubernetes 提供加密网络层:

  • Istio
  • 编织
  • 链接器
  • 纤毛
  • Calico(通过 Wireguard)

(以上列表通过查阅各项目主页获得)

答案 3 :(得分:0)

不,kubernetes默认不加密流量

我还没有亲自尝试过,但Calico software defined network上的说明似乎是针对您所描述的内容,而且还有其他好处kubernetes friendly

我认为Calico进行了原生加密,但基于this GitHub issue,似乎他们建议使用像IPSEC这样的解决方案来加密,就像传统主机一样