为了准备HIPAA合规性,我们正在将Kubernetes集群转换为在整个机群(所有Pod之间)使用安全端点。由于集群由当前使用HTTP连接的大约8-10个服务组成,因此由Kubernetes处理这一点将非常有用。
我们希望解决的特定攻击向量是节点(物理服务器)之间的数据包嗅探。
这个问题分为两部分:
- Kubernetes是否默认加密Pod和节点之间的流量?
- 如果没有,有没有办法这样配置?
非常感谢!
为了准备HIPAA合规性,我们正在将Kubernetes集群转换为在整个机群(所有Pod之间)使用安全端点。由于集群由当前使用HTTP连接的大约8-10个服务组成,因此由Kubernetes处理这一点将非常有用。
我们希望解决的特定攻击向量是节点(物理服务器)之间的数据包嗅探。
这个问题分为两部分:
非常感谢!
4条答案
按热度按时间332nm8kg1#
事实上,正确的答案是“这取决于”。我会将群集拆分为两个独立的网络。
1.控制平面网络
换句话说,该网络是物理网络或底层网络的网络。
k8s控制平面元素- kube-apiserver,kube-controller-manager,kube-scheduler,kube-proxy,kubelet -以各种方式相互通信。除了少数几个端点(例如,度量),可以在所有端点上配置加密。
如果你也在pentesting,那么kubelet authn/authz也应该打开。否则,加密无法阻止对kubelet的未经授权的访问。这个端点(在端口10250)可以很容易地被劫持。
1.集群网络
集群网络是Pod使用的网络,也称为覆盖网络。加密留给第三方覆盖插件来实现,如果失败,应用程序必须实现。
Weave覆盖supports encryption。@lukas-eichler建议的服务网格链接器也可以实现这一点,但在不同的网络层上。
lh80um4z2#
这里的答案似乎已经过时了。截至2021-04-28,至少以下组件似乎能够为Kubernetes提供加密的网络层:
(the以上列表是通过咨询各自的项目主页获得的)
ozxc1zmp3#
Kubernetes是否默认加密Pod和节点之间的流量?
Kubernetes不加密任何流量。
有一些像linkerd这样的服务网允许您在http服务之间轻松引入https通信。
您将在每个节点上运行服务网格的示例,并且所有服务都将与服务网格通信。服务网格内的通信将被加密。
示例:
您的服务-http-> localhost到servicemesh节点- https-> remoteNode -http-> localhost到远程服务。
当您在与服务相同的pod中运行服务网格节点时,localhost通信将在一个其他pod无法访问的私有虚拟网络设备上运行。
7qhs6swi4#
不可以,kubernetes默认情况下不加密流量
我没有亲自尝试过,但是Calico software defined network上的描述似乎与您所描述的内容一致,并且已经是kubernetes friendly的额外好处
我以为Calico做了本地加密,但基于this GitHub issue,他们似乎建议使用IPSEC这样的解决方案来加密,就像您使用传统主机一样