Condividi tramite


Registrazione e monitoraggio per le app Databricks

La registrazione e il monitoraggio efficaci consentono di rilevare e rispondere agli eventi di sicurezza nelle app Databricks. Le app generano log a livello di applicazione e log di controllo della piattaforma, che è possibile usare per la diagnostica, il rilevamento delle prestazioni e l'analisi della sicurezza.

Registri applicazioni

Per rendere disponibili i log nell'interfaccia utente di Databricks Apps o tramite l'URL dell'app, l'app deve scrivere l'output in stdout e stderr.

Accedere ai log delle applicazioni nei modi seguenti:

  • Interfaccia utente delle app: Nella pagina dei dettagli dell'app fare clic sulla scheda Log per visualizzare l'output e l'errore standard. Per informazioni dettagliate, vedere Visualizzare i dettagli per un'app Databricks.
  • URL diretto: Aggiungere /logz all'URL dell'app. Ad esempio, se l'URL dell'app è https://my-app-1234567890.my-instance.databricksapps.com, i log sono disponibili in https://my-app-1234567890.my-instance.databricksapps.com/logz.

Annotazioni

Azure Databricks non rende persistenti i log quando il calcolo dell'app si arresta. Per la registrazione permanente, eseguire l'integrazione con servizi di registrazione esterni o scrivere log in volumi o tabelle del catalogo Unity.

Eseguire l'integrazione con i servizi di registrazione esterni

Per la registrazione permanente e le funzionalità di monitoraggio avanzate, usare quanto segue:

  • Strumenti di Application Performance Monitoring (APM): Usare New Relic, Datadog o strumenti di monitoraggio delle prestazioni dell'applicazione simili per raccogliere e analizzare log, metriche e tracce.
  • Persistenza log personalizzata: Scrivere periodicamente log in volumi o tabelle del catalogo Unity per l'archiviazione e l'analisi a lungo termine.

Per indicazioni sulla formattazione e sul contenuto dei log, vedere Procedure di registrazione consigliate .

Per l'integrazione con sistemi di monitoraggio esterno e avvisi in tempo reale:

  • Formattare i log in FORMATO JSON o in altri formati analizzabili dal computer.
  • Registrare gli eventi rilevanti per la sicurezza con il contesto:
    • Eventi di autenticazione e autorizzazione, inclusi l'identità e il risultato dell'utente
    • Dettagli di accesso ai dati, ad esempio catalogo, schema e nomi di tabella
    • Errori correlati alla sicurezza, ad esempio token non validi, negazioni delle autorizzazioni e attività sospette
  • Inoltrare i log ai sistemi esterni. Eseguire l'integrazione con strumenti di aggregazione log o APM per supportare avvisi in tempo reale, risposta agli eventi imprevisti di sicurezza, analisi delle prestazioni e utilizzo e correlazione con i log di sistema di Azure Databricks.

Considerazioni sulla sicurezza per la registrazione

Le app Databricks sono progettate con i controlli predefiniti seguenti per impedire l'esfiltrazione dei dati:

  • Accesso solo API: le app possono accedere solo alle risorse di Azure Databricks tramite API di Azure Databricks pubbliche. Queste API sono controllabili tramite i log delle tabelle di sistema.
  • Comunicazione crittografata: tutto il traffico DELL'API viene crittografato con TLS 1.2 o versione successiva per garantire il trasferimento sicuro dei dati.

Monitoraggio della sicurezza con tabelle di sistema

Azure Databricks acquisisce i log di controllo per le attività correlate all'app nella system.access.audit tabella. È possibile eseguire query su questi log per tenere traccia delle azioni dell'utente, delle modifiche alla configurazione delle app e degli eventi di sicurezza.

Usare le query seguenti per monitorare le attività correlate alla sicurezza e rilevare potenziali problemi con le app.

Monitorare le modifiche alle autorizzazioni dell'app

Usare questa query per rilevare le modifiche alle autorizzazioni dell'app:

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

Identificare le app con ambiti API utente

Usare questa query per trovare le app con ambiti api utente configurati:

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

Tenere traccia delle azioni di autorizzazione utente

Usare questa query per elencare le azioni dell'app eseguite con l'autorizzazione utente:

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

Monitoraggio operativo

Usare le tabelle di sistema per monitorare gli aspetti operativi delle app, ad esempio i costi e l'utilizzo delle risorse.

Monitorare i costi delle app

Monitorare i costi di Databricks Apps usando la system.billing.usage tabella . Usare la query seguente per ottenere informazioni accurate sui costi per le app al giorno o al mese:

-- 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 supporta i criteri di budget per tenere traccia dei costi. Per informazioni sulla configurazione delle politiche di budget, consultare Utilizzo degli attributi con le politiche di budget serverless.

Monitorare le informazioni dettagliate sulle app

Importante

La scheda Insights è in versione beta.

La scheda Insights nella pagina dei dettagli dell'app mostra l'engagement degli utenti e la disponibilità delle app.

Rilevamento del visualizzatore

La tabella Visualizzatori tiene traccia degli utenti che accedono all'applicazione.

Azure Databricks registra un evento di visualizzazione quando un utente accede all'app tramite l'URL dell'app o tramite l'accesso all'API. Archivia i dati come univoci per utente, per app. Le visite successive dello stesso utente sovrascrivono il record precedente anziché creare una nuova riga.

L'ultimo timestamp visualizzato segue un ciclo di aggiornamento della sessione OAuth di 30 minuti. Più visite all'interno della finestra della sessione mantengono il tempo di visita iniziale, ma il primo accesso dopo la scadenza della sessione sovrascrive il timestamp con il nuovo tempo di visita.

Annotazioni

In versione Beta, l'orario dell'ultima visualizzazione mostra solo l'ora universale coordinata (UTC, Coordinated Universal Time).

Tempo di operatività e stato di salute

Monitorare i seguenti segnali di stato per risolvere problemi di disponibilità delle app.

  • Stato di salute del servizio app: indica se l'infrastruttura di Azure Databricks che supporta l'app è disponibile. Se non è disponibile, si verifica un problema a livello di servizio con la piattaforma. Contattare il supporto tecnico di Databricks.
  • Disponibilità dell'app: indica se l'applicazione specifica gestisce le richieste. Se non è disponibile, verificare la presenza di errori di distribuzione o arresti anomali nel codice.