使用third-party-jwt

为了通过Istio控制平面进行身份验证,Istio代理将使用服务帐户令牌。Kubernetes支持以下两种形式的令牌:

  • third-part令牌,该令牌具有一定范围的受众和有效期。

  • 没有过期且已安装到所有pod中的first-part令牌。

由于first-part令牌的属性安全性较低,因此Istio将默认使用third-part令牌。但是,并非在所有Kubernetes平台上都启用此功能。

在自有k8s集群上需要为apiserver添加以下配置

- --service-account-api-audiences=api,istio-ca
- --service-account-issuer=kubernetes.default.svc
- --service-account-signing-key-file=/etc/kubernetes/pki/sa.key

如果您istioctl要安装,则会自动检测到支持。也可以手动完成,并通过--set values.global.jwtPolicy=third-party-jwt或配置--set values.global.jwtPolicy=first-party-jwt。

查看是否功能已经开启成功

$ kubectl get --raw /api/v1 | jq '.resources[] | select(.name | index("serviceaccounts/token"))'
{
    "name": "serviceaccounts/token",
    "singularName": "",
    "namespaced": true,
    "group": "authentication.k8s.io",
    "version": "v1",
    "kind": "TokenRequest",
    "verbs": [
        "create"
    ]
}

Last updated