ブログ

Web アプリケーション ファイアウォールによるセキュリティとパフォーマンスのバランス

ロリ・マクヴィッティ サムネイル
ロリ・マクヴィッティ
2018年3月26日公開
  • セキュリティは重要ですが、パフォーマンスも重要です。
  • 半数以上 (57%) の組織が、クラウドとオンプレミスのアプリを保護するために Web アプリケーション ファイアウォールを使用しています (State of Application Delivery 2018)
  • アウトバウンド応答をスキャンすることは、進行中の侵害を検出し、それを阻止する最後の機会の 1 つです。 
  • 「良いものでも、多すぎると良くない」 セキュリティとパフォーマンスのバランスを慎重に検討して、両方を最適化してください。 

私たちも(皆と同じように)デジタル ビジネスの継続的な成功にはパフォーマンスがいかに重要であるかを理解しています。 ダイヤルアップ接続や何時間もかかるダウンロードに慣れた私たちは、パフォーマンスに関しては寛容になる傾向がありますが、デジタルネイティブの子供たちはそれほど寛容ではありません。 ユーザーは即時の応答と素早いダウンロードを期待しています。

私たちの焦りの証拠は数字に表れています。パフォーマンスが低いという理由で、80% 以上のユーザーがアプリケーションを削除しています。 私たちの中には、10 人中 3 人が、アプリが超高速であるという特権のためにお金を払うことをいとわない人もいます。

しかし、どの世代の技術であっても、私たちは満足しにくいのです。 アプリを高速化している間は、セキュリティを無視しないでください。 万一、アプリを不正使用し、弊社のデータが侵害された場合、弊社はアプリを削除する以上の措置を講じます。

したがって、パフォーマンスの要求とセキュリティの必要性のバランスを取るのは、IT プロフェッショナル、特にセキュリティに携わる IT プロフェッショナルに委ねられています。 アプリは高速かつ安全でなければなりません。

半数以上の組織がより安全なアプリを実現する方法の 1 つは、他のアプリケーション サービスの中でもWeb アプリケーション ファイアウォール(WAF) を使用して、アプリケーションを攻撃から保護することです。 彼らはこれを 2 つの方法で行います。

まず、受信リクエストをスキャンして悪意のあるアクティビティを検出します。 次に、送信応答を検査します。 これらのセキュリティ戦術を常に適用している組織が、アプリケーション攻撃に耐えることに最も自信を持っている組織の 1 つであることは驚くことではありません。

WAF を使用すると、リクエストと応答のあらゆる部分を検査できます。 コンテンツを解析、分解、ねじ曲げ、変更することができます。

しかし、できるからといって、そうすべきだというわけではありません。

セキュリティは無料ではありません。 攻撃や侵害の証拠を見つけるために必要な注意を払ってアプリケーショントラフィックを検査するには、CPU サイクルとメモリが必要です。

そのため、セキュリティとパフォーマンスのバランスを取ることが重要です。 スキャンやスクラブに費やす余分なマイクロ秒ごとに、ユーザーはその応答を待つ必要のある余分なマイクロ秒が発生します。

そしてそれらは加算されます。

結局のところ、パケットがネットワークを通過して戻ってくるまでに数マイクロ秒かかるというのは物理的な問題です。 接続を確立するにはさらに数マイクロ秒かかります。 処理すべきものがあといくつかあります…お分かりでしょう。 何をするにも時間がかかります。時間がかかればかかるほど、ユーザーのイライラは増していきます。

この紛争に関しては、伝統的に、大切なものを無駄にしてしまう人たちがいる。 パフォーマンスが許容できるレベルになるまでセキュリティをオフにします。 しかし、それは正しい答えではありません。 セキュリティのニーズとパフォーマンスの要求の両方を満たすことができるバランスがあります。

リクエストに応じて、プロトコル レベルの解析と検証を自由に実行できます。 ペイロードを検査し、攻撃の兆候を探します。 まず署名ベースのスキャンを実行し、次にテキストベースの比較を実行します。 可能な場合は、シグネチャベースのスキャンにより、解析や比較を行う必要がないため、セキュリティのパフォーマンスが向上します。 単純に比較するだけで、非常に高速なプロセスです。 

応答する際には、内容を解析して詳細に調べたいという誘惑に負けないでください。 ここでは、JSON が正しくフォーマットされていること、または XML が適切なスキーマに従っていることについて、開発者とある程度の信頼関係を築く必要があります。 現実を直視しましょう。ここでプロトコルまたはフォーマットのエラーが発生すると、ユーザーはそれを知ることになります。 これは開発者の懸念事項であり、一般的にはセキュリティ上のリスクではありません。

セキュリティ上のリスクとなるのは、クレジットカード番号や口座番号、社会保障番号、電子メールアドレスなどの機密データが含まれていることです。 明確に定義されたパターンを持つ数値とデータ。これらは、データ内ですぐにスキャンして隠すことができます。 署名ベースのスキャンと同様に、ここではパターン マッチングを実行しており、セキュリティ サービスはこれを可能な限り高速に実行することに非常に長けています。

コンテンツの長さも、可能であれば確認しておきたいものです。 注目度の高いエクスプロイトの多くは、返されたコンテンツの量だけで識別できました。 特定のリクエストが約 1K のデータのみを返す必要があることがわかっている場合、4K の応答はおそらくどこかで警鐘を鳴らすはずです。 これは、データ レコードを解析してカウントするよりもはるかに時間がかからない簡単なチェックです。

経験則としては、リクエストに対して常にセキュリティ ルール ゼロに従い、ユーザー入力がある場合はできる限りすべてをチェックすることが推奨されます。 アウトバウンドでは、進行中の侵害の兆候を探し、機密データを難読化しますが、データ形式やスキーマのコンプライアンスについて心配する時間を費やす必要はありません。 応答が正しくフォーマットされているかどうかについては開発者に任せましょう。 それは彼らの管轄であり、あなたの管轄ではありません。

セキュリティとパフォーマンスは、どちらかを犠牲にしない限り、バランスをとることができます。 そしてそれは両方向を意味します。 パフォーマンスのためにセキュリティを犠牲にしないでください。ただし、(不必要な可能性のある) セキュリティのためにパフォーマンスを犠牲にしないでください。

セキュリティを戦略的に使用して悪用を防ぎ、侵害を検出すれば、ユーザーを満足させ、データとアプリケーションを安全に保つために必要なパフォーマンスとのバランスを実現できます。