Pular para o conteúdo principal

Ocultar PII de rastreamentos OpenTelemetry no Unity Catalog

Os dados de rastreamento do OpenTelemetry (OTel) frequentemente contêm informações de identificação pessoal (PII), como endereços de e-mail, números de telefone e números de cartão de crédito incorporados em atributos de span, corpos de log e metadados de recursos. O compartilhamento desses dados de rastreamento amplamente para depuração ou observabilidade pode criar riscos de compliance e privacidade.

Esta página descreve uma solução de exemplo que utiliza AI Functions e Lakeflow Spark Declarative Pipelines para redigir incrementalmente informações de identificação pessoal (PII) de tabelas OTel brutas e gravar os resultados em um conjunto separado de tabelas com controles de acesso mais amplos. Um job de retenção configurável gerencia a limpeza dos dados brutos. Implante os ativos para download em seu próprio workspace e adapte-os aos seus requisitos.

É possível usar esta solução com quaisquer rastreamentos OTel armazenados no Unity Catalog, incluindo Armazenar rastreamentos OpenTelemetry no Unity Catalog.

Como funciona

Visão geral da ocultação de PII do OTel

Um pipeline Lakeflow Spark Declarative Pipelines lê incrementalmente novos spans OTel, aplica ai_mask para ocultar PII (emails, telefones, SSNs, cartões de crédito, nomes e endereços) e grava nas tabelas ocultas. Um job programado realiza a limpeza opcional de retenção nas tabelas brutas.

Pré-requisitos

Baixe os ativos

Faça download dos seguintes arquivos e importe-os para seu workspace:

Arquivo

Descrição

deploy_notebook.py

Notebook de implantação guiada — alternativa interativa para deploy.sh.

deploy.sh

Script de implantação da CLI.

pii_redaction_pipeline.sql

O pipeline — tabelas de transmissão com ai_mask.

unified_view.sql

view de rastreamento unificada unindo spans e anotações.

setup_schema_and_grants.sql

Criação de esquemas e concessões de acesso

pipeline_config.json

Exemplo de configuração do pipeline (referência).

send_pii_traces.py

Utilitário de teste que envia dados de teste de PII como spans OTel.

pii_test_data.jsonl

50 linhas de dados de teste de PII sintéticos.

Para mais informações, consulte a documentação de referência.

Implante a solução

Selecione um dos seguintes métodos de implementação.

Para uma implantação passo a passo diretamente no seu workspace:

  1. Importar deploy_notebook.py para seu workspace, juntamente com os outros ativos baixados. Consulte Pastas Git do Databricks.
  2. Abra deploy_notebook.py em seu workspace.
  3. Preencha os parâmetros do widget acima (catálogo, esquema de origem, esquema de destino e prefixo da tabela).
  4. Clique em Executar tudo . Cada passo valida antes de prosseguir.

Essa abordagem usa o SDK do Databricks para Python (não requer CLI), é seguro executar novamente e fornece feedback interativo a cada passo.

Parâmetros

A tabela a seguir descreve os parâmetros do widget no notebook de implantação guiada (deploy_notebook.py):

Parâmetro

Descrição

Padrão

catalog

Catálogo do Unity Catalog para as tabelas brutas e redigidas.

(Obrigatório)

source_schema

Esquema que contém as tabelas OTel brutas.

(Obrigatório)

target_schema

Esquema das tabelas de saída expurgadas.

(Obrigatório)

table_prefix

Prefixo para nomes de tabelas OTel.

(Obrigatório)

pii_categories

Tipos de PII a serem ocultados, separados por vírgula e entre aspas simples.

'email','phone','ssn','credit_card','name','address'

pipeline_name

Nome do pipeline.

otel-pii-redaction

retention_days

Número de dias para reter dados brutos antes da exclusão. Um valor em branco, 0 ou none desativa a exclusão.

90

redaction_pipeline_mode

Modo de execução do pipeline: triggered ou continuous.

triggered

redaction_trigger_frequency

Com que frequência o pipeline é executado (somente no modo acionado): hourly, every 6 hours, daily ou weekly.

daily

Tabelas de origem são nomeadas {catalog}.{source_schema}.{table_prefix}_otel_spans, {catalog}.{source_schema}.{table_prefix}_otel_logs e {catalog}.{source_schema}.{table_prefix}_otel_annotations.

O pipeline suporta dois modos de execução:

  • acionado: Cria um Job agendado que aciona o pipeline na frequência escolhida. O pipeline processa novos dados em cada execução e depois para.
  • Contínuo: Executa o pipeline continuamente, processando novos dados à medida que chegam. Nenhum job agendado é criado. Este modo tem custos de compute mais altos do que o modo acionado, porque o pipeline está sempre em execução.

O que é redigido

O pipeline aplica ai_mask aos seguintes campos:

Tabela

Campos redigidos

Intervalos

attributes, events, resource.attributes

Registros

body, attributes, resource.attributes

anotação

Passagem (sem PII esperada)

O pipeline preserva campos não-PII inalterados, como IDs de rastreamento, IDs de span, timestamps, nomes de serviço e códigos de status.

Categorias de PII aceitas

ai_mask é baseado em LLM e reconhece tipos padrão de PII, incluindo email, phone, name, address, ssn, credit_card, ip_address e date_of_birth.

ai_mask É recomendado porque lida com diversos formatos de PII (por exemplo, números de telefone escritos como (555) 123-4567, 555.123.4567 ou +1 555-123-4567) sem exigir um padrão separado para cada variação. É possível adaptar o pipeline para usar um método de redação diferente, como expressões regulares explícitas com regexp_replace.

Para padrões personalizados, tais como IDs de funcionário como EMP-XXXXXX, use regexp_replace antes de ai_mask no pipeline SQL. Para detalhes, consulte Referência de ocultação de PII de rastreamentos OTel.

Retenção e controle de acesso

Retenção de dados brutos

A implantação configura o tempo de vida automático nas tabelas OTel brutas para excluir automaticamente os dados de rastreamento mais antigos que um número configurável de dias (padrão: 90). Isso ajuda a cumprir com o GDPR e outros regulamentos de proteção de dados que exigem que dados pessoais sejam excluídos depois que não são mais necessários para sua finalidade original. Após o pipeline processar os spans brutos, o TTL automático remove os originais que contêm PII de acordo com sua política de retenção. Defina retention_days como 0 ou none para desativar a exclusão automática se o gerenciamento de retenção for feito separadamente. Se seus requisitos de compliance exigem prazos de exclusão rígidos, você pode configurar um job agendado manualmente com DELETE e VACUUM em vez disso, já que o tempo exato de exclusão auto-TTL não é garantido.

Limitar acesso a tabelas brutas

As tabelas OTel brutas contêm PII não redigidos e devem ter acesso restrito. Conceda acesso ao esquema de origem bruto apenas às entidades de serviço de pipeline e aos administradores que precisem dele para depuração ou resposta a incidentes. Toda a analítica de rotina, dashboards e fluxos de trabalho de observabilidade devem fazer query das tabelas redigidas em vez disso. O arquivo setup_schema_and_grants.sql inclui exemplos de concessões para ajudar a aplicar essa separação. Para obter mais informações sobre os privilégios do Unity Catalog, consulte Gerenciar privilégios no Unity Catalog.

Testar a redação

Enviar dados PII de teste

Gerar intervalos de teste com informações pessoalmente identificáveis conhecidas para validar a ocultação:

Bash
pip install opentelemetry-exporter-otlp-proto-http

python send_pii_traces.py <WORKSPACE_HOST> <CATALOG.SCHEMA.PREFIX_otel_spans>

Isto envia 50 rastreamentos de teste que contêm emails, números de telefone, SSNs, cartões de crédito, nomes e endereços.

Validar a saída

Após executar o pipeline, compare os intervalos brutos e redigidos:

SQL
SELECT
s.span_id,
CAST(s.attributes AS STRING) AS raw,
CAST(r.attributes AS STRING) AS redacted
FROM <source_catalog>.<source_schema>.<prefix>_otel_spans s
JOIN <target_catalog>.<target_schema>.redacted_spans r
ON s.trace_id = r.trace_id AND s.span_id = r.span_id
WHERE s.name = 'pii-test-interaction'
LIMIT 5;

Passos seguintes