Compartilhar via


Registro em log e monitoramento para aplicativos do Databricks

O registro em log e o monitoramento eficazes ajudam você a detectar e responder a eventos de segurança nos Aplicativos do Databricks. Os aplicativos geram logs no nível do aplicativo e logs de auditoria de plataforma, que você pode usar para diagnóstico, acompanhamento de desempenho e análise de segurança.

Logs de aplicativo

Para disponibilizar logs na interface do usuário do Databricks Apps ou por meio da URL do aplicativo, seu aplicativo deve gravar a saída stdout em e stderr.

Acesse os logs de aplicativos das seguintes maneiras:

  • Interface do usuário de aplicativos: Na página de detalhes do aplicativo, clique na guia Logs para exibir a saída e o erro padrão. Para obter detalhes, veja detalhes de um app do Databricks.
  • URL direta: Acrescente /logz à URL do aplicativo. Por exemplo, se a URL do aplicativo estiver https://my-app-1234567890.my-instance.databricksapps.com, os logs estarão disponíveis em https://my-app-1234567890.my-instance.databricksapps.com/logz.

Observação

O Azure Databricks não persiste os logs quando a computação do aplicativo é desligada. Para registro em log persistente, integre-se a serviços de log externos ou escreva os logs em volumes ou tabelas do Unity Catalog.

Integrar com serviços de log externos

Para logging persistente e monitoramento avançado, use o seguinte:

  • Ferramentas de Monitoramento de Desempenho do Aplicativo (APM): Use novas ferramentas de monitoramento de desempenho do aplicativo Relic, Datadog ou similares para coletar e analisar logs, métricas e rastreamentos.
  • Persistência de log personalizada: Escreva logs periodicamente em volumes ou tabelas do Catálogo do Unity para armazenamento e análise de longo prazo.

Consulte as práticas de registro em log recomendadas para obter diretrizes sobre formatação de log e conteúdo.

Para integrar com o monitoramento externo e sistemas de alerta em tempo real:

  • Formatar logs em JSON ou em outros formatos analisáveis por computador.
  • Registrar eventos relevantes à segurança com contexto:
    • Eventos de autenticação e autorização, incluindo identidade e resultado do usuário
    • Detalhes de acesso a dados, como catálogo, esquema e nomes de tabela
    • Erros relacionados à segurança, como tokens inválidos, negações de permissão e atividade suspeita
  • Encaminhar logs para sistemas externos. Integre-se às ferramentas de agregação de log ou do APM para dar suporte a alertas em tempo real, resposta a incidentes de segurança, análise de desempenho e uso e correlação com logs do sistema do Azure Databricks.

Considerações de segurança para registro em log

Os aplicativos do Databricks são projetados com os seguintes controles internos para impedir a exfiltração de dados:

  • Acesso somente à API: os aplicativos só podem acessar recursos do Azure Databricks por meio de APIs públicas do Azure Databricks. Essas APIs são auditáveis por meio de logs de tabela do sistema.
  • Comunicação criptografada: todo o tráfego de API é criptografado usando o TLS 1.2 ou superior para garantir a transferência segura de dados.

Monitoramento de segurança com tabelas do sistema

O Azure Databricks captura logs de auditoria para atividades relacionadas ao aplicativo na system.access.audit tabela. Você pode consultar esses logs para acompanhar ações do usuário, alterações de configuração de aplicativo e eventos de segurança.

Use logs de auditoria para dar suporte aos seguintes cenários comuns de monitoramento e segurança:

Use as consultas a seguir para monitorar atividades relacionadas à segurança e detectar possíveis problemas com seus aplicativos.

Monitorar alterações de permissão do aplicativo

Use esta consulta para detectar modificações de permissão do aplicativo:

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

Identificar aplicativos com escopos de API do usuário

Use esta consulta para localizar aplicativos com escopos de API de usuário configurados:

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

Acompanhar ações de autorização do usuário

Use esta consulta para listar as ações de aplicativo executadas com autorização do usuário:

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

Monitoramento operacional

Use tabelas do sistema para monitorar aspectos operacionais de seus aplicativos, como custo e uso de recursos.

Monitorar os custos do aplicativo

Monitore os custos dos Aplicativos do Databricks usando a system.billing.usage tabela. Use a consulta a seguir para obter informações precisas de custo para aplicativos por dia ou mês:

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

Os Aplicativos do Databricks dão suporte a políticas de orçamento para ajudar a controlar os custos. Para obter informações sobre como configurar políticas de orçamento, consulte o uso de atributos com políticas de orçamento sem servidor.