大规模安全策略性能测试
安全策略对请求延迟的影响。
概述
Istio 拥有广泛的安全策略,可以轻松配置到服务系统中。随着应用策略数量的增加,了解系统延迟、内存使用率和 CPU 使用率之间的关系非常重要。
这篇博文介绍了常见的安全策略用例,以及安全策略的数量或特定规则的数量如何影响请求的整体延迟。
设置
安全策略种类繁多,并且策略组合更多。我们将介绍 6 个最常用的测试用例。
以下测试用例在以下环境中运行:一个 Fortio 客户端向 Fortio 服务器发送请求,基线是没有部署 Envoy sidecar 的情况。以下数据是使用 Istio 性能基准测试工具 收集的。
在这些测试用例中,请求要么不匹配任何规则,要么仅匹配安全策略中的最后一个规则。这确保了 RBAC 过滤器应用于所有策略规则,并且在查看所有策略之前永远不会匹配策略规则。尽管这并不一定会在您自己的系统中发生,但这种策略设置提供了每个测试用例最差性能的数据。
测试用例
双向 TLS STRICT 与明文。
一个具有可变数量的 Principal 规则的授权策略以及一个
PeerAuthentication
策略。Principal 规则取决于PeerAuthentication
策略是否应用于系统。一个具有可变数量的
requestPrincipal
规则的授权策略以及一个RequestAuthentication
策略。requestPrincipal
取决于RequestAuthentication
策略是否应用于系统。一个具有可变数量的
paths
与sourceIP
规则的授权策略。可变数量的授权策略,每个策略包含单个路径或
sourceIP
规则。一个具有可变数量的
JWTRules
规则的RequestAuthentication
策略。
数据
每个测试的 y 轴是毫秒级的延迟,x 轴是并发连接数。每个图表的 x 轴包含 3 个数据点,分别表示小负载 (qps=100, conn=8)、中负载 (qps=500, conn=32) 和大负载 (qps=1000, conn=64)。
对于具有 10 个与 1000 个 Principal 规则的授权策略,与没有策略相比,10 个 Principal 规则的延迟增加大于 1000 个 Principal 与 10 个 Principal 相比的延迟增加。
requestPrincipal
规则的授权策略,与没有策略相比,10 个 requestPrincipal
规则的延迟增加几乎与 1000 个 requestPrincipal
与 10 个 requestPrincipal
相比的延迟增加相同。sourceIP
规则的单个 `AuthZ` 策略的延迟增加与具有 1000 个 sourceIP
规则的单个 `AuthZ` 策略与具有 sidecar 和没有策略的系统相比的延迟增加不成正比。sourceIP
规则的延迟增加略大于路径规则的延迟增加。sourceIP
规则类似。sourceIP
规则的延迟。结论
一般来说,添加安全策略不会给系统带来相对较高的开销。增加延迟最多的策略包括
具有
JWTRules
规则的授权策略。具有
requestPrincipal
规则的授权策略。具有 Principal 规则的授权策略。
在较低负载(请求的 qps 和 conn 较低)下,大多数策略的延迟差异很小。
即使策略很大,Envoy 代理 sidecar 也会比大多数策略增加更多的延迟。
极大策略的延迟增加与添加 Envoy 代理 sidecar 与没有 sidecar 相比的延迟增加相对相似。
两个不同的测试确定
sourceIP
规则略慢于路径规则。
如果您有兴趣创建自己的大规模安全策略并对其运行性能测试,请参阅 性能基准测试工具自述文件。
如果您有兴趣阅读更多关于安全策略测试的信息,请参阅 我们的设计文档。如果您还没有访问权限,您可以 加入 Istio 团队驱动器。