猿问

如何在 istio mTLS 设置中执行 GRPC 身份验证?

我有一堆GRPC微服务,它们使用自签名证书。我将身份验证信息添加到 GRPC 通道,然后用于标识终结点并提供正确的服务。

现在我想迁移到 Istio mTLS。

在第一阶段,我让 Istio 绕过所有 GRPC 连接,我的服务可以像现在一样工作。

在第二阶段,我想将TLS移交给Istio,但我被困在如何将身份验证信息传递给GRPC?

你们在 Istio mTLS 设置中如何处理身份验证?

GRPC 可以支持其他身份验证机制 是否有人用它来将 Istio 身份验证信息注入 GRPC?有关如何在设置中实现此目的的任何其他建议

我正在使用go-lang,以防万一这可以用于提供任何其他信息。

谢谢


不负相思意
浏览 112回答 2
2回答

守候你守候我

执行此操作的一种方法是使用 ,这样您就不必向服务添加证书,因为 Pod 中的容器将 TLS 终止任何传入连接。grpc.WithInsecure()istio-proxy客户端:conn, _ := grpc.Dial("localhost:50051", grpc.WithInsecure())服务器端:s := grpc.NewServer()lis, _ := net.Listen("tcp", "localhost:50051")// error handling omitteds.Serve(lis)如果仍需要将 TLS 用于本地部署等,则只需使用配置选项即可指定此内容,例如:var conn *grpc.ClientConnvar err error// error handling omitted do not copy pasteif ( config.IstioEnabled ) {    conn, err = grpc.Dial("localhost:50051", grpc.WithInsecure())} else {    creds, _ := credentials.NewClientTLSFromFile(certFile, "")    conn, err = grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))}

aluckdog

我通过为我的请求生成 JWT 令牌来解决此问题,并使用拦截器注入令牌。从GRPC拦截器中获取灵感,用于jwt授权
随时随地看视频慕课网APP

相关分类

Go
我要回答