シャドー API 検出の概要

概要

Apigee シャドー API 検出は、既存のクラウド インフラストラクチャ内のシャドー API(ドキュメント化されていない API とも呼ばれます)を検出します。シャドー API は、セキュリティ保護、モニタリング、メンテナンスが不十分な可能性があるため、システムにセキュリティ上のリスクをもたらします。

シャドー API 検出を使用しても、ランタイム トラフィックに重大な影響や遅延は発生しません。

このページの API モニタリングの結果の設定と表示の手順は、Cloud コンソールの Apigee UI に基づいています。Apigee Management(APIM)API を使用して、シャドー API 検出を管理することもできます。シャドー API 検出管理 API をご覧ください。

シャドー API 検出を有効にする

シャドー API 検出は、Apigee Advanced API Security アドオンの一部です。シャドー API 検出の場合、アドオンは組織ごとに適用されます。サブスクリプション ユーザーの場合は、Apigee 組織で利用できます。ただし、従量課金制をご利用の場合は、少なくとも 1 つの環境でアドオンを有効にする必要があります。Apigee 評価環境ではシャドー API 検出を使用できません。

この機能を使用するには、アドオンを有効にする必要があります。サブスクリプションをご利用の場合は、組織のアドオンを有効にできます。詳細については、サブスクリプションを使用する組織の Advanced API Security を管理するをご覧ください。従量課金制をご利用の場合は、対象となる環境でアドオンを有効にできます。詳細については、Advanced API Security アドオンを管理するをご覧ください。

シャドー API 検出に必要なロールと権限

次の表に、シャドー API 検出に関連するタスクを実行するために必要なロールを示します。

タスク 必要なロール
Advanced API Security を有効または無効にする Apigee 組織管理者(roles/apigee.admin)
モニタリングのソースとジョブを作成する API 管理の管理者(roles/apim.admin)
モニタリング結果を表示する API 管理閲覧者(roles/apim.viewer)

P4SA の権限を追加する

プロジェクトのプロダクトごと、プロジェクトごとのサービス アカウント(P4SA)にロールを追加して、モニタリング ジョブを有効に設定できるようにします。APIM API 検出サービス エージェントのロールを service-PROJECT_NUMBER@gcp-sa-apim.iam.gserviceaccount.com に追加します。

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apim.iam.gserviceaccount.com" \
--role="roles/apim.apiDiscoveryServiceAgent"

Apigee コンソールでシャドー API 検出にアクセスする

Apigee コンソールでシャドー API 検出にアクセスするには:

  1. Google Cloud コンソールの Apigee UI にログインします。
  2. [API モニタリング] > [シャドー API] に移動します。
  3. メインページには、すでに生成された API のモニタリング内容が表示されます。[API モニタリング] タブと [モニタリング ジョブ] タブを選択して、結果の表示モニタリング ジョブの作成を切り替えます。

モニタリング ジョブを作成する

モニタリング ジョブは、シャドー API の検出に必要なシャドー API の検出手順を提示します。次の手順に沿ってモニタリング ジョブを作成します。モニタリング ジョブの作成に適用される動作と制限事項に留意してください。

  1. [モニタリング ジョブ] タブを選択し、[モニタリング ジョブを作成] をクリックします。
  2. 1 つ以上のモニタリング ソースを選択します。
    または
  3. [モニタリング ソース] リストの下部にある [モニタリング ソースを作成] をクリックして、必要に応じて新しいソースのロケーションを作成します。モニタリング ソースの作成プロセスには数分を要する場合があります。

    ソース名: ソースを識別するために指定する名前。
    ロケーション: モニタリングを実施するロケーション。ソースリージョンを追加すると、インフラストラクチャ全体の API を幅広く把握できます。ベスト プラクティスをご覧ください。1 つのロケーションに作成できるモニタリング ソースは 1 つのみです。
    ネットワークサブネットワーク: VPC ネットワークとサブネットワーク。サブネットワークは、モニタリング ソースのロケーションと同じリージョンに存在する必要があります。
  4. モニタリング ジョブを作成します。モニタリング ジョブ名を指定します。このジョブ名は、ロケーションごとに一意であることが必要です。ロケーションを選択します。これによって、データの集計と処理を行う場所が指定されます。ソース リージョンで収集されたデータはすべて、Google のデータ所在地ポリシーに沿って、このリージョンで処理され、同リージョンからアクセスされます。新しいモニタリング ジョブの作成が完了するまでに数分を要する場合があります。
  5. モニタリング ジョブを有効にします(省略可)。作成時にジョブを有効にすると、直ちにモニタリングが開始されます。ジョブを直ちに有効にしない場合は、後でモニタリング ジョブリストからモニタリング ジョブを有効にすることができます。

モニタリング ジョブを有効化、無効化、削除する

既存のモニタリング ジョブを有効(アクティブ)にするかどうかを切り替えるには、[モニタリング ジョブ] ページで、対象ジョブの行の [操作] メニューから [有効にする] または [無効にする] を選択します。

既存のモニタリング ジョブを削除するには、対象ジョブの [操作] メニューから [削除] を選択します。ジョブを削除すると、ジョブに関連付けられたモニタリング結果も削除されます。ジョブの続行を停止しつつ結果を保持する場合は、ジョブを削除するのではなく無効にしてください。アクティブなジョブは削除できません。削除する必要がある場合は、まずアクティブなジョブを無効にします。

API のモニタリングを表示する

有効なモニタリング ジョブの API モニタリングを表示するには、[API モニタリング] タブを選択して、リストから [モニタリング ジョブ] を選択します。

API の [モニタリング] ページ

モニタリング リストには、次の値が表示されます。

  • ホスト名: API ホスト名。ホスト名をクリックすると、モニタリングの詳細が表示されます。
  • API オペレーション: モニタリング対象の API オペレーション(GET リクエストや PUT リクエストなど)の数。
  • サーバー IP: 検出された API をホストするサーバーの IP。
  • ソースのロケーション: トラフィックが検出されたソースのロケーション。
  • 前回のイベント検出日時(UTC): API への最新のリクエストが検出された日時。

モニタリングの詳細を表示する

モニタリング リストでホスト名をクリックすると、モニタリングの詳細ページが表示されます。

API モニタリングに関する詳細

このページには、モニタリングに関する次の情報が表示されます。

  • ページの上部にある概要ボックスは、以下の情報が表示されます。
  • この検出済み API で検出された特定の API オペレーションの表。リクエストごとに、以下の情報が表示されます。
    • パス: リクエストパス。
    • メソッド: リクエスト メソッド(GET、PUT など)。
    • カウント: 該当するメソッドで対象のパスに送信されたリクエストの数。
    • トランザクション リクエスト: トラフィック データのリクエスト本文。この API オペレーションのリクエスト ヘッダーと対応するトランザクション数が含まれます。
    • トランザクション レスポンス ヘッダー: トラフィック データのレスポンス ヘッダー。この API オペレーションのレスポンスのヘッダーと対応するトランザクション数が含まれます。
    • トランザクション レスポンス コード: この API オペレーションのレスポンス コードと、そのコードを含む対応するレスポンス数。
    • 初回検出日時(UTC): この API オペレーションへのリクエストが最初に検出された日時。
    • 最終検出日時(UTC): この API オペレーションへのリクエストが最後に検出された日時。

ベスト プラクティス

シャドー API 検出を使用する場合は、次の方法をおすすめします。

  • 組織のデータ所在地ルールに従い、適用される規制と法律を遵守してください。
  • 可能な限り多くのソース リージョンから集計して、リージョン間の相関を適切に把握します。検出ジョブにソースリージョンを追加すると、インフラストラクチャ全体にわたり広範囲の API を把握できます。

動作と制限事項

このセクションでは、シャドー API 検出に適用される動作と制限事項を示します。

  • シャドー API 検出を使用しても、トラフィックの 100% をモニタリングする保証やすべてのシャドー API を検出する保証はありません。
  • シャドー API 検出は、Google Cloud インフラストラクチャ上のシャドー API のみを検出します。
  • シャドー API 検出は、現時点ではリージョン アプリケーション ロードバランサのみをサポートしています。
  • シャドー API 検出は、gRPC ではなく HTTP プロトコル API を検出します。
  • 警告: シャドー API 検出は、プロジェクトごとに 1 つのネットワークのロードバランサをサポートします。複数のネットワークを持つプロジェクトでシャドー API 検出を有効にすると、予期しない動作が発生する可能性があります。
  • 警告: シャドー API 検出を有効にすると、プロジェクト内のすべてのネットワークで、ロードバランサ呼び出しのレイテンシが増大する可能性があります。
  • 新たに有効に設定されたモニタリング ジョブがトラフィックを検出するまでに最大 60 分を要する場合があります。
  • シャドー API を検出するには、モニタリング対象のプロジェクトのロードバランサを通過するトラフィックが必要です。シャドー API 検出には、トラフィック量にもよりますが、少なくとも数分から数時間のトラフィック検出が必要となります。トラフィックがまばらな場合は、結果が得られるまでにより長いモニタリング時間が必要となります。
  • 各リージョンで、モニタリング ソースは 1 つに、モニタリング ジョブは最大 3 つに制限されています。3 つを超えるモニタリング ジョブが必要な場合は、そのユースケースについて Apigee サポートにお問い合わせください。
  • モニタリング ジョブは作成、無効化、削除できますが、編集はできません。モニタリング ジョブを変更する必要がある場合は、削除して再作成します。
  • 現時点では、シャドー API 検出ジョブがサポートされているのは一部のリージョンのみです。