有效的記錄和監視可協助您偵測和回應 Databricks Apps 中的安全性事件。 應用程式會產生應用程式層級記錄和平台稽核記錄,您可以將其用於診斷、效能追蹤和安全性分析。
應用程式記錄
若要在 Databricks Apps UI 中或透過應用程式的 URL 提供記錄,您的應用程式必須將輸出寫入 stdout 和 stderr。
透過下列方式存取應用程式日誌:
- 應用程式介面:點擊應用程式的 日誌 標籤以查看標準輸出與錯誤。 如需詳細資訊,請參閱 檢視 Databricks 應用程式的詳細數據。
-
直接 URL:附加
/logz至您的應用程式 URL。 例如,如果您的應用程式 URL 是https://my-app-1234567890.my-instance.databricksapps.com,則可以在https://my-app-1234567890.my-instance.databricksapps.com/logz找到記錄。
備註
Azure Databricks 在應用程式運算關閉時不會持續保存日誌。 若要進行持續性記錄,請與外部記錄服務整合,或將記錄寫入 Unity 目錄磁碟區或資料表。
日誌條目依來源分組。 在 日誌 標籤中,使用 來源 篩選器顯示或隱藏每個來源的條目:
- 應用程式:你的應用程式標準輸出。
- 系統:平台訊息,關於應用程式生命週期,如部署與啟動。
- 建置:安裝相依性並建置應用程式時產生的輸出。
- HTTP:您的應用程式所處理請求的 HTTP 存取日誌。 請參見 HTTP 存取日誌。
HTTP 存取日誌
Databricks Apps 會為你的應用程式所服務的每個請求記錄 HTTP 存取日誌。 這些條目會顯示在 Logs 標籤的 HTTP 來源下方,以及 /logz URL 上,與你應用程式的標準輸出和錯誤並列。
存取日誌會記錄已認證與未驗證的請求,包括在抵達應用程式前被拒絕的請求,例如授權失敗的請求。 因為被拒絕的請求會被記錄,你可以將授權失敗的嘗試作為安全事件來審核。
以下限制適用於記錄內容:
- 為了保護敏感資料,查詢字串會從請求路徑中移除,因此作為查詢參數傳遞的標記或其他敏感值不會被記錄。
- 為了減少雜訊,平台內部的請求,如認證回撥與健康檢查,皆被排除。
在負載過重時,Azure Databricks 可能會遺失一些存取日誌條目。 當條目被刪除時,日誌會包含一條內嵌訊息,報告被刪除條目數量。
日誌輸入格式:每個日誌皆使用 Apache 綜合日誌格式。 以下是範例條目:
203.0.113.10 - jane.doe@example.com [23/Jul/2026:15:04:05 +0000] "GET /api/data HTTP/1.1" 200 1234 "https://apps.example.com/" "Mozilla/5.0"
每個條目包含以下欄位,依序排列。 空欄位會以連字號-()呈現。
| Field | Example | Description |
|---|---|---|
| 用戶端IP | 203.0.113.10 |
提出要求用戶端的 IP 位址。 |
| 使用者 | jane.doe@example.com |
已認證的使用者,或 - 是未認證的請求。 |
| 時間戳 | [23/Jul/2026:15:04:05 +0000] |
收到申請的日期和時間。 |
| 請求專線 | "GET /api/data HTTP/1.1" |
HTTP 方法、移除查詢字串的請求路徑,以及協定。 |
| 狀態代碼 | 200 |
HTTP 回應狀態代碼。 |
| 響應大小 | 1234 |
回應文體大小,以位元組為單位。 |
| 推薦者 | "https://apps.example.com/" |
請求標頭的 Referer 值。 |
| 使用者代理程式 | "Mozilla/5.0" |
請求標頭的 User-Agent 值。 |
與外部日誌記錄服務整合
如需持續性記錄和進階監控功能,請使用下列指令:
應用程式遙測(測試版):將追蹤、日誌和指標直接收集到 Unity Catalog 資料表中。 請參見 「為 Databricks 應用程式設定遙測」。
應用程式效能監控(APM)工具:使用 New Relic、Datadog 或類似的應用程式效能監控工具來收集和分析日誌、指標與追蹤資料。
自訂日誌持久化:定期將日誌寫入 Unity 目錄卷或資料表,以便長期儲存與分析。
請參閱 建議的記錄做法, 以取得記錄格式和內容的指引。
建議的記錄做法
若要與外部監控和即時警報系統整合:
- 將日誌格式化為 JSON 或其他機器可剖析的格式。
- 記錄帶有背景資訊的安全相關事件:
- 驗證和授權事件,包括使用者身分識別和結果
- 資料存取詳細資料,例如目錄、結構描述和資料表名稱
- 安全性相關錯誤,例如無效權杖、權限拒絕和可疑活動
- 將日誌轉送至外部系統。 整合 APM 或日誌彙整工具,以支援即時警示、安全事件回應、使用與效能分析,以及與 Azure Databricks 系統日誌的關聯。
日誌記錄的安全考量
Databricks 應用程式設計有下列內建控制項,以防止資料外流:
- 僅 API 存取:應用程式只能透過公開Azure Databricks API 存取Azure Databricks資源。 這些 API 可透過系統表格日誌進行稽核。
- 加密通訊:所有 API 流量均使用 TLS 1.2 或更高版本進行加密,以確保資料傳輸安全。
使用系統表格進行安全監控
Azure Databricks 會擷取 system.access.audit 表格中應用程式相關活動的稽核日誌。 您可以查詢這些日誌來追蹤使用者動作、應用程式設定變更和安全事件。
使用下列查詢來監視安全性相關活動,並偵測應用程式的潛在問題。
監控應用程式權限變更
使用此查詢來偵測應用程式權限修改:
-- Monitor all app permission modifications in the last 30 days
WITH permission_changes AS (
SELECT
event_date,
workspace_id,
request_params.request_object_id AS app_name,
user_identity.email AS modified_by,
explode(from_json(
request_params.access_control_list,
'array<struct<user_name:string,group_name:string,permission_level:string>>'
)) AS permission
FROM system.access.audit
WHERE action_name = 'changeAppsAcl'
AND event_date >= current_date() - 30
)
SELECT
event_date,
app_name,
modified_by,
permission.user_name,
permission.group_name,
permission.permission_level
FROM permission_changes
ORDER BY event_date DESC
識別具有使用者 API 範圍的應用程式
使用此查詢來尋找已設定使用者 API 範圍的應用程式:
-- Find apps created or updated in the last 30 days with user API scopes configured
SELECT
event_date,
get_json_object(request_params.app, '$.name') AS app_name,
user_identity.email AS creator_email,
get_json_object(request_params.app, '$.user_api_scopes') AS user_api_scopes
FROM system.access.audit
WHERE
action_name IN ('createApp', 'updateApp')
AND get_json_object(request_params.app, '$.user_api_scopes') IS NOT NULL
AND event_date >= current_date() - INTERVAL 30 DAYS
追蹤使用者授權動作
使用此查詢來列出以使用者授權執行的應用程式動作:
-- List app actions performed on behalf of users in the last 30 days
WITH obo_events AS (
SELECT
event_date,
workspace_id,
audit_level,
identity_metadata.acting_resource AS app_id, -- OAuth App ID or name
user_identity.email AS user_email, -- Logged-in user
service_name,
action_name
FROM system.access.audit
WHERE event_date >= current_date() - 30
AND identity_metadata.acting_resource IS NOT NULL
)
SELECT
event_date,
app_id,
user_email,
service_name,
action_name,
audit_level,
COUNT(*) AS event_count
FROM obo_events
GROUP BY
event_date, app_id, user_email, service_name, action_name, audit_level
ORDER BY event_date DESC;
營運監控
使用系統資料表來監控應用程式的作業層面,例如成本和資源用量。
監控應用程式成本
透過 system.billing.usage 表監視 Databricks Apps 的成本。 使用下列查詢來取得應用程式每天或每月的準確成本資訊:
-- Get Databricks Apps cost by app per day for the last 30 days
SELECT
us.usage_date,
us.usage_metadata.app_id,
us.usage_metadata.app_name,
SUM(us.usage_quantity) AS dbus,
SUM(us.usage_quantity * lp.pricing.effective_list.default) AS dollars
FROM
system.billing.usage us
LEFT JOIN system.billing.list_prices lp
ON lp.sku_name = us.sku_name
AND us.usage_start_time BETWEEN lp.price_start_time AND COALESCE(lp.price_end_time, NOW())
WHERE
billing_origin_product = 'APPS'
AND us.usage_unit = 'DBU'
AND us.usage_date >= DATE_SUB(NOW(), 30)
GROUP BY ALL
Databricks Apps 支援使用政策以協助追蹤成本。 關於如何設定使用政策,請參見 「無伺服器使用政策的屬性使用」。
監控應用程式洞察
這很重要
洞察分頁目前仍處於 測試階段。
應用程式詳情頁的 Insights 標籤顯示用戶互動與應用程式可用性。
使用者追蹤
檢視者表會追蹤哪些使用者存取你的應用程式。
Azure Databricks 會記錄使用者透過應用程式 URL 或 API 存取應用程式時的檢視事件。 它會以每位使用者、每個應用程式的獨特方式儲存資料。 同一使用者後續的造訪會覆蓋其先前的紀錄,而非建立新列。
最後一次查看的時間戳記遵循 30 分鐘的 OAuth 會話刷新週期。 在會話視窗內多次造訪會保留初始造訪時間,但會話結束後的第一次存取會覆蓋該時間戳記,顯示新的造訪時間。
備註
在 Beta 版本中,最後觀看的時間僅顯示協調世界時(UTC)。
正常運作時間與系統健康狀態
請監測以下健康訊號以排除應用程式可用性問題。
- App 服務健康:支援該應用程式的Azure Databricks基礎設施是否可用。 若無法使用,則表示平台存在服務水準問題。 聯絡 Databricks 客服。
- 應用程式可用性:特定應用程式是否會回應請求。 如果無法使用,請檢查程式碼是否有部署錯誤或當機。