什么是 TLS,我们为什么需要它?

What is TLS and Why do we need it?

什么是 TLS 以及我们为什么需要它。有人可以向我解释一下它在 Kubernetes 中扮演什么角色吗? 如果我不使用它会怎样?谁能举个例子给我解释一下?

感谢您的宝贵时间。

什么是 TLS,我们为什么需要它?

TLS definition from wikipedia:

The TLS protocol aims primarily to provide privacy and data integrity between two or more communicating computer applications [...] TLS supports many different methods for exchanging keys, encrypting data, and authenticating message integrity.


它在Kubernetes中扮演什么角色?

k8s控制平面使用它来加密传输中的数据。如果数据在客户端和服务器之间移动时通信被拦截,传输中加密可以保护您的数据。在 k8s 的情况下,例如kubelet 或 controller manager 通常是客户端,api-server 被认为是服务器。


如果我不使用它会怎样?

我不确定你是否可以这样做(不使用它)。我认为它的使用是由 k8s 组件强制执行的。您所能做的就是忽略证书验证。

但是现在让我们想象一下,您设法 bootstrap 一个没有 tls 的集群,并且现在所有通信都是基于明文的(这意味着没有加密)。现在,如果我设法拦截通信,我(恶意行为者)就可以看到您向集群发送的内容。而且由于没有强制数据完整性的机制,我可以将此数据更改为我想要的任何内容并将其传递出去。您将无法检查您是在与集群交换数据还是在与我交换数据,以及我是否在更改数据、添加恶意代码或其他。

此外,k8s 组件使用 tls 证书进行身份验证。这意味着例如为了让 kubelet 加入集群,它需要证明它被允许这样做,方法是显示它有一个有效的证书,由已知的授权机构签名(这通常意味着自签名)。您将无法验证 kubelet 是否属于您,这不是我加入您集群的恶意 kubelet。