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

nota

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.

O senhor pode acessar o log do aplicativo das seguintes maneiras:

  • UI dos aplicativos : Na página de detalhes do aplicativo, clique nos registros tab para view a saída padrão e o erro. Para obter detalhes, consulte Exibir detalhes do aplicativo.
  • URL direta : anexe /logz ao URL do seu aplicativo.
    Por exemplo, se o URL do seu aplicativo for https://my-app-1234567890.my-instance.databricksapps.com, logs estará disponível em
    https://my-app-1234567890.my-instance.databricksapps.com/logz.

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
  • Encaminhar logs para sistemas externos. Integre-se às ferramentas de monitoramento de desempenho de aplicativos (APM) ou de agregação log para oferecer suporte a alertas de tempo real, resposta a incidentes de segurança, análise de uso e desempenho e correlação com o sistema Databricks logs.

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

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