アプリケーション・プログラミング・インターフェースは、情報セキュリティの分野で話題になっていますが、これには理由があります。
この記事では、安全でないAPIがどのように、そしてなぜ組織とそのユーザに重大なリスクをもたらすのかを考察し、セキュリティに対する意識を高め、既存の企業ソフトウェアに含まれるAPIを保護し、APIデータを安全に利用するためにセキュリティチームが何をすべきかを説明します。
APIとは何ですか?
APIは、特定のタスクを実行したり、ソフトウェアコンポーネントと対話する簡単な方法を提供するために使用される関数やルーチンのセットであり、多くの場合、他のマシン上で実行されているサーバーとの対話など、一般的なプロセスの自動化を可能にします。
APIは、ルーチン、データ構造、オブジェクトクラス、変数の仕様を含むライブラリの場合もあれば、APIユーザーに公開されるリモートコールの仕様だけの場合もあります。APIには国際標準に基づいたものもあれば、オープンソースやベンダーのドキュメントとして公開されているものもあります。例えば、MicrosoftのWindows APIは、開発者がWindowsプラットフォーム用のソフトウェアを作成することを可能にします。
潜在的な収益源とビジネスチャンスを生み出すために、組織はますますAPI経由でビジネスアプリケーションとデータを提供するようになっています。さらに、Web 2.0 によって Web API の利用が急増し、ユーザーやプログラムがオンライン・アプリケーションの背後にあるコア・データとやり取りできるようになっています。アマゾンのクラウドコンピューティングサービスはその最たる例で、EC2などのさまざまなサービスへのアクセスをユーザーに提供するためにAPIを使用しています。
APIを公開することで、企業はパートナーとの接続性とクラウド統合を向上させ、顧客により良いサービスを提供することができます。同時に、サードパーティは、ユーザーに追加機能を提供するアプリケーションを開発し、企業のサービスや製品の認知度向上と展開を支援することができます。
Layer 7 Technologiesの最近の調査によると、回答者の43%以上が、自分の組織は現在APIイニシアチブを展開しており、27%が来年中にそのようなイニシアチブを開始すると回答しています。FacebookはAPIを提供しており、開発者はFacebookとそのユーザーに関するデータにアクセスする何百ものアプリケーションやサービスを作成することができます。
ウェブAPI(Facebookなど)は、典型的にはハイパーテキスト転送プロトコルのリクエストメッセージで、構造化されたレスポンスメッセージを返します。このようなAPIは、シンプルなオブジェクトアクセスプロトコルに基づくWebサービスやサービス指向アーキテクチャに急速に取って代わりつつあります。
APIセキュリティの問題とその回避方法
その多くの利点に加えて、アプリケーション・プログラミング・インターフェースには、最近のセキュリティ侵害が示すように、セキュリティ上の問題もあります。セキュリティの問題は通常、API の背後にあるコンセプトではなく、API のコーディング方法にあります。多くのアプリケーション開発者は、APIを書いたり使ったりするときにセキュリティを考慮せず、アプリケーションやデータを危険にさらしています。APIに関して言えば、稚拙なコードはすぐに危険なコードになります。
幸いなことに、企業環境におけるAPIを強化し、セキュアにするために、組織とその開発者が取ることのできるステップがあります。
開発中、セキュリティ専門家は API コードを手作業で検査し、攻撃者による悪用や誤用の可能性がないかテストしてください。明確に文書化されたコードによって、セキュリティ担当者は API が何をすべきで、何をすべきでないかを知ることができ、API をアプリケーションに統合する担当者は API を適切に配置する方法を理解することができます。
ドキュメンテーションでは、開発者はAPIがどのように呼び出され、どのようなデータがどのような形式で返され、どのようなエラーメッセージが発生する可能性があるかを明記すべきです。内部文書では、誰がAPIにアクセスできるのか、また、監査目的で、いつ、誰が、どのリソースにアクセスしたのかを特定するために、どのような情報が記録されるのかも示すべきです。アクセスに関しては、適切な場合、マシンIDが認証チェックを補足すべきです。また、各APIコールは、ユーザーまたはデバイスが必要な情報を表示、編集、または削除するための正しい権限を持っていることを確認するためにチェックされるべきです。しかし、多くの開発者はユーザー認証の後、二次的なアクセス制御のチェックを省くのが一般的です。
サードパーティのAPIを利用しようとする組織は、開発者が安全にAPIを導入する方法を十分に理解し、これらのAPIからのすべての応答を検証する必要があります。特に特定のAPIを呼び出す方法に関しては、多くの開発者がインターネット上で見つけたコードを再利用したがります。しかし、特定のコンテンツに適切であることを確認せずにコードをコピー&ペーストすることは、API 関連の脆弱性がアプリケーションに侵入するための一般的なシナリオです。
企業は、開発スピードも重要かもしれませんが、細部への注意も重要であることを忘れてはなりません。開発者はAPIのドキュメントを注意深く読み、決してインターネット上の伝聞に頼ってはいけません。組織の開発スケジュールは、開発者がAPIの適切な導入方法を理解し、APIがもたらす潜在的なリスク、特にユーザーデータの共有について理解するのに十分な時間を与えるべきです。APIが企業リソースへのゲートウェイとして機能するため、不適切に記述または展開されたAPIは攻撃ベクトルを導入し、機密性、完全性、可用性、説明責任に関するリスクを増大させる可能性があります。APIを呼び出すためのアクセス・認証メカニズムとして暗号化キーを使用する場合は、ポリシーに従って安全に保管し、設定ファイルやその他のスクリプトにハードコードしてはいけません。
APIの問題がすぐになくなることはないでしょうし、APIは現代のオープンエンタープライズの要になりつつあります。その重要性を考えると、APIを作成し使用する人々は、APIをもっと真剣に受け止めるべきです。APIが安全に導入されれば、組織は利便性とセキュリティを確保しながら、自社や他社のデータを最大限に活用することができます。もしAPIが誤って導入された場合、攻撃者はAPIを悪用し、企業とそのユーザーを標的にする可能性があります。