【发布时间】:2020-03-17 00:02:20
【问题描述】:
在我的 k8s 集群中,我有两个部署:一个用于使用给定的密钥对生成 JWT,另一个用于使用相同的密钥对验证 JWT。
两个部署都使用相同的 k8s 密钥,其中包含密钥/对。
当我想撤销/更新该密钥对时,如何在部署之间创建一致性?实际上,我希望所有生成的 JWT 都将得到验证,尽管有两个不同的微服务,并且不一定会同时更新两个微服务的所有 pod 以使用新密钥。
如何防止此类验证失败的误报?
【问题讨论】:
-
为什么不对两者使用相同的秘密?
-
(确实需要在同一个命名空间中运行)
-
我实际上使用了相同的秘密。更新秘密后,我会对两个部署进行部署更新。但是来自两个部署的 pod 不同步 - 然后理论上用户可以从未更新的 pod 中获取 jwt,而不是当他去验证它时 - K8S 可能会将他的请求重定向到“新” pod(带有新秘密)-他的请求将失败。我该如何预防?
-
@YosiKarl 密钥轮换通常以两端(或至少接收端)同时支持两个版本一段时间的方式实现。
-
我同意,但是如何解决其中一个使用新密钥的 pod 生成 JWT 并且以下请求(包含 JWT)被发送到其中一个使用旧密钥的 pod?
标签: kubernetes