3

当 Kubernetes 创建秘密时,他们是否使用证书加密给定的用户名和密码?

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm
4

2 回答 2

1

Secret 存储在 etcd 中,etcd 是集群信息数据的高可用键值存储。数据是静态加密的。默认情况下,身份提供者用于保护 etcd 中的机密,它不提供加密。

引入了 EncryptionConfiguration 以使用本地管理的密钥在本地加密机密。使用本地管理的密钥加密机密可以防止 etcd 受损,但无法防止主机受损。由于加密密钥存储在主机上的 EncryptionConfig YAML 文件中,因此熟练的攻击者可以访问该文件并提取加密密钥。这是在 1.10 中引入的 kms 提供程序开发过程中的垫脚石,并且自 1.12 以来是 beta 版。信封加密会产生对单独密钥的依赖,而不是存储在 Kubernetes 中。在这种情况下,攻击者需要破坏 etcd、kubeapi-server 和第三方 KMS 提供程序来检索明文值,从而提供比本地存储的加密密钥更高级别的安全性。

您可以在此处找到更多信息: secrets, encryption

我希望它有所帮助。

于 2019-06-11T13:07:51.220 回答
1

这取决于,但是是的 - 它是静态加密的。机密存储在 etcd(用于存储所有 Kubernetes 对象的数据库)中,您可以启用将用于加密机密的密钥管理系统。您可以在文档中找到所有相关详细信息。

请注意,这不会保护未加密的清单文件。这些秘密仅在 etcd 上加密,但是当使用 kubectl 或 API 获取它们时,您将得到它们的解密。

如果您还希望加密清单文件,有多种很好的解决方案,例如 Sealed Secrets、Helm Secrets 或 Kamus。您可以在我的博客文章中了解更多关于它们的信息。

于 2019-06-04T17:21:18.910 回答