マイクロサービスアーキテクチャにおけるアプリケーションDDoSの緩和戦略が、Netflixのブログで公開された。この種の攻撃を引き起こす要求の特定方法、それらを同社のRepulsive GrizzlyやCloudy Krakenなどオープンソースのフレームワークを使ってテストする方法、攻撃からシステムを保護するベストプラクティスなどについて、それらの概要が紹介されている。
Netflixのアプリケーションセキュリティ担当アンバサダであるScott Behrens氏と、プロダクトおよびアプリケーションのセキュリティ担当リーダのBryan Payne氏がまず指摘したのは、マイクロサービスアーキテクチャは特にDDoS攻撃の影響を受けやすい、という点だ。API呼び出しが高価であるため、サービスに関連して複数のネットワークホップが発生し、それがシステム自体の攻撃効果を高める結果になるためだ。
“マイクロサービス・アーキテクチャでは1回の要求が、複雑な中間層やバックエンドサービスで数万回の呼び出しを生成する可能性があります”
このようなアプリケーションDDoS攻撃に対処する上で最初に課題となるのは、それを識別することだ。ユーザからの正当なAPIコールのように見えるものを、エッジにおいて、内部的リソースの大量消費を引き起こす原因として検出するにはどうすればよいのか?
概説された戦略の第1は、API呼び出しの所要時間を確認することだ。フロント層では誤認をもたらす可能性があるため、バックエンドサービスでのリクエスト時間を監視する方が都合がよい。これらの要求をリバースエンジニアリングすることで、どの元APIの呼び出しがそれを引き起こす可能性があるのかを特定することが可能になる。
対象とするAPI呼び出しが確認できれば、次のプロセスは、その要求自体を確認して、それがより高価になる方法を見つけ出すことだ。資料では検索範囲パラメータが例としてあげられている。これを大きく設定することで、より大量の結果セットを生成することが可能になる。適切な要求かどうかを識別するための有用な指標としては、レート制限や例外などのエラーインジケータの使用や、単純にレイテンシの増加が考えられる。
このようなリクエストが特定されたならば、アプリケーション層のDDoSテストフレームワークであるRepulsive Grizzlyを使用して、実際にそれを行なうことが推奨される。これは識別ツールではないが、テスト対象のシステムに対してこれらの要求をトリガすることにより、テストプロセスを効率的に実施する手段を提供するものだ。
さらに氏らは、オープンソースのAWSテストツールであるCloudy Krakenを導入して、世界規模でのテストの実施に利用している。このテストは、スケーラブルなクロスリージョンのAWSインスタンス群を管理し、それぞれでRepulsive Grizzlyのテストスイートを実行することによって行われる。テストが並列的に実行されることを保証するための時間同期機能も提供する。
テストによってリクエストの特定と検証が完了したならば、次のような緩和戦略が考えられる。
- マイクロサービス間の依存関係を最小化するアーキテクチャの構築。サービスがフェールした場合、他のサービスを棄損せず、 独立してフェールすることができれば理想的だ。
- サービスキューとサービス要求の仕組みの理解。例えば、バッチサイズやリクエストオブジェクトに制限を設ける。
- バックエンドサービスからWebアプリケーションファイアウォールに対するフィードバックループの構築。これによって、エッジでは特定することのできない、API呼び出しによるダウンストリームでのリソース利用に関する追加的情報が取得可能になる。
- キャッシュミスの監視。あまりに多い場合、キャッシュが正しく構成されていない可能性がある。
- サーキットブレーカやタイムアウトといった、さまざまなレジリエンスパターンをクライアントで活用する。
オンラインで公開されているブログ全文では、本テーマに関する事例研究や、さらに詳細な分析が行なわれている。
この記事を評価
- 編集者評
- 編集長アクション