操作场景
电商网站业务团队希望限制访问生产环境(base namespace)下所有服务间的访问必须开启双向认证 mTLS,以防御中间人攻击。
操作步骤
服务间通信的 mTLS 模式默认为 PERMISSIVE 宽容模式,即服务间的通信既可以使用 mTLS 加密,也可以使用 plaintext 明文连接。
此时在容器服务控制台登录 client 的 istio-proxy 容器,使用明文连接对生产环境(base namespace)product 服务发起请求:![](https://qcloudimg.tencent-cloud.cn/image/document/7391f64dbb546431c6a562331d70986a.png)
curl http://product.base.svc.cluster.local:7000/product
,此时明文连接也可正常访问 product 服务。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/7391f64dbb546431c6a562331d70986a.png)
明文连接访问成功如下图所示:
![明文连接访问成功](https://qcloudimg.tencent-cloud.cn/image/document/0ad3cba3332884bfefbb567873dd6f63.png)
![明文连接访问成功](https://qcloudimg.tencent-cloud.cn/image/document/0ad3cba3332884bfefbb567873dd6f63.png)
限制 base namespace 下的服务间通信必须采用 mTLS 模式可以通过 PeerAuthentication 策略设置 mTLS 模式为 STRICT。如下图所示:
![配置 mTLS 模式为 strict](https://qcloudimg.tencent-cloud.cn/image/document/69ada2f60ba1b17ef0e6b096f1fda240.png)
![配置 mTLS 模式为 strict](https://qcloudimg.tencent-cloud.cn/image/document/69ada2f60ba1b17ef0e6b096f1fda240.png)
也可以通过 kubectl 提交 YAML 文件至主集群完成配置:
apiVersion: security.istio.io/v1beta1kind: PeerAuthenticationmetadata:name: base-strictnamespace: basespec:mtls:mode: STRICT
配置完成后,在容器服务控制台登录 client 的 istio-proxy 容器,使用明文连接对生产环境(base namespace)product 服务发起请求:![明文连接访问失败](https://qcloudimg.tencent-cloud.cn/image/document/155dff8f44aebb43d8e6002a06132f40.png)
curl http://product.base.svc.cluster.local:7000/product
,此时明文连接访问失败。如下图所示:
![明文连接访问失败](https://qcloudimg.tencent-cloud.cn/image/document/155dff8f44aebb43d8e6002a06132f40.png)