入力検証は、SQL インジェクションなどの一般的な API 攻撃の防止につながる重要なセキュリティ対策です。ユーザーや他の API から受け取ったデータを検証し、サニタイズ(無害化)することで、悪性の入力によるアプリケーションの侵害を防ぎ、機微な情報の保護と API の完全性の維持を可能にします。
この API セキュリティチェックリストは、API セキュリティのベストプラクティスをまとめただけのものではなく、API のライフサイクルに基づいています。具体的には、最初に計画を立て、開発とテストを経た後、運用と保護で完結するという流れになっています。いわば API のためのセキュアなソフトウェア開発ライフサイクル(SDLC)の管理プロセスを構築するためのガイドです。
さまざまな組織でクラウド中心のデジタル化が進むにつれ、組織内の API(アプリケーション・プログラミング・インターフェース)の範囲と規模が拡大し、価値が増大しています。現在の API は次のような状況です。
- 顧客やパートナーに提供するアプリケーションやサービス(最新の AI イノベーションを含む)の中心で使用されている
- 開発者が使用するサービスからエンジニアがリフト&シフトするワークロードまで、クラウド環境全体に組み込まれている
- 収益源として、ビジネスの成長と開発者エコシステムの構築を支援している
しかし、IT やセキュリティ専門家の 84% と同様に、API のセキュリティインシデントを経験したことがある場合は、API のリスクが増大していることを肌で感じているはずです。公開された API や誤設定の API が蔓延し、保護されていないため、侵害されやすくなっています。しかも、API に含まれる指示には、その API にアクセスして背後にあるデータを取得する方法が書かれています。これこそがハッカーの狙いです。隠してセキュリティを確保することはできません。そのうえ、API は組織内のさまざまなグループをほとんど常にまとめ続ける役割を果たします。これらのグループがセキュリティを統一したいと思っても、そう簡単には実現できない場合があります。さらに、いわゆる「野放し状態」にある API が多いと、セキュリティの確保がますます困難になります。多くの組織が、すべての API を把握することなく、未管理のまま放置しています。こうした休眠 API(ゾンビ API)は、主な攻撃ベクトルとなります。
API セキュリティのリスクは決して小さいものではありません。API に対する攻撃は、企業の収益や回復力、規制の遵守を損なう可能性があります。ほとんどの組織は、API 攻撃を防止するための適切な制御や機能をまだ導入していません。確かに、多くの企業が API ゲートウェイや Web アプリケーションファイアウォールなどの API ツールを既存のスタックに組み込んでいます。しかし、これらのツールである程度の保護は実現できるものの、最新の API 攻撃を防御できるだけの可視性、リアルタイムのセキュリティ、継続的なテストを提供するようには設計されていません。
以上のような理由を踏まえ、Akamai は API セキュリティ確保のためのより厳格かつ体系的なアプローチとして、この API セキュリティチェックリストを作成しました。ライフサイクルの各段階で推奨される 4 つの制御により、API の堅牢なセキュリティポスチャを実現できます。こうしたセキュアな SDLC 管理プロセスの各段階は、次の表のようにまとめられます。
計画 |
|
開発 |
|
テスト |
|
運用 |
|
保護 |
|
計画
API セキュリティの確保は、コードを書く前から始まっています。計画を立てる段階では、役割、責任、ポリシーなどのガバナンスの問題について徹底的に考えることが重要です。また、計画の策定はセキュリティ指標やライフサイクル管理のプロセスを判断するのに最適な場面でもあります。
API の計画に関するセキュリティチェックリストは以下のとおりです。
- ガバナンス、役割、責任:API 資産のセキュリティ確保に関する役割や責任を明確に規定していますか?これは開発者やセキュリティエンジニアにとっての現場レベルの責任だけでなく、リスクに関する意思決定とポリシーの監視に対処する管理監督責任も含みます。
- ポリシー、標準、仕様:API のセキュアな設計、開発、テスト、運用に必要な最低限の要求事項を規定したポリシーや標準、API 仕様のライブラリを策定していますか?
- セキュリティ指標:API にまつわるリスクの測定と管理ができるように、API セキュリティに関する一連のリスク指標を規定していますか?こうした API リスク指標を関係者がフィードバックループとして使うことで、API セキュリティのリスク管理を継続的に改善できます。
- ライフサイクル管理:有効なライフサイクル全体を通じ、所有権を規定したソフトウェア資産として API を管理していますか?特に初期展開や継続的な変更管理、資産の廃棄に重点を置くのが効果的な方針です。
開発
開発の段階では、計画段階で策定したポリシーを実践します。開発者は、他の関係者たちと協力して、セキュアな API を作る責任を負います。
API の開発に関するセキュリティチェックリストは以下のとおりです。
- トレーニング:API 開発者や API 管理の責任(ゲートウェイ、セキュリティ運用など)を担うその他の人員に対し、それぞれの役割に応じた API セキュリティの分野に関するトレーニングを実施していますか?
- 開発環境(IDE、リポジトリなど):正しく承認および管理されたソースコードのリポジトリで API のソースコードの開発や管理を行っていますか?開発者は正しく管理または承認された開発環境を利用していますか?
- 文書化:API が各種仕様や標準に準拠しているかどうかを正しく文書化し、評価していますか?API のスキーマが変更になったときに API ドキュメントを更新していますか?そのドキュメントは第三者によるレビューやテスト/検証で利用できますか?
- 不具合の特定と解消:セキュリティに関するコードの不具合や脆弱性に注目し、それを特定して解消していますか?
テスト
開発した API は徹底的なテストのサイクルを経る必要があります。アプリケーションセキュリティのテストに使うチェックリストと同様に、以下では API のテストプログラムに実装するセキュリティ制御について説明します。
API のテストに関するセキュリティチェックリストは以下のとおりです。
- ソースコードのテスト:API のソースコードを本番環境に実装する前に、静的アプリケーション・セキュリティ・テスト(SAST)や動的アプリケーション・セキュリティ・テスト(DAST)を実施していますか?
- 侵入テスト:本番環境への移行前に、本番環境の API 管理、ネットワーク、ポリシー変数を可能な限り再現した状態で、API エンドポイントの侵入テストを実施していますか?
- コンプライアンスレビュー:本番環境への移行前に、API が各種標準や仕様に準拠しているか(GDPR、PCI コンプライアンスなど)を評価していますか?このプロセスには、アーキテクチャやネットワークの配置と設定(WAF の保護、ネットワークの配置など)の遵守が含まれる必要があります。
- 変更管理とリリース管理:ソフトウェアや IT の変更ポリシーを明確に規定し、それに従って API の実装や変更を行っていますか?変更の内容は、ソフトウェア資産のインベントリに正しく反映されているのが理想です。
開発とテストの段階における API のセキュリティ対策
認証およびアクセス制御:OAuth や API キーなどの堅牢な認証メカニズムを実装し、開発中やテスト中の API エンドポイントのセキュリティを確保します。アクセス制御ポリシーを確実に適用することで、機微な情報への不正アクセスを防止します。
レート制限:テストの段階では、悪用や想定される DDoS 攻撃から API を保護するためにレート制限を実施します。レート制限は、システムを過負荷状態にしてサービス妨害を招く可能性のある過剰なリクエストを防ぐ効果があります。
SQL インジェクションと検証:SQL インジェクションなどの一般的な API 攻撃を想定したテストを行います。悪性の入力による API の侵害を防げるよう、厳密な入力検証を実施します。API を通じて渡されるデータのサニタイズ(無害化)と検証が確実に行われるようにすることで、インジェクション攻撃から保護します。
運用
API が本番環境に移行した後も、API セキュリティを有効な状態に維持する必要があります。実はこの段階になると、API を見失い、脆弱性を招く危険性が大きくなります。
API の運用に関するセキュリティチェックリストは以下のとおりです。
- API のインベントリ:API ドキュメントを含め、すべての API エンドポイントのインベントリを正確かつ最新の状態に維持していますか?
- 機微な情報のインベントリ:API エンドポイントで処理される機微な情報のインベントリやマッピングを正確かつ最新の状態に維持していますか?さらに、どのユーザーが機微な情報にアクセスしているかを把握していますか?アクセス管理は、セキュリティとコンプライアンスの両面で不可欠な要素となります。
- 脆弱性の特定:本番環境の脆弱性や API のリスクが露出する部分を把握していますか?
- 設定管理:API トラフィックを仲介し、保護するネットワーク、ゲートウェイ、ファイアウォールの要素の脆弱性や露出を把握していますか?
保護
API の保護は、API のライフサイクル全体を通じて維持する必要があります。このワークロードには、ログやトラフィックの収集、脅威の検知、アラートなどが含まれます。
API の保護に関するチェックリストは以下のとおりです。
- ログやトラフィックの収集:運用やセキュリティの検査の参考となるよう、API のアクティビティを記録し、データを保管していますか?
- 脅威の検知とアラート:異常なアクティビティを検知するために、API のアクティビティを分析していますか?このプロセスには、該当するセキュリティチームや運用チームへの異常なイベントや悪用のイベントの通知ないし報告を含む必要があります。
- 機微な情報の移動:API のトラフィックに含まれる機微な情報の移動を監視していますか?このプロセスには、不正な使用や異常な使用の検知を目的としたデータストリームの分析に加え、該当するセキュリティチームや運用チームに対する機微な情報の移動の通知ないし報告を含む必要があります。
- ブロックと修復:API を介して機微な情報の不正な移動が生じた場合や、それ以外に API の悪用が疑われる場合に、それをブロックして修復していますか?
サイバーセキュリティの脅威から API を保護する
今日の脅威状況では、API 探索、ポスチャ管理、ランタイム保護、API セキュリティテストを提供する完全な API セキュリティソリューションが求められています。
1. API 探索:多くの企業が自社の API を完全には把握していないのは、珍しいことではありません。ほとんどの組織では、API トラフィックの大部分が可視化されていません。多くの場合、API はすべて API ゲートウェイ経由でルーティングされると想定されているからです。しかし、必ずしもそうではありません。インベントリが完全かつ正確なものでなければ、エンタープライズはさまざまなリスクにさらされてしまいます。必要なコア機能:
- 設定やタイプに関係なく、すべての API を検索してインベントリを作成する
- 休眠 API、レガシー API、ゾンビ API を検知する
- 忘れられているドメイン、見落とされているドメイン、またはその他の不明なシャドードメインを特定する
- 盲点を解消し、潜在的な攻撃経路を明らかにする
2.API ポスチャ管理:完全な API インベントリを導入した場合、API を通過するデータフローのタイプを把握し、規制要件への準拠に与える影響を理解することが重要になります。API ポスチャ管理では、トラフィック、コード、設定が包括的に示され、組織の API セキュリティポスチャを評価することができます。必要なコア機能:
- インフラを自動的にスキャンして、設定ミスや隠れたリスクを把握する
- カスタムワークフローを作成して、主要関係者に脆弱性を通知する
- 機微な情報にアクセスできる API と内部ユーザーを特定する
- 検知した問題に重大度のランクを付けて、修復の優先順位を設定する
3.API ランタイムセキュリティ:「データ侵害を想定する」という概念については周知のことでしょう。API 固有の侵入や攻撃は、必然の域に達していると言えます。本番環境で稼働しているすべての API において、攻撃をリアルタイムで検知してブロックできる必要があります。必要なコア機能:
- データの改ざんや漏えい、ポリシー違反、不審なふるまい、API 攻撃を監視する
- ネットワークの変更や面倒なエージェントのインストールを行うことなく、API トラフィックを分析する
- 既存のワークフロー(チケット発行、SIEM など)と統合して、セキュリティ/運用チームに警告する
- 攻撃や悪用をリアルタイムで阻止し、修復の一部または全部を自動化する
4.API セキュリティテスト:API 開発チームは、1 秒でも早く作業するよう求められています。あらゆるアプリケーションの開発において、スピードは非常に重要です。しかし、急ぐあまり脆弱性や設計上の欠陥が発生しやすくなったり、検知されないまま進行してしまったりするものです。開発中の API は、本番環境にリリースする前にテストを実施しておくことで、リスクだけでなく、脆弱な API を修正するコストも大幅に軽減することができます。必要なコア機能:
- さまざまな自動テストを実行して、悪性トラフィックをシミュレーションする
- API を本番環境に展開する前に脆弱性を発見し、攻撃が成功するリスクを緩和する
- 定められたガバナンスポリシーやルールに照らして、API の仕様を確認する
- API に特化したセキュリティテストをオンデマンドで、または CI/CD パイプラインの一環として実行する
こうした包括的なアプローチは、以下のような企業の既存の API 保護機能を補完するものとして機能します。
- 脅威検知および DDoS 防止:サイバーセキュリティツールを活用して、想定される API 攻撃をリアルタイムで検知します。レート制限や負荷分散といった DDoS 攻撃を防ぐための戦略を導入し、API エンドポイントの可用性とセキュリティを維持します。
- ブロックと修復:自動化されたブロックと修復の対策を導入し、不正アクセスの試みや機微な情報の露出から保護します。WAF、認証、アクセス制御のポリシーを組み合わせて、API ゲートウェイレベルでのセキュリティを確保します。
以上のような制御が推奨されます。考慮すべき項目がいくつもあるため、実際はどの組織でもこれらすべてを十分にカバーできているわけではありません。しかし、このチェックリストは効果的な運用を確立し、API セキュリティの改善が必要な部分を明らかにするうえで効果的な手段となります。API セキュリティを適切に運用するための有効なベースラインとなるのです。
よくある質問(FAQ)
レート制限は、DDoS 攻撃を阻止し、API エンドポイントが過剰なリクエストによって過負荷状態になるのを防ぐために不可欠です。レート制限によって、ユーザーやクライアントが一定の時間内に実行できるリクエストの回数を制限することで、過負荷の状態でも API の可用性と応答性を維持しやすくなります。
OAuth は一般に広く使われている認証プロトコルであり、ユーザーが認証情報を共有することなく自分のデータへのアクセスを許可できるようにすることで、API へのセキュアなアクセスを可能にします。OAuth を導入すると、承認されたユーザーやアプリケーションだけが API エンドポイントにアクセスできるよう促すことになり、不正アクセスやデータ漏えいのリスクを軽減できます。
Web アプリケーションファイアウォール(WAF)は、HTTP リクエストのフィルタリングと監視を通じて、API の保護レイヤーを追加します。WAF は悪性のトラフィックを防ぎ、SQL インジェクションやクロスサイトスクリプティング(XSS)などの一般的な脅威から保護するとともに、API ゲートウェイレベルでアクセス制御ポリシーを適用することで、さまざまなサイバーセキュリティの脅威から API を保護します。
Akamai が選ばれる理由
Akamai はサイバーセキュリティとクラウドコンピューティングを提供することで、オンラインビジネスの力となり、守っています。市場をリードするセキュリティソリューション、優れた脅威インテリジェンス、そして世界中の運用チームが、あらゆるところで企業のデータとアプリケーションを多層防御で守ります。Akamai のフルスタック・クラウドコンピューティング・ソリューションは、世界で最も分散されたプラットフォーム上で、パフォーマンスと手頃な価格を両立します。安心してビジネスを展開できる業界トップクラスの信頼性、スケール、専門知識の提供により、Akamai はグローバル企業の信頼を獲得しています。