wow 使用 ServiceMesh(Istio 版本 1.6.5)的前提下,有这样一个业务场景: “开放部分能力给第三方合作伙伴,但限于安全方面的技术实力,出于风险控制,通过限制第三方的来源IP + 应用层的认证和授权机制来保障安全性” 为了达到上面的目标,之前是通过nginx的allow和deny来实现 “针对访问域名的ip名单控制”; 现在转到istio上后,这块实现起来没找到简单的途径; 从istio的官网了解的,大部分关于访问控制是在内部服务加密,认证,流控上做文章,只有一处讲到了在网关处通过限制ip来实现控制(https://istio.io/latest/docs/tasks/security/authorization/authz-ingress/),个人感觉很不方便。例如现在使用的是istio的默认网关,要是对它进行官网提供的操作,会影响到其他服务吧?为了不影响,就要再整一套网关。 不知道还有其他方式来实现这一目标吗? 在istio前面再加一层nginx代理来控制ip访问,不是明智的选择。
zackzhang 如果你用的是kubesphere微服务,那么你可以研究下它的ingress,用的是ingress-nginx,本质也是nginx做了一层代理,跟你的需求应该很贴近。 如果你想借助于istio的能力,那么你可以研究下istio-ingress/ingressgateway/egressgateway。
wow zackzhang 使用的是 kubesphere微服务。 你的第一个方案是 ingress-nginx,可行,但是对于我这边来讲,将面对 ingress-nginx + istio 混用带来的其他问题。 你的第二个方案是 “研究下istio-ingress/ingressgateway/egressgateway”,我建议你可以深入了解一下,这样的回答不疼不痒。