收集 Azure API 管理記錄
剖析器版本:1.0
本文說明如何建立 Azure 事件中樞動態饋給,將 Azure API 管理記錄擷取至 Google Security Operations。
Azure API 管理是混合式多雲管理平台,可管理所有環境中的 API。協助機構向外部、合作夥伴和內部開發人員發布 API,充分發揮資料和服務的潛力。API 管理服務提供 API 探索、閘道功能、安全政策、數據分析和開發人員參與度等工具。診斷記錄會擷取 API 閘道作業的詳細資訊,包括要求、回應和錯誤。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備下列權限的 Microsoft Azure 入口網站特殊存取權:
- 建立 Event Hub 命名空間
- 建立事件中樞
- 設定 Azure API 管理的診斷設定
- 管理存取權政策
現有的 Azure API 管理服務執行個體
建立 Event Hubs 命名空間
事件中樞命名空間是管理容器,可容納一或多個事件中樞。
- 在 Azure 入口網站中,搜尋 Event Hubs。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 命名空間名稱 輸入不重複的名稱 (例如 secops-apim-eventhub)位置 選取區域 (例如 East US)定價方案 標準 (建議用於正式環境) 處理量單位 從 1 開始,啟用自動增加功能 (建議) 按一下「Review + create」。
查看總覽,然後按一下「建立」。
等待部署作業完成 (1 到 2 分鐘)。
建立事件中樞
- 部署命名空間後,請前往 Event Hub 命名空間。
- 在左側導覽面板中,選取「實體」下方的「事件中樞」。
- 按一下「+ Event Hub」。
請提供下列設定詳細資料:
設定 值 名稱 輸入不重複的名稱 (例如 apim-logs)分區數量 40 (建議使用,可發揮 Google SecOps 的最大效益) 訊息保留時間 7 天 (建議至少) 擷取 已停用 (Google SecOps 不需要) 點選「建立」。
取得事件中樞連線字串
Google SecOps 需要連線字串,才能向事件中樞驗證。
選項 A:命名空間層級的連線字串 (建議)
- 前往 Event Hub 命名空間。
- 在左側導覽中,選取「設定」下方的「共用存取權政策」。
- 按一下預設政策「RootManageSharedAccessKey」RootManageSharedAccessKey。
- 複製「連線字串 - 主要金鑰」。
- 請妥善儲存這個連線字串。
範例:
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」(不是命名空間)。
- 在左側導覽中,選取「設定」下方的「共用存取權政策」。
- 按一下「+ 新增」建立新政策。
- 請提供下列設定詳細資料:
- 政策名稱:輸入描述性名稱 (例如
chronicle-read) - 權限:僅選取「收聽」 (唯讀存取權)
- 政策名稱:輸入描述性名稱 (例如
- 點選「建立」。
- 按一下新建立的政策。
- 複製「連線字串 - 主要金鑰」。
請妥善儲存這個連線字串。
設定 Azure API 管理服務,將串流傳輸至 Event Hub
- 在 Azure 入口網站中,搜尋 API 管理服務。
- 選取 API 管理服務執行個體。
- 在左側導覽面板中,選取「監控」下方的「診斷設定」。
- 按一下「+ 新增診斷設定」。
- 請提供下列設定詳細資料:
- 診斷設定名稱:輸入描述性名稱 (例如
apim-to-secops)。 - 在「記錄」部分中,選取下列類別:
- GatewayLogs:API 閘道要求和回應記錄
- WebSocketConnectionLogs:WebSocket 連線記錄 (如適用)
- DeveloperPortalAuditLogs:開發人員入口網站稽核記錄 (如適用)
- GatewayLlmLogs:生成式 AI 閘道記錄 (如適用)
- GatewayMCPLogs:Model Context Protocol (MCP) 伺服器記錄 (如適用)
- 在「目的地詳細資料」部分,勾選「將資料串流至事件中樞」核取方塊。
- 「Subscription」(訂閱項目):選取包含 Event Hub 命名空間的訂閱項目。
- Event Hubs 命名空間:選取您先前建立的命名空間 (例如
secops-apim-eventhub)。 - 事件中樞名稱:選取您建立的事件中樞 (例如
apim-logs)。 - 事件中樞政策名稱:選取「RootManageSharedAccessKey」或具有傳送權限的自訂政策。
- 診斷設定名稱:輸入描述性名稱 (例如
按一下 [儲存]。
(選用) 設定 Azure Blob 儲存體以進行檢查點作業
Google SecOps 可使用 Azure Blob Storage 儲存事件中樞檢查點,追蹤已處理的事件。如果動態饋給暫時中斷,可避免重複擷取資料。
建立檢查點的儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 使用與事件中樞相同的資源群組 儲存體帳戶名稱 輸入不重複的名稱 (例如 secopsapimcheckpoint)區域 與事件中樞相同的區域 效能 標準 備援功能 LRS (本地備援儲存體) 按一下「Review + create」。
點選「建立」。
建立 Blob 容器
- 前往您剛建立的儲存空間帳戶。
- 在左側導覽中,選取「資料儲存」下方的「容器」。
- 按一下「+ 容器」。
- 請提供下列設定詳細資料:
- 「Name」(名稱):輸入
checkpoints - 公開存取層級:私人 (不允許匿名存取)
- 「Name」(名稱):輸入
- 點選「建立」。
取得儲存空間帳戶憑證
- 在儲存空間帳戶中,選取「安全性 + 網路」下方的「存取金鑰」。
- 按一下「顯示金鑰」。
- 複製並儲存:
- 儲存體帳戶名稱:儲存體帳戶的名稱
- 金鑰 1:存取金鑰值
建立 Google SecOps 資訊提供時,您會提供這些值。
(選用) 建立專屬的消費者群組
根據預設,事件中樞會提供名為 $Default 的消費者群組。如果是正式環境,建議為 Google SecOps 建立專屬的消費者群組。
- 前往「Event Hub」(不是命名空間)。
- 在左側導覽面板中,選取「實體」下方的「消費者群組」。
- 按一下「+ 消費者群組」。
- 請提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
chronicle)
- 名稱:輸入描述性名稱 (例如
點選「建立」。
在 Google SecOps 中設定動態饋給,擷取 Azure API 管理記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Azure API Management Logs)。 - 選取「Microsoft Azure Event Hub」做為「來源類型」。
- 選取「Azure API 管理」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
事件中樞連接字串:輸入先前擷取的事件中樞連接字串
如果使用命名空間層級的連線字串:
- 請確認已移除
EntityPath參數 - 您也必須在下一個欄位中提供事件中樞名稱
- 請確認已移除
如果使用事件中心層級的連線字串:
- 直接使用連線字串 (包括
EntityPath) - 「事件中樞名稱」欄位可以留空
- 直接使用連線字串 (包括
事件中樞名稱:輸入事件中樞名稱 (例如
apim-logs)- 如果使用命名空間層級的連線字串,則為必要項目。
- 如果使用事件中樞層級的連線字串,則為選用屬性。
消費者群組 (選用):輸入消費者群組名稱
- 如要使用預設的
$Default消費者群組,請留空 - 如果您建立了專屬的消費者群組,請輸入該群組的名稱 (例如
chronicle)。
- 如要使用預設的
Blob 儲存體容器名稱 (選用):如要檢查點,請輸入容器名稱 (例如
checkpoints)
如果提供 Blob 儲存空間做為檢查點:
- Azure 儲存體帳戶名稱:輸入檢查點設定中的儲存體帳戶名稱
Azure 儲存體帳戶金鑰:輸入檢查點設定中的存取金鑰
資產命名空間:資產命名空間
擷取標籤:要套用至這個動態饋給事件的標籤
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
如要進一步瞭解 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 專業人員尋求答案。