現代のデジタル世界では、約89%の開発者が多様なAPIを活用してアプリ開発を行っています。RESTfulやSOAP APIが注目される中、適切に管理されないシャドウAPIは問題を引き起こす要因となり得ます。見落とされがちなシャドウAPIは、思いもよらぬ混乱をもたらす可能性があります。本稿では、シャドウAPIの概要と、これを守るための方法について考察します。
まずは、シャドウAPIについて理解を深めよう。
シャドウAPIは、組織や開発者が利用する、文書化も追跡もされていないサードパーティーのAPIです。これらは非常に分かりにくく隠れているため、開発者がその存在や特性に気付かないことが多いです。
シャドウAPIを守る方法を考える前に、これらが隠れて存在するため、見出すノウハウを把握することが重要です。
以下の手法で、シャドウAPIと他のAPIを区別できます。
シャドウAPIを発見する最も一般的な方法のひとつは、アプリの即時ログを綿密に監視するログ分析です。多くの組織は既にこのためのログ収集仕組みを採用しています。
アプリのログを活用することで、APIの問題を即時に検知し、その場で対処できるようになります。正確に運用すれば、新たに作成されたエンドポイントやレスポンスデータ、さまざまなAPI指標を瞬時に把握できます。
Sematext Logs、insights、InsightOpsなどのログ解析ツールは試す価値があります。
これらのツールにより多くの作業が自動化されますが、ログ解析は大量のデータを保存する必要があるため、最適とはいえません。また、データ解析ツールへの投資も必要です。何か問題が起これば、記録される情報が多すぎたり少なすぎたりする恐れがあります。
また、多くのログ解析ツールはアプリレベルでの活動記録のみを保存するよう設計されており、HTTPリクエストの記録はされません。これにより、APIの変化を検出するのが困難になるという欠点があります。
すべてのAPIリクエストを監視することで、ログ解析の欠点を補えます。継続的なライブ監視により、新たに追加されたデータのAPI分類が容易になります。
開発者がテスト作業に縛られることなく、即座にパフォーマンスの不具合を検知します。これにより、大幅な時間と労力の節約が可能となります。さらに、ライブ監視はAPI gatewayや既存のアプリエージェントと直結できるという利点もあります。
この2つの手法のうち、実装が簡単で予期せぬセキュリティリスクを回避できるため、前者が好まれます。
しかし、この方法は情報をローカルやサードパーティーのアプリで取得するため、アプリのパフォーマンスがやや低下します。さらに、各アプリごとに実装する必要があるため、中央集約型とは言えず手間がかかります。
静的コード解析とも呼ばれるコードスキャンは、アプリのソースコードを追跡してAPIの使用状況を把握する方法です。他の手法とは異なり、シャドウAPIが作成される前に識別できます。アプリが稼働中でないため、非侵襲的な技法とされています。
包括的な手法であり、各段階での煩雑な統合作業を必要としません。これにより、API開発はGDPRへの準拠も容易になります。ただし、この技法は複雑で、コードの構築が難しい上、使用するツールがすべてのスタック言語に対応している必要があります。
最後に、シャドウAPIを見つける手段として、アウトバウンドプロキシや取引プラットフォームのAPIを利用する方法があります。APIプロキシは、外向きのAPI呼び出しを解読し、自社サービスを通して転送します。この過程で、アウトバウンドプロキシはすべてのAPIレスポンスとリクエストを記録します。取引プラットフォームのAPIも同様ですが、こちらは開発者が仲介者として機能します。
これらの手法の最大の利点は、自動的にAPI利用状況のカタログが作成される点です。そのため、開発者がこの作業に手間をかける必要がなく、初期からAPI利用状況を把握できます。ただし、この方法はコード内でプロキシAPIを明示的に使用する必要があり、トラフィックがプロキシAPI経由となるため、実際のAPIパフォーマンスがやや低下します。
上記から、シャドウAPIの特定が非常に手間のかかる作業であることが理解できます。しかし、以下の理由から必ず見つけ出し除去する必要があります。
OWASP Top 10 APIリストでもシャドウAPIが指摘されています。
実際、専門家は「API9:2019 Improper Assets Management」リストにおいて、シャドウAPIを大きなセキュリティ脅威のひとつとして位置付けています。シャドウAPIを適時に排除できない企業は深刻な事態に陥る恐れがあります。Facebookもその一例です。
Facebookのパスワード更新サービスが、ユーザの電話番号に10桁のコードを送信し始めました。これは開発チームが想定していなかったもので、すぐにハッカーがコードを解読できるセキュリティ上の穴であると判明しました。レートリミットの導入で解決されたものの、一時的な混乱を招きました。
Facebookは技術的に優れており、初期段階で問題に対処するIT専門家のチームを擁しています。しかし、全ての企業がそれほど恵まれているわけではなく、シャドウAPIの存在により絶え間ないトラブルに見舞われる可能性があります。
迅速かつ適切な対処がなければ、シャドウAPIによる被害は回復困難です。幸い、APIをシャドウの罠から守る実践的な方法がいくつか存在します。
定められたAPI規格を守ることで、APIの異常が最小限に抑えられます。OpenAPI Specificationは、初めからAPIの目的を理解する手助けをし、機械と人間双方に共通の言語を提供します。これらの普遍的な規格を遵守することで、問題点を最小限に保つことができます。
APIドキュメントを早期に自動化することで、手作業での膨大な労力を大幅に削減できます。CI/CDプロセスを活用すれば、ドキュメントの更新も容易になります。
新APIバージョンのリリース前に、初期APIのセキュリティ状態を検証する時間を持つべきです。これにより、新バージョンに潜む予期せぬリスクを評価し、より安全な設計が可能になります。
自動化されたAPIドキュメントは非常に有用ですが、単独では十分ではありません。APIセキュリティ専門家が、エンドポイントや動作方式、稼働状況といった詳細を確認する必要があります。継続的なAPI管理により、シャドウAPIの発生を防止できます。
どれだけ努力しても、古いAPIが残ることは避けられません。バックポートの手法を使えば、古いAPIにも最新のセキュリティ対策を容易に導入し、技術的に安全な状態にできます。
CORS(クロスオリジンリソース共有)は、特定のAPIが他のAPIにアクセスすることを許可する仕組みです。この現代的な方法を用いることで、ハッカーによるAPI侵害のリスクを低減できます。
APIを守ること、継続的な監視、そして適切な管理は、シャドウAPIの発生を抑制する有効な対策です。しかし、これらの作業には多くの複雑さが伴います。
Wallarmは必要な専門知識を一元化し、作業をシンプルにします。高機能なAPIセキュリティプラットフォームにより、円滑な運用が可能になります。
API開発の際、Wallarmの利用により開発者はベストプラクティスを実行し、APIが放置され問題を引き起こすのを防ぎます。APIの安全確保はWallarmに任せ、安心して運用できる仕組みを構築してください。
最新情報を購読