Web Application Firewall(WAF)は、公開Webサイトの前に配置されて悪意のあるトラフィックから保護する、AWSの新機能である。到着するHTTPリクエストを検査して、疑わしい挙動を示すパターンを探索する、リバースプロキシのような動作を行なう。正当なリクエストはWebアプリケーションで処理するために渡され、不正な要求はブロックする。アプリケーションを変更せずに、既存のアプリケーションにセキュリティ層を追加するようなツールだ。
WAFの動作は、疑わしいトラフィックの識別と管理を行なうポリシで設定することができる。Amazonではホワイトペーパ[PDF]を公開して、Webアプリケーションに最も多いセキュリティ欠陥であるOWASP Top 10を軽減するためのWAFの使用法を説明している。推奨されている方法の多くは、セキュリティトークンなどの必要な入力、あるいはSQLキーワードなどの制限された入力に対して、文字列一致を使用して入力されるリクエストのボディやヘッダをチェックするものだ。LambdaやCloudFrontをWAFと併用して、よりリッチな脅威検出を行なうことのできるものもある。
WAFは汎用的なツールであり、いくつかの攻撃カテゴリにおいては、他のものよりも成功率がかなり高い。例えばインジェクション攻撃は、アプリケーションの状況が分からなくても、リクエストを分析すれば比較的簡単に軽減できる。リクエストのクエリ文字列中のSQLキーワードをチェックして疑わしいアクティビティをブロックするように、WAFを設定すればよいのだ。アプリケーション内部のセキュリティを棄損することによる攻撃は、軽減がより難しくなる。アプリが独自のクロスサイトリクエストフォージェリ(CSRF)トークンを使用している場合、使用中のトークンに依存するリクエストをリジェクトするようなWAFの設定はできないので、WAFとアプリケーション間に独自のインテグレーションを構築する必要がある。
セキュアでないアプリに対して適切なセキュリティ機能を据え付けるために、WAFのような汎用ツールを使用することができるのか、Mark Nunnikhoven氏に尋ねてみた。氏はTrend Microのクラウドリサーチ担当副社長で、AWSコミュニティヒーローでもある。
InfoQ: 最近注目されているセキュリティ侵害に対して、WAFのようなツールは有効だと思われますか?
Mark Nunnikhoven: セキュリティ侵害はさまざまな理由から発生しますが、最も一般的なベクタは、Webアプリケーションの脆弱性を利用するものです。クロスサイトスクリプティングやSQLインジェクションなどの攻撃は、依然として攻撃者にとって非常に有効な手段であり続けています。このようなケースでは、AWS WAFは非常に効果的です。AWS WAFはアプリケーションのトラフィックを分析して、悪質なコンテンツを探すように設計されています。Webアプリケーションにとって、シンプルで効果的な防御層なのです。
InfoQ: OWASP Top 10はWAFを始めとして、数多くのセキュリティプランが目標とするものですが、目標としては十分なのでしょうか。あるいはWebアプリのセキュリティに関して、もっと多くを考慮する必要がありますか?
Nunnikhoven: OWASP Top 10は最近更新されましたが – 残念ながら – あまり変わっていません。開発者は同じミスを繰り返していますし、プラットフォームでも同じような問題が相変わらず起きています。セキュリティ問題は長く尾を引くものですが、Top 10は最も大きなメリットの期待できる目標を教えてくれています。アプリケーションがこれら10の領域に十分な対処ができれば、それがセキュリティ面での確固たる基盤になります。基本的な部分をカバーできていないようなら、アプリケーションに影響を与えそうもない攻撃について心配しても仕方ありません。
InfoQ: WAFのワークフローをモデルとして使用し、自身のカスタムプロキシを作成すれば、アプリを改造しなくてもセキュリティを追加することができそうですが、それは可能でしょうか、あるいは、アプリケーションを強化してセキュリティ欠陥に対処する必要がありますか?
Nunnikhoven: AWS WAFのようなサードパーティのセキュリティコントロールは、強化されたアプリケーションを補強するように設計されているのが普通です。つまりセーフティネットであって、十分に設計されたアプリケーションと、それをサポートするプラットフォームの隙間をくぐり抜ける問題をキャッチするものなのです。
InfoQ: セキュリティはクラウドのひとつの機能になっています。AWSにはWAFと、セキュアでない構成のデプロイメントをチェックするAmazon Inspectorがありますし、Azureにはセキュリティ攻撃の自動的な軽減に加えて、セキュリティ強化のための助言を行なうSecurity Centerがあります。クラウドを変更する上で、セキュリティは妥当な理由でしょうか?
Nunnikhoven: セキュリティがクラウド移行の理由であることは間違いありません。主要なクラウドサービスプロバイダ - 世界的にはAWS、Microsoft、Google - はいずれも、アプリケーション開発の強力な基盤を提供しています。これらはいずれも、共有責任モデルの下で運用されていて、ユーザとプロバイダが主要な6領域(実物、インフラストラクチャ、オペレーティングシステム、アプリケーション、データ)それぞれにおいて、日々の責任を分かち合っています。
このモデルでは、ユーザはより少ない領域に意識を集中することができます。作業をプロバイダに託して、単に自分たちの要件を満たしていることを検証すればよいのです。クラウドでは、少ない労力で多くのことを行なうことができます。セキュアなアプリケーションを構築するには素晴らしい環境です。
この記事を評価
- 編集者評
- 編集長アクション