利用 Kubernetes 可信任的 JWT 来更安全地为工作负载实例颁发证书。
该博客文章是在 Istio 1.2 的版本下编写的,因此其中某些内容现在可能已过时。
在 Istio 1.3 中,我们正在利用 Kubernetes 的改进功能来更安全地为工作负载实例颁发证书。
当 Citadel 代理向 Citadel 发送证书签名请求以获取工作负载实例的证书时,它包含了 Kubernetes API 服务器颁发的代表工作负载实例的服务帐户的 JWT。如果 Citadel 可以对 JWT 进行身份验证,则提取为工作负载实例颁发证书所需的服务帐户名。
令牌没有重要字段来限制其使用范围,例如 aud 或 exp。有关更多信息,请参见绑定服务令牌。
令牌安装在所有 Pod 上,无法退出。请参见服务帐户令牌数量了解其机制。
Kubernetes 1.12 引入了 可信任 JWT 来解决这些问题。为了更好地保护网格,Istio 1.3 仅支持 可信任 JWT,并且在启用 SDS 时要求 aud 字段的值为 istio-ca。在启用 SDS 的情况下将 Istio 部署升级到 1.3 之前,请验证您是否使用了 Kubernetes 1.13 或更高版本。
您也可以参考 API 服务页面以获取最新的标志名称。
对于其他平台,请与您的提供商联系。如果您的提供商不支持可信任 JWT,则您将需要使用文件挂载的方式来传播 Istio 1.3 中的工作负载密钥和证书。