APIセキュリティのベストプラクティス

APIセキュリティのベストプラクティス:開発者のためのチェックリスト

TL; DR

ほとんどのAPI侵害は、特殊な脆弱性を悪用したものではなく、認証システムの不備に起因している。 OWASP API Security Top 10の上位5つのカテゴリのうち3つは認証失敗であり、 BOLA.

存在すら知らないものを守ることはできない。 不適切な在庫管理 これはOWASP独自の名称を持つリスクカテゴリであり、他のすべての対策の基盤となるものです。

配備後ではなく、配備前に暴露状況を把握する。 コードと API 仕様の静的解析により、壊れたエンドポイントが見つかりました。 pull request1つの費用で commit実行時テストでは、インシデント発生のコストを伴いながら、本番環境でも同じ問題が発見される。

これは継続的に実行すべきチェックリストです。 すべてに pull requestこれは発売前のレビューではありません。 10の練習在庫管理や承認から、レート制限、応答データの公開、第三者への信頼に至るまで。

API の攻撃対象領域は、 pull requestほとんどのチームは、エンドポイントが稼働してトラフィックを受け付けてから初めて、その脆弱性が露呈していることに気づきます。つまり、修正には1つのコストしかかからないということです。 commit レビューに費用がかかるようになった今、インシデントレポートを作成する必要があります。このガイドでは、誰も実装しない抽象的な原則のリストではなく、実際に本番環境で通用するAPIセキュリティのベストプラクティスをチェックリスト形式で解説します。このチェックリストは、今日から自分のコードベースに適用できます。

APIセキュリティのベストプラクティスが今、以前と異なる理由

APIはかつてシステム間の接続を担う重要な役割を果たしていました。しかし今では、モバイルアプリ、パートナー連携、AIエージェント、社内マイクロサービスなど、ほぼすべての主要なインターフェースとなっています。この変化に伴い、API保護のベストプラクティスでカバーすべき範囲も変わりました。文書化したAPIを保護するだけでは不十分で、チームが構築したものの文書化を忘れてしまったAPIも考慮に入れる必要があります。

2つの数字が、これがなぜ重要なのかを説明している。 OWASP API セキュリティ トップ 10 認証エラーの問題は、上位5つのカテゴリのうち3つに挙げられており、これは現実世界のAPIインシデントの大部分が、特殊なゼロデイ攻撃ではなく、予防可能なパターンに起因していることを意味します。また、不適切なインベントリ管理も、独自の危険カテゴリとしてリストに挙げられています。つまり、チームは稼働中であることを知らなかったAPIを通じて侵害される可能性があるということです。

これは、以下のすべての項目に共通するテーマです。優れたAPI管理のベストプラクティスは、文書化したことだけを擁護するのではなく、自分が何を持っているかを把握することから始まります。

APIセキュリティのベストプラクティス概要

詳細なチェックリストの前に、まずは要点をまとめます。何を実装すべきか、それが実際に何から保護してくれるのか、そしてどの程度緊急に実施すべきか、ということです。

専門何から守るのか優先
HTTPS/TLS暗号化データ傍受、中間者攻撃必須
認証(OAuth 2.0、JWT)不正アクセス、なりすまし必須
認証とアクセス制御権限昇格、データ漏洩必須
入力検証インジェクション攻撃、不正なリクエスト必須
完全なAPIインベントリ文書化されていない非推奨のエンドポイントが放置されている必須
レート制限ブルートフォース攻撃、DDoS攻撃、不正利用ハイ
APIキー管理認証情報の盗難、不正使用ハイ
ロギングとモニタリング検知されない侵害、インシデント対応の遅さハイ
デプロイ前の静的解析誰かがレビューする前に、製品版が出荷されるハイ
セキュリティテスト(SAST + DAST)未知の脆弱性、リグレッションハイ

「必須」行は、内部または外部向けを問わず、あらゆる API の譲れない基準として扱います。「高」優先度の項目は、問題を検出するプログラムを区別するものです。 pull request 事故報告書で発見した情報から。

APIセキュリティのベストプラクティスチェックリスト

1. 防御施設を建設する前に、完全な在庫リストを作成してください。

存在を知らないエンドポイントを保護することはできません。API保護のベストプラクティスに取り組む際は、まず実際のインベントリを作成することから始めましょう。すべてのエンドポイント、そのメソッド、パス、所属するサービスとモジュール、そして認証が必要かどうかを把握する必要があります。この情報は、ドキュメントだけでなく、ソースコードとAPI仕様(OpenAPI、Swaggerなど)の両方から取得してください。なぜなら、この2つの情報の間には、忘れ去られたエンドポイントや孤立したエンドポイントが潜んでいるからです。

Xygeniが位置づけられる点: Xygeni APIセキュリティ このインベントリは、アプリケーションのソースコードとAPI仕様から直接構築され、チームが文書化したエンドポイントと、誰も文書化していないエンドポイントの両方を、それらが本番環境に到達する前に明らかにします。

2. オブジェクトおよび機能レベルでの認可を強制する

オブジェクトレベルおよび関数レベルの認証の不備は、OWASP API Security Top 10 で常に上位にランクインしています。ベストプラクティスは「認証を追加する」ことではなく、すべてのリクエストで、 この特定のユーザー アクセスが許可されています この特定のオブジェクトログインしているかどうかだけでなく、認証は誰がアクセスしようとしているのかを判定します。認可は、アクセスしようとしているものにアクセスできるかを判定するものであり、有効なトークンから推測するのではなく、毎回確認する必要があります。

3. APIが受け取るすべてのデータを検証し、サニタイズする

すべてのパラメータ、ヘッダー、およびボディフィールドは、他に証明されるまでは信頼できない入力とみなされます。厳格なスキーマ検証を実施し、予期しないフィールドを拒否し(これは大量割り当てに対する防御策です)、アクセス範囲や価格設定ロジックの決定にクライアントから提供されたデータを決して信頼しないでください。

4. 設計段階からレート制限とスロットリングを行う。後付けで実装するのではない。

リソース消費に制限がないと、単一のクライアントがインフラストラクチャを使い果たしたり、従量課金制のバックエンドサービスでコストが膨れ上がったりする可能性があります。エンドポイントごと、ユーザーごと、APIキーごとに制限を設定し、制限は一律の数値ではなく、実際の運用コストに応じて調整されるようにしてください。

5. すべての応答を潜在的なデータ漏洩として扱う

過剰なデータ漏洩は、APIがクライアントが必要とする以上のデータを返し、それをフロントエンドでフィルタリングする仕組みに依存している場合に発生します。これは稀なミスではなく、よくある習慣であり、レンダリングされたUIではなく生のレスポンスを検査するまで気づかないため、API保護のベストプラクティス違反として最もよく見られるものの1つです。

Xygeniが位置づけられる点: Xygeni API Securityは、APIレスポンス内で個人情報漏洩を直接検知することで、顧客や規制当局が気づく前に、情報が過剰に共有されていることを検知します。

6. 廃止されたAPIも含め、正確で最新のAPIインベントリを維持する。

不適切 インベントリー OWASPリストで「管理」が独立したカテゴリとして挙げられているのには理由があります。廃止されたAPIバージョンやドキュメント化されていないステージング環境は、存在が忘れ去られた後も、しばしばアクセス可能であり、脆弱性を抱えたままになっていることが多いのです。API管理のベストプラクティスプログラムには、発見だけでなく、廃止も含まれていなければなりません。

7. APIがサードパーティから何を信頼しているかを精査する

サードパーティAPIの不適切な利用は、過小評価されているリスクです。開発者は、ユーザー入力よりも他のAPIから取得したデータを信頼する傾向がありますが、これは全く逆です。サードパーティとの連携も、外部の未検証の情報源であり、ユーザー入力と同様に検証されるべきです。

8.開発者には警告だけでなく、証拠を提示する。

「このエンドポイントで認証が壊れています」という検出結果は、修正に着手する前に調査が必要なチケットです。一方、具体的なファイル、クラス、メソッド、行番号を示す検出結果であれば、開発者はすぐに対応できます。これは、APIだけでなくセキュリティプログラム自体にも当てはまるベストプラクティスです。修正前に調査が必要な検出結果は、すべてを遅らせる原因となります。

Xygeniが位置づけられる点: Xygeni API Securityで検出された問題はすべて、ハンドラー、ファイル、クラス、メソッド、および問題を引き起こした行を正確に特定するため、問題が検出された瞬間から修正作業が開始されます。

9. 配備後ではなく、配備前に曝露状況を確認する

ランタイム API テストでは、エンドポイントが既にトラフィックを処理している時点で、そのエンドポイントが公開されていることが分かります。コードと API 仕様の静的解析では、エンドポイントがまだ pull request修理費用が1ドルかかる場合 commit インシデント対応の代わりに、API管理のベストプラクティスでは、静的検出を第一層とし、ランタイムテストを既に稼働しているものに対する第二の補完的なチェックとして扱います。

Xygeniが位置づけられる点: Xygeni API Securityは設計上静的であり、リリース前にコードと仕様を分析し、 Xygeni DAST 既に運用中のアプリケーションのランタイムカバレッジを確保するため。

10. APIリスクは、他のアプリケーションリスクと同じ場所に保管する

API は単独では失敗しません。API の脆弱性は、多くの場合、依存関係の問題や設定ミスの下流にあります。 pipelineあるいは、機密情報の漏洩など。APIセキュリティを独自のコンソールを持つ独立したツールとして扱うということは、まさに最も重要な時にそのコンテキストを失うことを意味します。

Xygeniが位置づけられる点: APIセキュリティは、 SAST, SCA秘密、 IaC単一の Xygeni プラットフォームで DAST も利用できるため、API の検出結果は、それを生成したコードと依存関係のリスクの横に表示され、別の場所に表示されることはありません。 login.

チェックリストを習慣にする

API セキュリティのベストプラクティスは、継続的な実践としてのみ有効であり、リリース前のレビューだけでは不十分です。すべての API に対してインベントリと静的分析を実行してください。 pull request四半期に一度ではなく、定期的に調査してください。新しい未文書のエンドポイントは、新しい未文書の依存関係と同様に、いずれではなく、すぐに調査すべきものとして扱ってください。また、API 保護のベストプラクティスは、他の部分と同様に測定してください。 SDLC問題は、単に発見できたかどうかだけでなく、どれだけ早く発見できたかによって決まる。

クイックアンサー:APIセキュリティのベストプラクティスに関するQ&A

メッセージ回答
最も重要なAPIセキュリティのベストプラクティスは何ですか?強力な認証と認可を、保護対象として覚えていたエンドポイントだけでなく、すべてのエンドポイントに適用する。
内部APIはHTTPSを使用すべきでしょうか?はい。公開エンドポイントだけでなく、サービス間の通信も含め、すべてのAPIトラフィックを暗号化してください。
APIキーだけでセキュリティは確保できるのか?いいえ。APIキーはアプリケーションを識別するものであり、ユーザーを識別するものではありません。真の認証を行うには、OAuth 2.0またはJWTと組み合わせて使用​​してください。
BOLAとは何ですか?オブジェクトレベル認証の不備:APIが、ユーザーが特定のリソースにアクセスする権限を持っていることを検証できない。2019年以来、OWASP APIセキュリティトップ10で1位を維持している。
APIキーはどのくらいの頻度で更新すべきですか?定期的に(60~90日ごと)、および侵害の疑いが生じた場合は直ちに実施する。
レート制限はどのようなステータスコードを返すべきですか?429 Too Many Requests。Retry-Afterヘッダーには、クライアントに再試行のタイミングを伝える情報が含まれています。
ゲートウェイの背後であっても、サーバー側で入力値を検証すべきでしょうか?常に。上流のクライアントやゲートウェイが既にチェックした内容に関わらず、APIレイヤーで検証を行う。
APIセキュリティをテストするにはどうすればいいですか? CI/CD?すべての認証、認可、入力検証、レート制限を確認してください。 pull requestリリース直前だけでなく、常に自動化し、手動レビューに頼るのではなく、自動化する。

主要なポイント(要点)

  • 在庫管理は防御よりも優先される。 存在を知らないエンドポイントに対して、認証、レート制限、データ制御を適用することはできません。また、不適切なインベントリ管理は、OWASP API Security Top 10において独立したリスクとして挙げられています。
  • 認証だけでなく、認可の段階でも、情報漏洩の大部分は発生する。 OWASPが指摘するAPIセキュリティリスク上位5つのうち3つは、認証の失敗です。誰がアクセスしようとしているのかを確認することと、その人が何にアクセスできるかを確認することは全く異なります。
  • 静的解析は、実行時テストでは手遅れになるような問題を捉えることができる。 露出を見つける pull request 1つ費用がかかります commit生産現場でそれを見つけると、インシデントとして扱われます。
  • あらゆる応答は、潜在的なデータ漏洩につながる可能性がある。 過剰なデータ公開は、まれなミスではなく習慣であり、レンダリングされたUIではなく生のAPIレスポンスを誰かが検査するまで、その問題は目に見えない。
  • APIセキュリティのベストプラクティスは、継続的な習慣としてのみ効果を発揮する。あらゆる場所で実行 pull request四半期ごとのレビューや発売前のチェックリストではありません。
  • APIのリスクは、別のツールで管理すべきではない。 最も有用な API 保護のベスト プラクティスでは、API の発見をコード、依存関係、および pipeline security独立したコンソールではない。

FAQ

まず最初に取り組むべき、最も重要なAPIセキュリティのベストプラクティスは何ですか?

まずはインベントリから始めましょう。存在を知らないエンドポイントには、認証チェック、レート制限、データ漏洩対策などを適用することはできません。そのため、すべてのAPIエンドポイントの完全かつ正確なインベントリが、このチェックリストの他のすべての項目の基礎となります。

APIセキュリティのベストプラクティスと一般的なアプリケーションセキュリティのベストプラクティスの違いは何ですか?

APIは、一般的なアプリケーションセキュリティ対策では十分にカバーできないリスクをもたらします。例えば、大規模なオブジェクトレベルおよび関数レベルの認証、サードパーティAPIの応答を信頼することに伴う特有の危険性、非推奨または未公開のエンドポイントを追跡する難しさなどです。APIセキュリティのベストプラクティスは、アプリケーションセキュリティのベストプラクティスを、攻撃対象領域の中でも最も忘れやすい部分に適用したものです。

APIセキュリティテストは、デプロイ前に行うべきか、デプロイ後に行うべきか?

どちらも有効ですが、最も効果的なのは事前分析です。コードとAPI仕様の静的解析により、脆弱性がまだ pull requestランタイムテスト(DAST)は、アプリケーションが稼働した際に実際にアクセス可能な箇所を検証します。ランタイムテストだけに頼ると、修正にかかるコストが本来よりも高くなってしまいます。

APIインベントリはどのくらいの頻度で更新すべきですか?

継続的に、理想的には毎日 pull request一度作成され、四半期ごとに見直される在庫情報は、新しいエンドポイントが出荷された瞬間に既に古くなってしまう。まさにこの点が、不適切な在庫管理が悪用する弱点となる。

API管理のベストプラクティスは、公開APIだけでなく、内部APIにも適用されるのでしょうか?

はい。内部APIは「インターネットに公開されていない」という理由で、セキュリティ基準が低く設定されることが多いですが、それでも機密データを扱っており、侵害されたアカウントや内部関係者など、内部ネットワークにアクセスできる人なら誰でもアクセス可能です。

sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に