NGINX(エンジンエックス)|日本公式サイト

NGINXはF5ファミリーの一員となりました。新体制の詳細はこちらを御覧ください。

リアルタイムAPIのセキュリティの重要性

デジタルトランスフォーメーションの導入や最新テクノロジーへの注目が高まる中、多くの組織において多様なユーザニーズに対応するためのよりクリエイティブなアプローチの採用が求められています。遠隔医療からオンラインバンキングに至るまで、リアルタイムAPIはデジタルビジネスを構築するための基盤となるものです。このリアルタイムAPIを実現することにより、開発者は、顧客のニーズを満たすアプリケーションを開発することができるのです。

デジタル環境ではAPIによって即座にサービスが提供されるアプリケーションが爆発的に増加しており、APIの不正利用をすばやく検出して保護することが非常に重視されるようになっています。

APIは、現代のアプリケーションのフレームのようなもので、APIはあらゆる場所で使われており、開発者はAPIを使用することで、他のソフトウェアコンポーネントから重要な情報を取得したり、自分のアプリケーションに統合できるようになります。たとえば、ライドシェア(相乗り)アプリにGoogleマップを埋め込む、YouTubeの動画をWebページに埋め込む、といったことが可能になります。APIは、ログインからフィードバックまで、ユーザがアプリケーションとやりとりする際のあらゆる場面の裏で使用されている主要なコンポーネントです。高速通信(1Gbps)を実現する5Gの台頭により、ユーザにとって、アプリケーションの低パフォーマンスはさらに耐え難い現象になります。NGNIXではリアルタイムAPIの応答性を、エンドツーエンドのAPIコールを30ミリ秒未満で処理することと定義していますが、この応答性を実現できないAPIドリブンの企業は、デジタル市場における競争力を失うことになるでしょう。また、収益が低下してしまえば、デジタルトランスフォーメーションを今後推進できなくなる恐れもあります。

善意で作られたすべてのものがそうであるように、APIを使用していることが知られることにはマイナス面があります。それは、悪意のある攻撃者に対し、アプリケーションを悪用するための新たな手段を提供してしまうことです。ガートナーでは、2022年までに、APIの悪用は企業のWebアプリケーションに対して最も多く実行される攻撃方法となり、データ侵害を引き起こすようになると予測しています。

APIのセキュリティが重要な理由とは

複数の要素を組み合わせると、APIはセキュリティ攻撃の格好のターゲットになります。最大の問題の1つは、適切なアクセス権限を設定できないことです。APIは、ユーザから直接アクセスされることを想定されていないため、アプリケーション環境内のすべてのデータへのアクセスが認められていることがよくあります。そして、APIコールに変換される最初のリクエストを行うユーザに特定の権限が付与され、APIがそれらの権限のみを継承することで、アクセスが制御されます。これが問題なく機能するのは、攻撃者がユーザ認証プロセスを迂回して、API経由で直接ダウンストリーム・アプリにアクセスするまでです。APIからは無制限にアクセスできるため、攻撃者はすべてを可視化できるようになります。

HTTPの基本的なWebリクエストと同様に、APIコールにはURI、メソッド、ヘッダー、その他のパラメーターが組み込まれます。これらすべてが攻撃で悪用される可能性があります。残念ながら、インジェクション、クレデンシャルブルートフォース、パラメーター改ざん、セッションスヌーピングといった代表的なWeb攻撃のほとんどは、驚くほどうまくAPIで機能します。攻撃者にとって、APIは格好の標的なのです。

APIを保護するには

APIライフサイクルの各段階でセキュリティ対策を構築することが非常に重要となります。エンジニアは、設計と開発の段階で、WAF、ボット保護、API管理ソリューション、APIゲートウェイのほか、開発、テスト、本番環境でデリバリーされるAPIを保護するその他のツールとの統合に必要なロジックでセキュリティ対策を構築する必要があります。

さらに、デリバリー中においてもAPIを保護するため、これらのテクノロジーを駆使する必要があります。詳細については、以降のセクションで説明します。

WAF

WAFは、不正なリクエストを認識します。不正なリクエストとは、意図されたAPIの機能を行使せずに、アプリケーションコードの脆弱性を悪用するように設計されたものであり、攻撃者は情報の窃盗や悪意のあるコードの実行が可能になります。どのWAFも、少なくとも、OWASP APIセキュリティのトップ10に記載されているような最も一般的なタイプの攻撃から保護できるようにすることが極めて重要です。

NGINX App Protectは、F5 Advanced WAF製品をベースにしています。CI/CDとDevOpsのワークフロー向けに最適化されており、XML、JSON、テキスト、HTMLのリクエストとレスポンスのペイロードをサポートしています。高度なAPI保護プロファイルは、構文解析と構造の適用、攻撃のシグネチャ、メソッドの適用、パスの適用によって攻撃から保護します。

ボットの保護

HTTP APIは、ボットのほか、自動化された攻撃で使用される悪意のあるトラフィックや望ましくないトラフィックの影響を受ける可能性があります。F5傘下となったShape Security(シェイプセキュリティ)は、オンライン詐欺やアプリケーションの不正利用を引き起こすボットやその他の自動攻撃からHTTPベースのAPIを保護するために、可視化、スロットリング、リスク緩和のオプションを利用できるようにするソリューションとしてAPI Defense™を提供しています。

API管理

API管理ソリューションには、さまざまな機能がありますが、たとえば、APIゲートウェイがAPIコールを処理する際に適用するセキュリティポリシーを定義するためのインターフェイスを提供します。

NGINX Controller API Management Moduleには、API仕様に基づく明示的なURI許可リストのほか、プログラム可能なレート制限、複数のレート制限ポリシー、DoS(サービス不能)攻撃から保護するためのスロットリングといった重要な保護機能が含まれています。

APIゲートウェイ

NGINX PlusのようなAPIゲートウェイは、次のセクションで説明する3つの重要な機能を担うガーディアンとしてAPIコールを保護します。

認証と認可

API認証とは、認識されたクライアント(主張どおりの本人であることを証明できるクライアント)のみにアクセスを許可することです。

認証はAPIによる処理の中心となるものではないため、アプリケーションコードの外で実行されます。このため、API開発者は独自の認証コードを記述する必要がなく、さらにすべてのAPIの認証を一元的に管理しながらも、認証要件を柔軟に定義できます。たとえば、スポーツ関連のWebサイトの場合、試合のスコアを返すAPIの使用は認証不要で許可しても問題ありませんが、コンテンツ編集のためのAPIを使用するユーザについては当然ながら認証する必要があります。

ここで、認証と認可の違いを確認しておきましょう。認証(Authentication)とは、ユーザの本人確認を行うプロセスです。認可(Authorization)とは、認証の次に行われるプロセスであり、ユーザごとに実行権限を付与するアクションを判断し、その情報をサーバーに伝達することです。

レート制限

レート制限は、指定したクライアントがAPIコールを行える頻度を制御します。これには、バックエンドサービスの過負荷からの保護と、クライアントの公正な使用の確保という2つの主な目的があります。レート制限の例としては、要求の多い時間帯に毎秒100件のトランザクションを許可するといったことが考えられます。レート制限は、個人ユーザ名、特定のIPアドレス/範囲、またはすべてのユーザに適用できます(ピーク時のトラフィック件数など)。

入力検証

入力検証とは、ユーザやアプリケーションから提供された情報が正しいかどうかを検証することです。適切な種類の文字(数字、文字、句読点)で構成されているか、適切なサイズか、事前に定義された許容値のいずれかであるか、提供されている別の値と一致しているか、といったことが確認されます。具体的には、提供された住所と郵便番号が合致しているか、生年月日が未来の日付になっていないか、といったことをチェックできます。入力検証によって、不適切に形成されたデータが情報システムに入り込むことを防御できるため、システムの整合性が脅かされません。また、悪意のあるユーザを検知して、それ以上の要求をブロックする方法としても重要です。

まとめ

APIは、今日のビジネス環境で成功を収めるために必要な俊敏性とスピードをビジネスにもたらすため、戦略的に不可欠な要素となっています。しかし、便利になる反面、セキュリティ侵害が起きた場合の損失もますます甚大になる可能性があります。そのため、API経由でデータをやり取りするためには、セキュリティリスクが発生しないような万全の基盤を構築する対策も同時に行わなければなりません。

関連資料