`secret` 如何保护 Kubernetes 中的敏感信息

how could `secret` protect sensitive information in Kubernetes

我刚接触 Kubernetes。

我对secret的理解是,它通过base64对信息进行编码。从我看到的资源来看,据说 secret 可以保护敏感信息。我不明白这个。

除了用 base64 编码信息外,我看不出 secretconfigMap 之间有什么真正的区别。我们可以如此轻松地解码 base64 编码的信息。也就是说完全没有保护...

我的理解有误吗?

保护 Secret 的是它在 kubernetes 中是一种独特的资源类型,因此可能会受到与 ConfigMap 不同的 RBAC 策略的约束。

如果您当前能够读取集群中的 Secret,那是因为您的 ClusterRoleBinding(或 RoleBinding)具有专门授予对这些资源的访问权限的规则。这可能是由于您从其中一个主节点通过其 "unauthenticated" 端口访问集群,或者是由于 [Cluster]RoleBinding 将您的 Subject 附加到 cluster-admin,这在 hello-world 情况下可能很常见,但我猜在生产集群设置中不太常见。

这是迂腐的答案,但是,真正 保护 Secret 中包含的秘密更加棘手,因为它们通常暴露于 Pod通过环境注入或卷安装。这意味着任何人 exec 访问 Pod 的人都可以很容易地泄露秘密值,所以如果秘密非常重要,并且必须对团队保密,你需要撤销 exec 也可以访问您的 Pod。中间立场可能是允许团队访问他们自己的 Namespace 中的 Secret,但禁止其他 Namespace 访问。它是安全的,所以几乎没有尽头的排列和特殊情况。