Istio 1.3 Secret 服务发现的更改

利用 Kubernetes 可信任的 JWT 来更安全地为工作负载实例颁发证书。

Sep 10, 2019 | By Phillip Quy Le - Google

在 Istio 1.3 中,我们正在利用 Kubernetes 的改进功能来更安全地为工作负载实例颁发证书。

当 Citadel 代理向 Citadel 发送证书签名请求以获取工作负载实例的证书时,它包含了 Kubernetes API 服务器颁发的代表工作负载实例的服务帐户的 JWT。如果 Citadel 可以对 JWT 进行身份验证,则提取为工作负载实例颁发证书所需的服务帐户名。

在 Kubernetes 1.12 之前,Kubernetes API 服务器的 JWT 存在以下问题:

  1. 令牌没有重要字段来限制其使用范围,例如 audexp。有关更多信息,请参见绑定服务令牌
  2. 令牌安装在所有 Pod 上,无法退出。请参见服务帐户令牌数量了解其机制。

Kubernetes 1.12 引入了 可信任 JWT 来解决这些问题。但是,直到 Kubernetes 1.13 才支持 aud 字段与 API 服务器受众具有不同的值。为了更好地保护网格,Istio 1.3 仅支持 可信任 JWT,并且在启用 SDS 时要求 aud 字段的值为 istio-ca。在启用 SDS 的情况下将 Istio 部署升级到 1.3 之前,请验证您是否使用了 Kubernetes 1.13 或更高版本。

根据您选择的平台进行以下考虑: