Pular para o conteúdo principal

Registro e monitoramento para aplicativos Databricks

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

Aplicativo logs

Para disponibilizar o logs na UI do aplicativo Databricks ou por meio do URL do seu aplicativo, ele deve gravar a saída em stdout e stderr.

Acesse o log do aplicativo das seguintes maneiras:

  • Interface do aplicativo: Clique na tab "Registros" do aplicativo para view a saída padrão e os erros. Para obter detalhes, consulte a página de detalhes de um aplicativo Databricks.
  • URL direta: anexe /logz à URL do seu aplicativo. Por exemplo, se o URL do seu aplicativo for https://my-app-1234567890.my-instance.databricksapps.com, os logs estarão disponíveis em https://my-app-1234567890.my-instance.databricksapps.com/logz.
nota

Databricks não mantém logs quando o aplicativo compute é desligado. Para registro persistente, integre com um serviço de registro externo ou grave logs em volumes ou tabelas Unity Catalog .

Integrar com serviço de registro externo

Para registro persistente e recursos avançados de monitoramento, use o seguinte:

  • Ferramentas de monitoramento de desempenho de aplicativos (APM): Use New Relic, Datadog ou ferramentas similares de monitoramento de desempenho de aplicativos para coletar e analisar logs, métricas e rastreamentos.
  • Persistência de log personalizado: grave logs periodicamente em volumes ou tabelas do Unity Catalog para armazenamento e análise de longo prazo.

Consulte Práticas de registro recomendadas para obter orientações sobre formatação e conteúdo log .

Práticas de registro recomendadas

Integrar-se a sistemas externos de monitoramento e alerta em tempo real:

  • Formate o registro em JSON ou em outros formatos analisáveis por máquina.

  • Registre eventos relevantes para a segurança com contexto:

    • Eventos de autenticação e autorização, incluindo identidade e resultado do usuário
    • Detalhes do acesso aos dados, como nomes de catálogos, esquemas e tabelas
    • Erros relacionados à segurança, como tokens inválidos, recusas de permissão e atividades suspeitas
  • Encaminhe logs para sistemas externos. Integre com ferramentas de APM ou agregação de log para dar suporte a alertas de tempo real, resposta a incidentes de segurança, uso e desempenho analítico e correlação com logs do sistema Databricks .

Considerações de segurança para registro

Databricks Os aplicativos são projetados com os seguintes controles integrados para evitar a exfiltração de dados:

  • Acesso somente à API : Os aplicativos só podem acessar Databricks recurso por meio de Databricks APIs público. Esses APIs são auditáveis por meio da tabela do sistema logs.
  • Comunicação criptografada : Todo o tráfego da API é criptografado usando TLS 1.2 ou superior para garantir a segurança da transferência de dados.

Monitoramento de segurança com tabelas de sistema

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

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

Monitore as alterações nas permissões do aplicativo

Use essa consulta para detectar modificações nas permissões do aplicativo:

SQL
-- 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 essa consulta para encontrar aplicativos com escopos de API de usuário configurados:

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

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

Use essa consulta para listar as ações do aplicativo realizadas com a autorização do usuário:

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

Monitore os custos do aplicativo

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

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

O Databricks Apps oferece suporte a políticas orçamentárias para ajudar no controle de custos. Para obter informações sobre como configurar políticas de orçamento, consulte Uso de atributos com políticas de uso serverless.

Aplicativo de monitoramento

info

Beta

A tab percepções está em Beta.

A tab "separar" na página de detalhes do aplicativo mostra o engajamento do usuário e a disponibilidade do aplicativo.

Visualizador ग

A tabela "Visualizadores" registra quais usuários acessam seu aplicativo.

Databricks registra um evento view quando um usuário acessa o aplicativo por meio da URL do aplicativo ou por meio de acesso API . Ele armazena dados de forma exclusiva para cada usuário e por aplicativo. As visitas subsequentes do mesmo usuário sobrescrevem o registro anterior, em vez de criar uma nova linha.

O registro da última visualização segue um ciclo refresh da sessão OAuth de 30 minutos. Múltiplas visitas dentro do período da sessão mantêm o horário da visita inicial, mas o primeiro acesso após o término da sessão sobrescreve o registro de data e hora com o novo horário da visita.

nota

Na versão Beta, a última visualização exibe apenas o Tempo Universal Coordenado (UTC).

Tempo de atividade e estado de saúde

Monitore os seguintes sinais de integridade para solucionar problemas de disponibilidade do aplicativo.

  • Integridade do serviço do aplicativo : Indica se a infraestrutura do Databricks que suporta o aplicativo está disponível. Caso esteja indisponível, existe um problema de nível de serviço com a plataforma. Entre em contato com o suporte da Databricks.
  • Disponibilidade do aplicativo : Indica se o aplicativo específico atende às solicitações. Caso não esteja disponível, verifique se há erros de implantação ou falhas no seu código.