Freigeben über


Protokollierung und Überwachung für Databricks-Apps

Effektive Protokollierung und Überwachung helfen Ihnen, Sicherheitsereignisse in Databricks-Apps zu erkennen und darauf zu reagieren. Apps generieren sowohl Protokolle auf Anwendungsebene als auch Plattformüberwachungsprotokolle, die Sie für Diagnose, Leistungsnachverfolgung und Sicherheitsanalysen verwenden können.

Anwendungsprotokolle

Damit Protokolle in der Benutzeroberfläche von Databricks-Apps oder über die URL Ihrer App verfügbar sind, muss Ihre App die Ausgabe an stdout und stderr übergeben.

Auf folgende Weise auf Anwendungsprotokolle zugreifen:

  • Benutzeroberfläche von Apps: Klicken Sie auf der Seite "App-Details" auf die Registerkarte "Protokolle ", um die Standardausgabe und den Fehler anzuzeigen. Ausführliche Informationen finden Sie unter Details zu einer Databricks-App anzeigen.
  • Direkte URL: Fügen Sie /logz zu Ihrer App-URL hinzu. Wenn Ihre App-URL beispielsweise lautet https://my-app-1234567890.my-instance.databricksapps.com, sind Protokolle unter https://my-app-1234567890.my-instance.databricksapps.com/logz verfügbar.

Hinweis

Azure Databricks speichert keine Protokolle, wenn die App heruntergefahren wird. Um eine dauerhafte Protokollierung zu gewährleisten, integrieren Sie externe Protokollierungsdienste, oder schreiben Sie Protokolle in Unity Katalog-Volumes oder -Tabellen.

Integration mit externen Logging-Diensten

Verwenden Sie für die dauerhafte Protokollierung und erweiterte Überwachungsfunktionen Folgendes:

  • Tools zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM): Verwenden Sie New Relic, Datadog oder ähnliche Tools zur Anwendungsleistungsüberwachung, um Protokolle, Metriken und Ablaufverfolgungen zu sammeln und zu analysieren.
  • Benutzerdefinierte Protokollpersistenz: Schreiben Sie Protokolle regelmäßig in Unity-Katalogvolumes oder Tabellen für langfristige Speicherung und Analyse.

Anleitungen zur Protokollformatierung und -inhalte finden Sie unter "Empfohlene Protokollierungsmethoden ".

So integrieren Sie externe Überwachungs- und Echtzeitbenachrichtigungssysteme:

  • Formatieren von Protokollen in JSON- oder anderen maschinenparseierbaren Formaten.
  • Protokollieren Sie sicherheitsrelevante Ereignisse mit Kontext:
    • Authentifizierungs- und Autorisierungsereignisse, einschließlich Benutzeridentität und Ergebnis
    • Datenzugriffsdetails, z. B. Katalog-, Schema- und Tabellennamen
    • Sicherheitsbezogene Fehler, z. B. ungültige Token, Berechtigungsverweigerungen und verdächtige Aktivitäten
  • Weiterleiten von Protokollen an externe Systeme. Integration in APM- oder Protokollaggregationstools zur Unterstützung von Echtzeitwarnungen, Reaktion auf Sicherheitsvorfälle, Nutzungs- und Leistungsanalysen sowie Korrelation mit Azure Databricks-Systemprotokollen.

Sicherheitsüberlegungen für die Protokollierung

Databricks-Apps wurden mit den folgenden integrierten Steuerelementen entwickelt, um Datenexfiltration zu verhindern:

  • Nur API-Zugriff: Apps können nur über öffentliche Azure Databricks-APIs auf Azure Databricks-Ressourcen zugreifen. Diese APIs können über Systemtabellenprotokolle überwacht werden.
  • Verschlüsselte Kommunikation: Der gesamte API-Datenverkehr wird mit TLS 1.2 oder höher verschlüsselt, um eine sichere Datenübertragung zu gewährleisten.

Sicherheitsüberwachung mit Systemtabellen

Azure Databricks erfasst Überwachungsprotokolle für App-bezogene Aktivitäten in der system.access.audit Tabelle. Sie können diese Protokolle abfragen, um Benutzeraktionen, App-Konfigurationsänderungen und Sicherheitsereignisse nachzuverfolgen.

Verwenden Sie Überwachungsprotokolle, um die folgenden allgemeinen Überwachungs- und Sicherheitsszenarien zu unterstützen:

Verwenden Sie die folgenden Abfragen, um sicherheitsbezogene Aktivitäten zu überwachen und potenzielle Probleme mit Ihren Apps zu erkennen.

Überwachen von App-Berechtigungsänderungen

Verwenden Sie diese Abfrage, um App-Berechtigungsänderungen zu erkennen:

-- 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

Identifizieren von Apps mit Benutzer-API-Bereichen

Verwenden Sie diese Abfrage, um Apps mit konfigurierten Benutzer-API-Bereichen zu finden:

-- 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

Nachverfolgen von Benutzerautorisierungsaktionen

Verwenden Sie diese Abfrage zum Auflisten von App-Aktionen, die mit benutzerautorisierung ausgeführt werden:

-- 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;

Betriebsüberwachung

Verwenden Sie Systemtabellen, um betriebliche Aspekte Ihrer Apps zu überwachen, z. B. Kosten und Ressourcennutzung.

Überwachen der App-Kosten

Überwachen sie die Kosten von Databricks Apps mithilfe der system.billing.usage Tabelle. Verwenden Sie die folgende Abfrage, um genaue Kosteninformationen für Apps pro Tag oder Monat zu erhalten:

-- 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 unterstützt Budgetrichtlinien, um Kosten nachzuverfolgen. Informationen zum Konfigurieren von Budgetrichtlinien finden Sie unter Attributverwendung mit serverlosen Budgetrichtlinien.