为什么 kubernetes-vault init 容器需要解包控制器提供的秘密 ID?

Why does the kubernetes-vault init container need to unwrap the secret id supplied by the controller?

kubernetes-vault 存储库的图表中,您可以看到 init 容器获取包装的 secret_id 并解包并通过 Vault 兑换 secret_id 代币。为什么 kubernetes-vault 控制器不自己进行解包和赎回,而是简单地将令牌传输到初始容器?

https://github.com/Boostport/kubernetes-vault/raw/master/flow-diagram.png

注:kubernetes-vault项目是我公司维护的开源项目。

init 容器解开秘密的原因是 2 倍:

  • 只有init容器和它所在的pod才能看到最终的secret。这意味着 kubernetes-vault 控制器不知道令牌是什么,如果遭到破坏,也无法将其用于恶意目的。

  • 如果有人截获包装的令牌并将其解包,init 容器将无法解包令牌,这是一个很好的信号,表明集群已受到威胁。如果解包后的令牌被发送到init容器,它可以被拦截并且不可能对此发出警报。