大规模安全策略性能测试

安全策略对请求延迟的影响。

2020 年 9 月 15 日 | 作者:Michael Eizaguirre - Google,Yangmin Zhu - Google,Carolyn Hu - Google

概述

Istio 拥有广泛的安全策略,可以轻松配置到服务系统中。随着应用策略数量的增加,了解系统延迟、内存使用率和 CPU 使用率之间的关系非常重要。

这篇博文介绍了常见的安全策略用例,以及安全策略的数量或特定规则的数量如何影响请求的整体延迟。

设置

安全策略种类繁多,并且策略组合更多。我们将介绍 6 个最常用的测试用例。

以下测试用例在以下环境中运行:一个 Fortio 客户端向 Fortio 服务器发送请求,基线是没有部署 Envoy sidecar 的情况。以下数据是使用 Istio 性能基准测试工具 收集的。

Environment setup

在这些测试用例中,请求要么不匹配任何规则,要么仅匹配安全策略中的最后一个规则。这确保了 RBAC 过滤器应用于所有策略规则,并且在查看所有策略之前永远不会匹配策略规则。尽管这并不一定会在您自己的系统中发生,但这种策略设置提供了每个测试用例最差性能的数据。

测试用例

  1. 双向 TLS STRICT 与明文。

  2. 一个具有可变数量的 Principal 规则的授权策略以及一个 PeerAuthentication 策略。Principal 规则取决于 PeerAuthentication 策略是否应用于系统。

  3. 一个具有可变数量的 requestPrincipal 规则的授权策略以及一个 RequestAuthentication 策略。requestPrincipal 取决于 RequestAuthentication 策略是否应用于系统。

  4. 一个具有可变数量的 pathssourceIP 规则的授权策略。

  5. 可变数量的授权策略,每个策略包含单个路径或 sourceIP 规则。

  6. 一个具有可变数量的 JWTRules 规则的 RequestAuthentication 策略。

数据

每个测试的 y 轴是毫秒级的延迟,x 轴是并发连接数。每个图表的 x 轴包含 3 个数据点,分别表示小负载 (qps=100, conn=8)、中负载 (qps=500, conn=32) 和大负载 (qps=1000, conn=64)。

MTLS vs plaintext
在较低负载下,MTLS 模式 STRICT 与明文之间的延迟差异非常小。随着 `qps` 和 `conn` 的增加,使用 MTLS STRICT 的请求延迟也会增加。与从没有 sidecar 到明文中具有 sidecar 的延迟增加相比,较大负载下延迟的额外增加是微不足道的。

结论

如果您有兴趣创建自己的大规模安全策略并对其运行性能测试,请参阅 性能基准测试工具自述文件

如果您有兴趣阅读更多关于安全策略测试的信息,请参阅 我们的设计文档。如果您还没有访问权限,您可以 加入 Istio 团队驱动器

分享此文章