Azure API 管理ログを収集する

パーサーのバージョン: 1.0

以下でサポートされています。

このドキュメントでは、Azure Event Hub フィードを作成して Azure API Management ログを Google Security Operations に取り込む方法について説明します。

Azure API Management は、すべての環境の API を対象としたハイブリッド マルチクラウド管理プラットフォームです。組織は、API を外部、パートナー、内部のデベロッパーに公開して、データとサービスの可能性を最大限に引き出すことができます。API 管理は、API の検出、ゲートウェイ機能、セキュリティ ポリシー、分析、デベロッパー エンゲージメントのためのツールを提供します。診断ログには、リクエスト、レスポンス、エラーなど、API Gateway オペレーションに関する詳細情報が記録されます。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • Microsoft Azure ポータルへの特権アクセス。次の権限が必要です。
    • Event Hub 名前空間を作成する
    • Event Hubs を作成する
    • Azure API Management の診断設定を構成する
    • アクセス ポリシーを管理する
  • 既存の Azure API Management サービス インスタンス

Event Hub 名前空間を作成する

Event Hubs 名前空間は、1 つ以上の Event Hubs の管理コンテナです。

  1. Azure ポータルで、Event Hubs を検索します。
  2. [+ 作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定 値
    サブスクリプション Azure サブスクリプションを選択する
    リソース グループ 既存のものを選択するか、新しいものを作成
    Namespace name 一意の名前を入力します(例: secops-apim-eventhub)。
    ロケーション リージョンを選択します(例: East US)。
    料金ティア Standard(本番環境に推奨)
    スループット単位 1 から開始し、自動インフレを有効にする(推奨)
  4. [Review + create] をクリックします。

  5. 概要を確認し、[作成] をクリックします。

  6. デプロイが完了するまで待ちます(1 ~ 2 分)。

イベントハブを作成する

  1. 名前空間がデプロイされたら、Event Hub 名前空間に移動します。
  2. 左側のナビゲーションで、[エンティティ] の [Event Hubs] を選択します。
  3. [+ Event Hub] をクリックします。
  4. 次の構成情報を提供してください。

    設定 値
    名前 一意の名前を入力します(例: apim-logs)。
    パーティション数 40(Google SecOps の最適なスケーリングに推奨)
    メッセージの保持 7 日間(推奨される最小値)
    キャプチャ 無効(Google SecOps では不要)
  5. [作成] をクリックします。

Event Hub 接続文字列を取得する

Google SecOps では、Event Hub の認証に接続文字列が必要です。

  1. Event Hub 名前空間に移動します。
  2. 左側のナビゲーションで、[設定] の [共有アクセス ポリシー] を選択します。
  3. デフォルト ポリシーの RootManageSharedAccessKey をクリックします。
  4. 接続文字列の主キーをコピーします。
  5. この接続文字列を安全に保存します。
  • 例:

    Original: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=apim-logs
    
    Remove EntityPath: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
    

オプション B: Event Hub レベルの接続文字列

  1. (名前空間ではなく)イベント ハブに移動します。
  2. 左側のナビゲーションで、[設定] の [共有アクセス ポリシー] を選択します。
  3. [+ 追加] をクリックして、新しいポリシーを作成します。
  4. 次の構成情報を指定します。
    • ポリシー名: わかりやすい名前を入力します(例: chronicle-read)。
    • 権限: [聴取] のみを選択します(読み取り専用アクセス)。
  5. [作成] をクリックします。
  6. 新しく作成したポリシーをクリックします。
  7. 接続文字列 - プライマリ キーをコピーします。
  8. この接続文字列は安全に保存してください。

Event Hub にストリーミングするように Azure API Management を構成する

  1. Azure ポータルで、API Management サービスを検索します。
  2. API Management サービス インスタンスを選択します。
  3. 左側のナビゲーションで、[モニタリング] の [診断設定] を選択します。
  4. [+ 診断設定を追加] をクリックします。
  5. 次の構成情報を指定します。
    • 診断設定名: わかりやすい名前を入力します(例: apim-to-secops)。
    • [ログ] セクションで、次のカテゴリを選択します。
      • GatewayLogs: API Gateway のリクエストとレスポンスのログ
      • WebSocketConnectionLogs: WebSocket 接続ログ(該当する場合)
      • DeveloperPortalAuditLogs: デベロッパー ポータルの監査ログ(該当する場合)
      • GatewayLlmLogs: 生成 AI ゲートウェイ ログ(該当する場合)
      • GatewayMCPLogs: Model Context Protocol(MCP)サーバーログ(該当する場合)
    • [宛先の詳細] セクションで、[イベント ハブにストリーミングする] チェックボックスをオンにします。
    • サブスクリプション: Event Hubs の名前空間を含むサブスクリプションを選択します。
    • イベント ハブの名前空間: 前に作成した名前空間を選択します(secops-apim-eventhub など)。
    • イベントハブ名: 作成したイベントハブを選択します(例: apim-logs)。
    • イベント ハブ ポリシー名: [RootManageSharedAccessKey] または送信権限を持つカスタム ポリシーを選択します。
  6. [保存] をクリックします。

(省略可)チェックポイント処理用に Azure Blob Storage を構成する

Google SecOps は、Azure Blob Storage を使用して、処理されたイベントを追跡する Event Hub チェックポイントを保存できます。これにより、フィードが一時的に中断された場合に、重複して取り込まれるのを防ぐことができます。

チェックポイント処理用のストレージ アカウントを作成する

  1. Azure ポータルで、[ストレージ アカウント] を検索します。
  2. [+ 作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定 値
    サブスクリプション Azure サブスクリプションを選択する
    リソース グループ Event Hub と同じリソース グループを使用する
    ストレージ アカウント名 一意の名前を入力します(例: secopsapimcheckpoint)。
    リージョン Event Hub と同じリージョン
    パフォーマンス 標準
    冗長性 LRS(ローカル冗長ストレージ)
  4. [Review + create] をクリックします。

  5. [作成] をクリックします。

Blob コンテナを作成する

  1. 作成したストレージ アカウントに移動します。
  2. 左側のナビゲーションで、[データ ストレージ] の [コンテナ] を選択します。
  3. [+ コンテナ] をクリックします。
  4. 次の構成情報を指定します。
    • 名前: 「checkpoints」と入力します。
    • 公開アクセスレベル: 非公開(匿名アクセスなし)
  5. [作成] をクリックします。

ストレージ アカウントの認証情報を取得する

  1. ストレージ アカウントで、[セキュリティ + ネットワーキング] の [アクセスキー] を選択します。
  2. [キーを表示] をクリックします。
  3. コピーして保存します。
    • ストレージ アカウント名: ストレージ アカウントの名前
    • キー 1: アクセスキーの値

これらの値は、Google SecOps フィードの作成時に指定します。

(省略可)専用のコンシューマー グループを作成する

デフォルトでは、Event Hub は $Default という名前のコンシューマー グループを提供します。本番環境では、Google SecOps 専用のコンシューマ グループを作成することをおすすめします。

  1. (名前空間ではなく)イベント ハブに移動します。
  2. 左側のナビゲーションで、[エンティティ] の [コンシューマー グループ] を選択します。
  3. [+ コンシューマ グループ] をクリックします。
  4. 次の構成情報を指定します。
    • 名前: わかりやすい名前を入力します(例: chronicle)。
  5. [作成] をクリックします。

Azure API Management のログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを構成する] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Azure API Management Logs)。
  5. [ソースタイプ] として [Microsoft Azure Event Hub] を選択します。
  6. [ログタイプ] として [Azure API Management] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • Event Hub 接続文字列: 以前に記録した Event Hub 接続文字列を入力します。

    • Namespace レベルの接続文字列を使用している場合:

      • EntityPath パラメータを削除したことを確認します。
      • 次のフィールドでイベントハブ名も指定する必要があります。
    • イベントハブ レベルの接続文字列を使用している場合:

      • 接続文字列をそのまま使用する(EntityPath を含む)
      • [イベント ハブ名] フィールドは空白のままにできます。
    • イベントハブ名: イベントハブ名を入力します(例: apim-logs)。

      • 名前空間レベルの接続文字列を使用する場合は必須。
      • イベントハブ レベルの接続文字列を使用する場合は省略可。
    • コンシューマー グループ(省略可): コンシューマー グループ名を入力します。

      • デフォルトの $Default コンシューマー グループを使用する場合は空白のままにします
      • 専用のコンシューマー グループを作成した場合は、その名前(chronicle など)を入力します。
    • Blob Storage コンテナ名(省略可): チェックポイント設定の場合は、コンテナ名(checkpoints など)を入力します。

    チェックポイント処理に blob ストレージを提供する場合:

    • Azure ストレージ アカウント名: チェックポイント構成のストレージ アカウント名を入力します。
    • Azure ストレージ アカウント キー: チェックポイント構成のアクセスキーを入力します。

    • アセットの名前空間: アセットの名前空間

    • Ingestion labels: このフィードのイベントに適用されるラベル

  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

Google SecOps フィードの詳細については、Google SecOps フィードのドキュメントをご覧ください。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
Level_label additional.fields 統合済み
Sku_label additional.fields 統合済み
apiId_label additional.fields 統合済み
apiRevision_label additional.fields 統合済み
apimSubscriptionId_label additional.fields 統合済み
backendMethod_label additional.fields 統合済み
backendProtocol_label additional.fields 統合済み
backendResponseCode_label additional.fields 統合済み
backendTime_label additional.fields 統合済み
cache_label additional.fields 統合済み
clientProtocol_label additional.fields 統合済み
durationMs_label additional.fields 統合済み
eventName_label additional.fields 統合済み
eventid_label additional.fields 統合済み
functionInvocationId_label additional.fields 統合済み
functionName_label additional.fields 統合済み
hostInstanceId_label additional.fields 統合済み
hostVersion_label additional.fields 統合済み
isRequestSuccess_label additional.fields 統合済み
operationId_label additional.fields 統合済み
productId_label additional.fields 統合済み
properties.message metadata.description 直接マッピングされます。
time metadata.event_timestamp ISO8601 として解析
has_principal metadata.event_type マッピング: true → STATUS_UPDATE
operationName metadata.product_event_type 直接マッピングされます。
DeploymentVersion metadata.product_version 直接マッピングされます。
properties.method network.http.method 直接マッピングされます。
properties.responseCode network.http.response_code 直接マッピングされます。
properties.responseSize network.received_bytes 直接マッピングされます。
properties.requestSize network.sent_bytes 直接マッピングされます。
correlationId network.session_id 直接マッピングされます。
properties.clientTlsCipherSuite network.tls.cipher 直接マッピングされます。
properties.clientTlsVersion network.tls.version 直接マッピングされます。
callerIpAddress principal.asset.ip 統合済み
callerIpAddress principal.ip 統合済み
location principal.location.name 直接マッピングされます。
properties.url principal.url 直接マッピングされます。
properties.userId principal.user.userid 直接マッピングされます。
action security_result.action 統合済み
resultType security_result.action マッピング: Succeeded → action
category security_result.category_details 統合済み
properties.category security_result.category_details 統合済み
level security_result.severity 直接マッピングされます。
resultType security_result.summary 直接マッピングされます。
properties.appName target.application 直接マッピングされます。
properties.processId target.process.pid 直接マッピングされます。
roleInstance_label target.resource.attribute.labels 統合済み
resourceId target.resource.product_object_id 直接マッピングされます。
properties.backendUrl target.url 直接マッピングされます。
なし metadata.event_type 定数: GENERIC_EVENT
なし metadata.product_name 定数: AZURE API MANAGEMENT
なし metadata.vendor_name 定数: AZURE_API_MANAGEMENT
なし network.tls.version_protocol 定数: HTTP

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。