为什么 Kubernetes 中的 pods 正在自动挂载服务帐户密码?

Why the pods in Kubernetes are automounting the service accounts secret?

需要了解为什么 pods 正在自动挂载服务帐户密码。

如果我们禁用服务帐户的自动挂载,这是否会影响我们的应用程序的任何操作,该应用程序已经在 pod 规范部分指定了服务帐户,但服务帐户的自动挂载未被禁用。

linked documentation:

中解释了如何禁用服务帐户的自动挂载

In version 1.6+, you can opt out of automounting API credentials for a service account by setting automountServiceAccountToken: false on the service account.

In version 1.6+, you can also opt out of automounting API credentials for a particular pod.

还有一些建议的解决方案可以缓解安全问题:


If we disable the automout of service account, will this affect any operation of our application which is already have service account specified in the pod spec part

如果您禁用 SA 机密的自动挂载,Pod 将无法访问 K8s API 服务器或执行任何其他需要作为服务帐户进行身份验证的操作。很难说这是否会影响您的工作量,只有您自己知道。仅与其他用户定义的服务通信的 Web 服务器或工作 Pod 可能在没有 SA 访问权限的情况下也能正常工作,但如果他们想要,例如要从应用程序 Pod 中生成 K8s 作业,他们需要 SA。


But would like to understand why the secrete of the Service account getting mounted to the pods eventhough it's a security escalation.

关键似乎是,正如计算机安全中经常出现的那样,我们需要权衡便利性和安全性。自动将 SA 秘密安装到 Pod 中可以轻松(=> 方便)使用 K8s API。默认情况下禁用此功能更安全但也不太方便,因为您需要明确标记那些需要访问 K8s API 的 Pods。这是否是一个太大的负担在很大程度上取决于工作量,并且可能没有适合每个人的默认答案。


Why was it not changed to the more secure default?

已回答 here:

disabling by default is not backwards compatible, so is not a realistic option until (if) a v2 Pod API is made

here

I'm not saying that it's unreasonable, just that it's going to be a hard pill to swallow for GA distributions of Kubernetes. I could see this happening in the v2 pod API.