Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 多主机K8s群集的推荐cert策略是什么?_Kubernetes_Kubernetes Security - Fatal编程技术网

Kubernetes 多主机K8s群集的推荐cert策略是什么?

Kubernetes 多主机K8s群集的推荐cert策略是什么?,kubernetes,kubernetes-security,Kubernetes,Kubernetes Security,多主机K8s群集部署在每个服务、每个控制器节点上使用唯一证书是否不典型?我见过的大多数指南都会为每个服务(API、控制器、调度器)生成唯一的证书,然后将这些证书用于每个控制器节点上的同名服务 Kubernetes是否禁止或阻止每个服务、每个节点的唯一证书?使用DNS/IP SAN,应该仍然可以让每个服务响应一个单一的群集地址,所以我很好奇这个决定是为了更简单的指令,还是我缺少了一些要求 多谢各位 Kubernetes是否不允许或不鼓励每个服务的唯一证书 节点?有了DNS/IP SAN,应该还可以

多主机K8s群集部署在每个服务、每个控制器节点上使用唯一证书是否不典型?我见过的大多数指南都会为每个服务(API、控制器、调度器)生成唯一的证书,然后将这些证书用于每个控制器节点上的同名服务

Kubernetes是否禁止或阻止每个服务、每个节点的唯一证书?使用DNS/IP SAN,应该仍然可以让每个服务响应一个单一的群集地址,所以我很好奇这个决定是为了更简单的指令,还是我缺少了一些要求

多谢各位

Kubernetes是否不允许或不鼓励每个服务的唯一证书 节点?有了DNS/IP SAN,应该还可以保留每个SAN 服务响应一个单一的集群地址,所以我很好奇 决定是为了更简单的指示,或者如果它是 实际上我缺少一些要求

当我们运行Kubernetes cluster/s时,我们可以拥有数千个私钥和公钥,而不同的组件通常不知道它们是否有效。因此,证书颁发机构是一个第三方实体,它告诉感兴趣的元素“这个证书是可信的”

:

每个Kubernetes群集都有一个群集根证书颁发机构 (CA)。CA通常由集群组件用于验证 API服务器的证书,由API服务器验证kubelet客户端 证书等

这实际上表明,您可以在每个集群中拥有不同的证书,但这不是一个要求,您可以想象CA的许多不同组合。您可以拥有一个负责签名所有密钥的全局CA,或者每个集群拥有一个CA,一个用于内部通信,一个用于外部通信,等等

任何提供由群集CA签名的客户端证书的请求都将被视为已验证。在该身份验证过程中,应该可以从该证书的公共名称字段(CN)获取用户名,并从组织字段获取组。因此答案是肯定的,您可以对集群中的每个服务、节点或任何组件使用不同的证书,除非它由集群中的证书颁发机构签名

为具有多个主机(HA群集)的主机创建证书时,必须确保负载平衡器IP和DNS名称是该证书的一部分。否则,每当客户机试图通过LB通过API服务器进行通信时,客户机都会抱怨,因为证书上的公共名称与它想要与之通信的名称不同

更进一步说,每个核心集群组件除了主证书之外,还有自己的客户机证书,因为每个组件都有不同的访问级别,使用不同的通用名称访问集群。 值得注意的是,kubelet有一个稍微不同的证书名称,因为每个kubelet都有一个不同的标识(运行kubelet的主机名将是证书的一部分),它与其他功能(如NodeAuthorizer和节点限制准入插件)相关。从最低特权的角度来看,这些特性很重要——它们限制了kubelet对apiserver的无限制访问和交互。 使用此功能,您可以将kubelet限制为只能修改其节点资源而不是整个集群,因为它只能读取其节点机密,而不是集群中的所有机密,等等

编辑-以下评论讨论:


假设您正在就为什么更多的人不使用多个证书征求意见,我认为这是因为它并没有真正提高重大问题的安全性。因为证书没有CA重要——CA是一个可信的保证人,实体可以安全地相互交谈。因此,您可以创建多个CA,这与其说是安全性,不如说是HA方法。当然,如果您有一个受信任的CA,您不需要更多的证书种类,因为通过增加证书种类的数量实际上无法实现任何目标

我很感激你的回答,但这不是有效性的问题。相反,这是一个问题,例如,有三个控制器节点,都运行调度程序服务,都使用相同的证书/密钥对,而不是每个调度程序服务、每个节点都有一个唯一的证书/密钥对,这是否是好的、可接受的,甚至是允许的做法。我知道怎么做,但我不确定你是否应该这样做。此外,kubelets略有不同,因为它是一个拥有每服务证书/密钥对的地方,因为它们在上游通信。至少根据Kelsey的K8s,答案是肯定的,除非集群中的证书颁发机构对每个服务、节点或集群中的任何组件进行签名,否则您可以使用不同的证书。非常感谢。我意识到我能做到,但似乎大多数人因为某种原因不能做到。我想知道为什么越来越多的人似乎不喜欢这种方法,而不是所有节点上每个服务都有一个证书/密钥对。Aurelius,我希望你能给出一个顶级答案,这样我就可以检查它了。我认为这可能是最有意义的一条。阿库兹,谢谢-我已经删除了评论并将其添加到了答案中。