概要
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) |
Apigee コンソールでシャドー API 検出にアクセスする
Apigee コンソールでシャドー API 検出にアクセスするには:
- Google Cloud コンソールの Apigee UI にログインします。
- [API モニタリング] > [シャドー API] に移動します。
- メインページには、すでに生成された API のモニタリング内容が表示されます。[API モニタリング] タブと [モニタリング ジョブ] タブを選択して、結果の表示とモニタリング ジョブの作成を切り替えます。
モニタリング ジョブを作成する
モニタリング ジョブは、シャドー API の検出に必要なシャドー API の検出手順を提示します。次の手順に沿ってモニタリング ジョブを作成します。モニタリング ジョブの作成に適用される動作と制限事項に留意してください。
- [モニタリング ジョブ] タブを選択し、[モニタリング ジョブを作成] をクリックします。
- モニタリング ソースを 1 つ以上選択するか、必要に応じて、[モニタリング ソース] リストの下部にある [モニタリング ソースを作成] をクリックし、ソース ロケーションを新規作成します。モニタリング ソースの作成には数分かかることもあります。
モニタリング ソースには、以下が含まれます。
ソース名: ソースを識別するために指定する名前。
ロケーション: モニタリングを実施するロケーション。ソースリージョンを追加すると、インフラストラクチャ全体の API を幅広く把握できます。ベスト プラクティスをご覧ください。1 つのロケーションに作成できるモニタリング ソースは 1 つのみです。
ネットワークとサブネットワーク: VPC ネットワークとサブネットワーク。サブネットワークは、モニタリング ソースのロケーションと同じリージョンに存在する必要があります。 - モニタリング ジョブを作成します。モニタリング ジョブ名を指定します。このジョブ名は、ロケーションごとに一意であることが必要です。ロケーションを選択します。これによって、データの集計と処理を行う場所が指定されます。ソース リージョンで収集されたデータはすべて、Google のデータ所在地ポリシーに沿って、このリージョンで処理され、同リージョンからアクセスされます。新しいモニタリング ジョブの作成が完了するまでに数分を要する場合があります。
- モニタリング ジョブを有効にします(省略可)。作成時にジョブを有効にすると、直ちにモニタリングが開始されます。ジョブを直ちに有効にしない場合は、後でモニタリング ジョブリストからモニタリング ジョブを有効にすることができます。
モニタリング ジョブを有効化、無効化、削除する
既存のモニタリング ジョブを有効(アクティブ)にするかどうかを切り替えるには、[モニタリング ジョブ] ページで、対象ジョブの行の [操作] メニューから [有効にする] または [無効にする] を選択します。
既存のモニタリング ジョブを削除するには、対象ジョブの [操作] メニューから [削除] を選択します。ジョブを削除すると、ジョブに関連付けられたモニタリング結果も削除されます。ジョブの続行を停止しつつ結果を保持する場合は、ジョブを削除するのではなく無効にしてください。アクティブなジョブは削除できません。削除する必要がある場合は、まずアクティブなジョブを無効にします。
API のモニタリングを表示する
有効なモニタリング ジョブの API モニタリングを表示するには、[API モニタリング] タブを選択して、リストから [モニタリング ジョブ] を選択します。
モニタリング リストには、次の値が表示されます。
- ホスト名: API ホスト名。ホスト名をクリックすると、モニタリングの詳細が表示されます。
- API オペレーション: モニタリング対象の API オペレーション(GET リクエストや PUT リクエストなど)の数。
- サーバー IP: 検出された API をホストするサーバーの IP。
- ソースのロケーション: トラフィックがモニタリングされたソースのロケーション。
- 前回のイベント検出日時(UTC): API への最新のリクエストが検出された日時。
- タグ: ご自分または他のユーザーがこのモニタリングにラベルを付けるために作成したタグのリスト。詳細については、タグを使用するをご覧ください。
- アクション: 各モニタリングに対して利用できる追加のアクション。
モニタリングの詳細を表示する
モニタリング リストでホスト名をクリックすると、モニタリングの詳細ページが表示されます。
このページには、モニタリングに関する次の情報が表示されます。
- ページの上部にある概要ボックスは、以下の情報が表示されます。
- API モニタリング ID: Apigee 固有の識別子です。
- API オペレーション: このフィールドの説明については、API のモニタリング結果を表示するをご覧ください。
- 作成日時(UTC): モニタリング ジョブが作成された日時。
- タグ: モニタリング ジョブの結果を整理するためにタグを使用します。
- 最後のイベント検出時刻: このフィールドの説明については、API のモニタリング結果を表示するをご覧ください。
- この検出済み API で検出された特定の API オペレーションの表。リクエストごとに、以下の情報が表示されます。
- パス: リクエストパス。
- メソッド: リクエスト メソッド(GET、PUT など)。
- カウント: 該当するメソッドで対象のパスに送信されたリクエストの数。
- トランザクション リクエスト: トラフィック データのリクエスト本文。この API オペレーションのリクエスト ヘッダーと対応するトランザクション数が含まれます。
- トランザクション レスポンス ヘッダー: トラフィック データのレスポンス ヘッダー。この API オペレーションのレスポンスのヘッダーと対応するトランザクション数が含まれます。
- トランザクション レスポンス コード: この API オペレーションのレスポンス コードと、そのコードを含む対応するレスポンス数。
- 初回検出日時(UTC): この API オペレーションへのリクエストが最初に検出された日時。
- 最終検出日時(UTC): この API オペレーションへのリクエストが最後に検出された日時。
タグを使用する
タグを使用すると、モニタリング結果を分類できます。タグはメタデータであり、トラッキング専用です。タグによってモニタリング結果が変更される、またはアクションがトリガーされることはありません。たとえば、「Needs attention」タグを追加しても、通知やアラートは作成されません。新しいモニタリング結果にはタグが設定されていません。
タグには次の特徴があります。
- 同じタグを複数のモニタリング結果に追加できます。
- タグ名には、大文字と小文字の英字、数字、特殊文字(スペースを含む)を使用できます。
- タグが作成された後、名前を変更することはできません。名前を変更するには、タグを削除して再作成します。
- すべてのモニタリング結果からタグを削除すると、システムからタグが削除されます。
タグは、モニタリング リストまたはモニタリングの詳細ページから管理できます。
API モニタリング リストからタグを管理するには:
- 既存のタグは、モニタリング リストの [タグ] 列で確認できます。
- 1 件の結果のタグを管理するには、結果の行の [操作] メニューから [タグを管理] を選択します。
- 1 つ以上の結果のタグを同時に管理するには、リストから複数の結果を選択し、リストの上部にある [タグを管理] をクリックします。
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 つを超えるモニタリング ジョブが必要な場合は、そのユースケースについて Google Cloud カスタマーケアにお問い合わせください。
- モニタリング ジョブは作成、無効化、削除できますが、編集はできません。モニタリング ジョブを変更する必要がある場合は、一旦削除して再作成します。
- 現時点では、シャドー API 検出ジョブがサポートされているのは、一部のリージョンに限られます。このリクエストでサポートされているリージョンの一覧をご覧ください。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://apim.googleapis.com/v1alpha/projects/{PROJECT}/locations