コンテンツにスキップ

API Shieldの開始方法

このガイドでは、API Shieldを設定してAPIセキュリティのベストプラクティスを特定し、対処する方法を説明します。

セッション識別子

While not strictly required, it is recommended that you configure your session identifiers when getting started with API Shield. When Cloudflare inspects your API traffic for individual sessions, we can offer more tools for visibility, management, and control.

If you are unsure of the session identifiers that your API uses, consult with your development team.

Session identifiers should uniquely identify API clients. A common session identifier for API traffic is the Authorization header. When a JSON Web Token (JWT) is used by the API for client authentication, its value may change over time. You can use a claim value inside the JWT such as sub or email as a session ID to uniquely identify the session over time.

セッション識別子の設定方法

  1. Log in to the Cloudflare dashboard and select your account and domain.
  2. Go to Security > API Shield.
  3. Select Settings.
  4. On Endpoint settings, select Manage identifiers.
  5. Choose the type of session identifier (cookie, HTTP header, or JWT claim).
  1. Enter the name of the session identifier.
  2. Select Save.

After setting up session identifiers and allowing some time for Cloudflare to learn your traffic patterns, you can view your per endpoint and per session rate limiting recommendations, as well as enforce per endpoint and per session rate limits by creating new rules. Session identifiers will allow you to view API Discovery results from session ID-based discovery and session traffic patterns in Sequence Analytics.

スキーマ検証を使用してスキーマをアップロードする(オプション)

スキーマ検証は、リクエストがあなたのAPIスキーマに一致する場合のみ、APIがオリジンと通信できるようにすることで、APIを保護します。

厳密には必要ではありませんが、既存のスキーマをアップロードすることで、エンドポイントをエンドポイント管理に自動的に追加する機会が得られます。すでにスキーマをお持ちの場合は、スキーマ検証にアップロードできます。

アップロードするスキーマがない場合は、このガイドを読み続けてAPI Shieldを使用してスキーマを生成する方法を学んでください。

機密データ検出ルールセットとそれに伴うルールを有効にする

API Shieldは、Cloudflare WAFの機密データ検出ルールセットと連携して、HTTPレスポンスに社会保障番号やクレジットカード番号などの機密データを返すAPIエンドポイントを特定します。これらのエンドポイントを監視することは、機密データが期待されるときにのみ返されることを保証するために重要です。

機密データを返すエンドポイントは、行のパスの隣にあるアイコンを選択することで特定できます。エンドポイントを展開して、どのルールがトリガーされたかの詳細を確認し、ファイアウォールイベントでイベントを探索してさらに情報を表示できます。

発見したエンドポイントをエンドポイント管理に追加する

Cloudflareの機械学習モデルは、既存のトラフィックを検査してAPIエンドポイントの存在を確認しています。APIディスカバリーからエンドポイントをエンドポイント管理に追加することで、プラットフォームのさらなるセキュリティ、可視性、管理機能を解放できます。エンドポイント管理は、APIエンドポイントの健康状態を監視し、パフォーマンスメトリクスを保存、更新、監視します。

エンドポイントは、APIディスカバリースキーマ検証、または手動でメソッド、パス、ホストによって直接保存できます。

これにより、指定されたエンドポイントが管理されるエンドポイントのリストに追加されます。保存されたエンドポイントのリストは、エンドポイント管理ページで確認できます。

Cloudflareは、保存されたエンドポイントに関するパフォーマンスデータとセキュリティデータを集約します。

システムにトラフィックパターンを学習させる

Cloudflareは、エンドポイントを追加した後の24時間以内にAPIトラフィックを検査し、そのスキーマを学習し始めます。個々のエンドポイントがどれだけのトラフィックを受けるかによって、結果として得られるスキーマに対する信頼度が異なる場合があります。

Cloudflareは、設定されたセッション識別子を使用して、エンドポイントごとのレート制限を提案します。

最良の結果を得るために、次のステップに進む前に、エンドポイントを追加した後に少なくとも24時間待つことをお勧めします。

API Shieldを初めて設定し、最初のAPIエンドポイントをエンドポイント管理に追加した場合は、追加の設定に進むことをお勧めします。

最も機密性の高いエンドポイントにレート制限を追加する

レート制限ルールを使用すると、式に一致するリクエストのレート制限を定義し、そのレート制限に達したときに実行するアクションを選択できます。

セッション識別子を使用しているエンドポイントのエンドポイント管理で、Cloudflareが提案するレート制限を観察できます。多くのセキュリティツールとは異なり、これらの推奨レート制限はエンドポイントごとおよびセッションごとのものであり、サイト全体やIPアドレスに基づくものではありません。ルールを作成する際は、特定のエンドポイントへのユニークな訪問者からのトラフィックのみに基づきます。この機能により、レート制限の施行を非常に具体的かつターゲットを絞ったものにすることができ、悪用トラフィックや広範囲にスコープされたルールによる誤検知を減らすことができます。

学習したスキーマをスキーマ検証にインポートする

Cloudflareは、エンドポイント管理に保存されたすべてのエンドポイントのトラフィック検査を通じてスキーマパラメータを学習します。ホスト名ごとにOpenAPI v3.0.0形式でOpenAPIスキーマをエクスポートできます。

学習したスキーマをインポートすることで、APIディスカバリーを通じて見つかったAPIエンドポイントを保護できます。これらのエンドポイントは、以前はその存在やスキーマを知らなかったために保護できませんでした。

学習したスキーマをホスト名全体にインポートするには、Cloudflareダッシュボードを使用します。あるいは、個々のエンドポイントに学習したスキーマを適用することもできます。学習したスキーマを適用する前に、トラフィックを検証する内容を確認するためにスキーマをエクスポートすることをCloudflareは推奨しています。

エンドポイント管理から学習したスキーマをエクスポートする

学習したスキーマには、サーバーセクションにリストされたホスト名、ホスト、メソッド、パスによるすべてのエンドポイント、および検出されたパス変数が常に含まれます。また、検出されたクエリパラメータとその形式が含まれる可能性もあります。API Shieldのレート制限の閾値推奨をオプションで含めることができます。

学習したスキーマは、CloudflareダッシュボードまたはAPIを介してエクスポートできます。

シーケンス分析を表示および構成する

シーケンス分析は、時間の経過とともにAPIトラフィックで見つかった重要なAPIリクエストシーケンスのサブセットを表示します。

エンドポイント管理に保存されたエンドポイントを含むAPIトラフィックのトップシーケンスを観察できます。シーケンスは相関スコアによってランク付けされます。高スコアのシーケンスは、同時に発生する可能性が高いAPIリクエストを含みます。

シーケンス緩和を使用すると、APIと通信する認証済みクライアントのリクエストパターンを強制できます。シーケンス分析を使用して、APIクライアントによって使用されるリクエストシーケンスをよりよく理解してください。

相関スコアが高いシーケンスを構成する重要なリクエストフローに対して、APIエンドポイントに対して可能なすべてのAPI Shield保護(レート制限の提案、スキーマ検証、JWT検証、mTLS)を適用する必要があります。また、特定のエンドポイントの順序を開発チームと確認することも重要です。

詳細については、シーケンス分析を使用してAPIの悪用を自動的に検出するブログ記事を参照してください。

追加の設定

JSON Web Tokens (JWT) 検証の設定

Cloudflare APIを使用して、クライアントがAPIまたはWebアプリケーションに送信するJWTの整合性と有効性を検証するJSON Web Tokens検証を構成します。

GraphQL悪意のあるクエリ保護の設定

オリジンがGraphQLを使用している場合、GraphQLクエリのサイズと深さに制限を設けることを検討してください。

GraphQL悪意のあるクエリ保護は、オリジンを過負荷にし、サービス拒否を引き起こす可能性のあるクエリをスキャンします。顧客は、疑わしいほど大きいまたは複雑なクエリをブロックするために、受信するGraphQLクエリの深さとサイズを制限するルールを構築できます。

詳細については、ブログ記事を参照してください。

相互TLS (mTLS) 認証

追加の保護層が必要なAPIを運営している場合は、相互TLS (mTLS)の使用を検討してください。

相互TLS (mTLS) 認証は、クライアント証明書を使用して、クライアントとサーバー間のトラフィックが双方向で安全かつ信頼できることを保証します。mTLSは、アイデンティティプロバイダーを介して認証されないリクエスト(IoTデバイスなど)が、特定のリソースに到達できることを示すことも可能にします。