Udostępnij przez


Rejestrowanie i monitorowanie aplikacji usługi Databricks

Efektywne rejestrowanie i monitorowanie pomaga wykrywać zdarzenia zabezpieczeń i reagować na nie w usłudze Databricks Apps. Aplikacje generują dzienniki na poziomie aplikacji i dzienniki inspekcji platformy, których można użyć do diagnostyki, śledzenia wydajności i analizy zabezpieczeń.

Dzienniki aplikacji

Aby udostępnić dzienniki w interfejsie użytkownika aplikacji usługi Databricks lub za pośrednictwem adresu URL aplikacji, aplikacja musi zapisywać dane wyjściowe w usługach stdout i stderr.

Uzyskaj dostęp do dzienników aplikacji na następujące sposoby:

  • Interfejs użytkownika aplikacji: Na stronie szczegółów aplikacji kliknij kartę Dzienniki , aby wyświetlić standardowe dane wyjściowe i błędy. Aby uzyskać szczegółowe informacje, zobacz Wyświetl szczegóły dotyczące aplikacji Databricks.
  • Bezpośredni adres URL: Dołącz /logz do adresu URL aplikacji. Jeśli na przykład adres URL aplikacji to https://my-app-1234567890.my-instance.databricksapps.com, dzienniki są dostępne pod adresem https://my-app-1234567890.my-instance.databricksapps.com/logz.

Uwaga / Notatka

Usługa Azure Databricks nie utrwala dzienników po zamknięciu obliczeń aplikacji. W przypadku długoterminowego rejestrowania należy zintegrować się z zewnętrznymi usługami rejestrowania lub zapisywać dzienniki w sekcjach lub tabelach katalogowych Unity Catalog.

Integracja z zewnętrznymi usługami logowania

W przypadku trwałych funkcji rejestrowania i zaawansowanego monitorowania należy użyć następujących elementów:

  • Narzędzia do monitorowania wydajności aplikacji (APM): Użyj nowych narzędzi do monitorowania wydajności aplikacji Relic, Datadog lub podobnych, aby zbierać i analizować dzienniki, metryki i ślady.
  • Niestandardowa trwałość logów: Okresowo zapisuj logi w woluminach lub tabelach Unity Catalogu w celu długoterminowego przechowywania i analizy.

Zobacz Zalecane praktyki rejestrowania , aby uzyskać wskazówki dotyczące formatowania dzienników i zawartości.

Aby zintegrować z zewnętrznymi systemami monitorowania i alertów w czasie rzeczywistym:

  • Formatuj dzienniki w formacie JSON lub w innych formatach możliwych do analizowania maszyn.
  • Rejestruj zdarzenia związane z zabezpieczeniami z kontekstem:
    • Zdarzenia uwierzytelniania i autoryzacji, w tym tożsamość użytkownika i wynik
    • Szczegóły dostępu do danych, takie jak wykaz, schemat i nazwy tabel
    • Błędy związane z zabezpieczeniami, takie jak nieprawidłowe tokeny, odmowa uprawnień i podejrzane działania
  • Przekazywanie dzienników do systemów zewnętrznych. Integracja z narzędziami APM lub agregacji logów w celu obsługi alertów w czasie rzeczywistym, reagowania na zdarzenia zabezpieczeń, analizy użycia i wydajności oraz korelacji z dziennikami systemu usługi Azure Databricks.

Zagadnienia dotyczące zabezpieczeń dotyczące rejestrowania

Aplikacje usługi Databricks zostały zaprojektowane z następującymi wbudowanymi kontrolkami, aby zapobiec eksfiltracji danych:

  • Dostęp tylko do interfejsu API: aplikacje mogą uzyskiwać dostęp tylko do zasobów usługi Azure Databricks za pośrednictwem publicznych interfejsów API usługi Azure Databricks. Te interfejsy API można przeprowadzać inspekcję za pomocą dzienników tabeli systemu.
  • Zaszyfrowana komunikacja: cały ruch interfejsu API jest szyfrowany przy użyciu protokołu TLS 1.2 lub nowszego w celu zapewnienia bezpiecznego transferu danych.

Monitorowanie zabezpieczeń przy użyciu tabel systemowych

Usługa Azure Databricks przechwytuje dzienniki inspekcji dla działań związanych z aplikacjami w system.access.audit tabeli. Możesz wykonywać zapytania dotyczące tych dzienników w celu śledzenia akcji użytkownika, zmian konfiguracji aplikacji i zdarzeń zabezpieczeń.

Użyj dzienników inspekcji, aby obsługiwać następujące typowe scenariusze monitorowania i zabezpieczeń:

Użyj następujących zapytań, aby monitorować działania związane z zabezpieczeniami i wykrywać potencjalne problemy z aplikacjami.

Monitorowanie zmian uprawnień aplikacji

Użyj tego zapytania, aby wykryć modyfikacje uprawnień aplikacji:

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

Identyfikowanie aplikacji z zakresami interfejsu API użytkownika

Użyj tego zapytania, aby znaleźć aplikacje ze skonfigurowanymi zakresami interfejsu API użytkownika:

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

Śledzenie akcji autoryzacji użytkownika

Użyj tego zapytania, aby wyświetlić listę akcji aplikacji wykonywanych z autoryzacją użytkownika:

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

Monitorowanie operacyjne

Tabele systemowe umożliwiają monitorowanie aspektów operacyjnych aplikacji, takich jak koszty i użycie zasobów.

Monitorowanie kosztów aplikacji

Monitorowanie kosztów usługi Databricks Apps przy użyciu system.billing.usage tabeli . Użyj następującego zapytania, aby uzyskać dokładne informacje o kosztach aplikacji dziennie lub miesiąca:

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

Usługa Databricks Apps obsługuje zasady budżetowe ułatwiające śledzenie kosztów. Aby uzyskać informacje na temat konfigurowania zasad budżetu, zobacz Wykorzystanie atrybutu w kontekście bezserwerowych zasad budżetu.