大規模セキュリティポリシーのパフォーマンス テスト

リクエストのレイテンシに対するセキュリティポリシーの影響。

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

概要

Istioは、サービスシステムに簡単に構成できる幅広いセキュリティポリシーを提供しています。適用されるポリシーの数が増加するにつれて、システムのレイテンシ、メモリ使用量、およびCPU使用量の関係を理解することが重要です。

このブログ記事では、一般的なセキュリティポリシーのユースケースと、セキュリティポリシーの数またはセキュリティポリシー内の特定のルールの数がリクエストの全体的なレイテンシにどのように影響するかについて説明します。

セットアップ

幅広いセキュリティポリシーと、それらのポリシーのさらに多くの組み合わせがあります。最も一般的に使用される6つのテストケースについて説明します。

以下のテストケースは、Envoyサイドカーがデプロイされていないベースラインで、FortioクライアントがFortioサーバーにリクエストを送信する環境で実行されます。以下のデータは、Istio パフォーマンス ベンチマーク ツールを使用して収集されました。

Environment setup

これらのテストケースでは、リクエストはルールに一致しないか、セキュリティポリシーの最後のルールにのみ一致します。これにより、RBACフィルターがすべてのポリシールールに適用され、すべてのポリシーを確認する前にポリシールールに一致することがなくなります。これは必ずしも独自のシステムで発生することではありませんが、このポリシー設定は、各テストケースの最悪のパフォーマンスのデータを提供します。

テストケース

  1. 相互TLS STRICTとプレーンテキストの比較。

  2. 可数のプリンシパルルールと`PeerAuthentication`ポリシーを持つ単一の認証ポリシー。プリンシパルルールは、システムに適用される`PeerAuthentication`ポリシーに依存します。

  3. 可数の`requestPrincipal`ルールと`RequestAuthentication`ポリシーを持つ単一の認証ポリシー。 `requestPrincipal`は、システムに適用される`RequestAuthentication`ポリシーに依存します。

  4. 可数の`paths`ルールと`sourceIP`ルールを持つ単一の認証ポリシー。

  5. 単一のパスルールまたは`sourceIP`ルールで構成される可数の認証ポリシー。

  6. 可数の`JWTRules`ルールを持つ単一の`RequestAuthentication`ポリシー。

データ

各テストのy軸はレイテンシ(ミリ秒)、x軸は同時接続数です。各グラフのx軸は、低負荷(qps=100、conn=8)、中負荷(qps=500、conn=32)、高負荷(qps=1000、conn=64)を表す3つのデータポイントで構成されています。

MTLS vs plaintext
MTLSモードSTRICTとプレーンテキストのレイテンシの差は、低負荷では非常に小さくなります。 `qps`と`conn`が増加すると、MTLS STRICTのリクエストのレイテンシが増加します。負荷が大きい場合のレイテンシの増加は、サイドカーがない場合からプレーンテキストでサイドカーがある場合の増加と比較して最小限です。

結論

独自の規模の大きなセキュリティポリシーを作成し、それらを使用してパフォーマンステストを実行することに興味がある場合は、パフォーマンスベンチマークツールのREADMEを参照してください。

セキュリティポリシーテストの詳細については、設計ドキュメントを参照してください。まだアクセス権がない場合は、Istioチームドライブに参加できます。

この記事を共有する