Sdílet prostřednictvím


Protokolování a monitorování pro aplikace Databricks

Efektivní protokolování a monitorování vám pomůže rozpoznat události zabezpečení v Databricks Apps a reagovat na ně. Aplikace generují protokoly na úrovni aplikace i protokoly auditu platformy, které můžete použít pro diagnostiku, sledování výkonu a analýzu zabezpečení.

Protokoly aplikací

Aby byly protokoly dostupné v uživatelském rozhraní Databricks Apps nebo prostřednictvím adresy URL vaší aplikace, musí aplikace zapisovat výstup do stdout a stderr.

Přístup k protokolům aplikace následujícími způsoby:

  • Uživatelské rozhraní aplikací: Na stránce podrobností aplikace klikněte na kartu Protokoly a zobrazte standardní výstup a chybu. Podrobnosti viz Zobrazit podrobnosti o aplikaci Databricks.
  • Přímá adresa URL: Přidejte /logz na konec adresy URL aplikace. Pokud je například adresa URL vaší aplikace https://my-app-1234567890.my-instance.databricksapps.com, protokoly jsou k dispozici na https://my-app-1234567890.my-instance.databricksapps.com/logz.

Poznámka:

Azure Databricks neuchovává protokoly při vypnutí výpočetních prostředků aplikace. Pro trvalé protokolování se integrujte s externími službami protokolování nebo zapisujte protokoly do svazků nebo tabulek katalogu Unity.

Integrace s externími službami logování

K trvalému protokolování a pokročilým možnostem monitorování použijte následující:

  • Nástroje Application Performance Monitoring (APM): Použijte New Relic, Datadog nebo podobné nástroje pro monitorování výkonu aplikací ke shromažďování a analýze protokolů, metrik a sledování.
  • Vlastní trvalost protokolů: Protokoly pravidelně zapisujte do svazků nebo tabulek katalogu Unity pro dlouhodobé ukládání a analýzu.

Pokyny k formátování protokolů a obsahu najdete v doporučených postupech protokolování .

Integrace s externími systémy monitorování a výstrah v reálném čase:

  • Formátování protokolů ve formátu JSON nebo jiných strojově parsovatelných formátech
  • Protokolování událostí relevantních pro zabezpečení s kontextem:
    • Události ověřování a autorizace, včetně identity uživatele a výsledku
    • Podrobnosti o přístupu k datům, jako jsou katalog, schéma a názvy tabulek
    • Chyby související se zabezpečením, jako jsou neplatné tokeny, odepření oprávnění a podezřelá aktivita
  • Předávat protokoly externím systémům. Integrace s APM nebo nástroji pro agregaci protokolů pro podporu výstrah v reálném čase, reakce na incidenty zabezpečení, analýzy využití a výkonu a korelaci se systémovými protokoly Azure Databricks.

Aspekty zabezpečení pro protokolování

Aplikace Databricks jsou navržené s následujícími integrovanými ovládacími prvky, které brání exfiltraci dat:

  • Přístup pouze k rozhraní API: Aplikace mají přístup pouze k prostředkům Azure Databricks prostřednictvím veřejných rozhraní API Azure Databricks. Tato rozhraní API jsou auditovatelná prostřednictvím protokolů systémových tabulek.
  • Šifrovaná komunikace: Veškerý provoz rozhraní API je šifrovaný pomocí protokolu TLS 1.2 nebo vyšší, aby se zajistil zabezpečený přenos dat.

Monitorování zabezpečení pomocí systémových tabulek

Azure Databricks zaznamenává protokoly auditu pro aktivity související s aplikacemi v system.access.audit tabulce. Na tyto protokoly se můžete dotazovat, abyste mohli sledovat akce uživatelů, změny konfigurace aplikací a události zabezpečení.

Pomocí následujících dotazů můžete monitorovat aktivity související se zabezpečením a zjišťovat potenciální problémy s vašimi aplikacemi.

Monitorování změn oprávnění aplikace

Pomocí tohoto dotazu můžete detekovat úpravy oprávnění aplikace:

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

Identifikace aplikací s obory uživatelského rozhraní API

Tento dotaz použijte k vyhledání aplikací s nakonfigurovanými obory uživatelského rozhraní 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

Sledování akcí autorizace uživatelů

Pomocí tohoto dotazu můžete zobrazit seznam akcí aplikací prováděných s autorizací uživatele:

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

Provozní monitorování

Pomocí systémových tabulek můžete monitorovat provozní aspekty vašich aplikací, jako jsou náklady a využití prostředků.

Monitorování nákladů na aplikace

Monitorování nákladů na Databricks Apps pomocí system.billing.usage tabulky Pomocí následujícího dotazu získáte přesné informace o nákladech pro aplikace za den nebo měsíc:

-- 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 podporuje zásady rozpočtu, které pomáhají sledovat náklady. Informace o konfiguraci zásad rozpočtu najdete v tématu Používání atributů se zásadami bezserverového rozpočtu.

Sledujte poznatky o aplikaci

Důležité

Karta Přehledy je v beta verzi.

Karta Přehledy na stránce podrobností aplikace zobrazuje zapojení uživatelů a dostupnost aplikací.

Sledování prohlížeče

Tabulka Diváci sleduje, kteří uživatelé přistupují k vaší aplikaci.

Azure Databricks zaznamenává událost zobrazení, když uživatel přistupuje k aplikaci prostřednictvím adresy URL aplikace nebo prostřednictvím přístupu k rozhraní API. Ukládá data jako jedinečná pro každého uživatele a každou aplikaci. Následné návštěvy stejného uživatele přepíšou předchozí záznam místo vytvoření nového řádku.

Poslední zobrazené časové razítko se řídí 30minutovým cyklem aktualizace relace OAuth. Více návštěv během časového okna relace si uchová čas první návštěvy, ale první přístup po vypršení platnosti relace přepíše časové razítko novým časem návštěvy.

Poznámka:

V beta verzi zobrazuje poslední zobrazený čas pouze koordinovaný univerzální čas (UTC).

Dostupnost a stav zdraví

Při řešení potíží s dostupností aplikací monitorujte následující signály stavu.

  • Stav služby App Service: Jestli je dostupná infrastruktura Azure Databricks podporující aplikaci. Pokud není k dispozici, došlo k problému na úrovni služeb s platformou. Kontaktujte podporu Databricks.
  • Dostupnost aplikace: Určuje, jestli konkrétní aplikace obsluhuje požadavky. Pokud není k dispozici, zkontrolujte chyby nasazení nebo chyby v kódu.