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

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
- Um workspace habilitado para o Unity Catalog.
- AI Functions disponíveis por meio de um SQL warehouse serverless ou pipeline serverless.
- A CLI do Databricks autenticada para o seu workspace.
- Dados de rastreamento OTel em tabelas do Unity Catalog, gravados via MLflow, um exportador OTel ou qualquer cliente OTLP. Consulte Armazenar rastreamentos OpenTelemetry no Unity Catalog.
Baixe os ativos
Faça download dos seguintes arquivos e importe-os para seu workspace:
Arquivo | Descrição |
|---|---|
Notebook de implantação guiada — alternativa interativa para | |
Script de implantação da CLI. | |
O pipeline — tabelas de transmissão com | |
view de rastreamento unificada unindo spans e anotações. | |
Criação de esquemas e concessões de acesso | |
Exemplo de configuração do pipeline (referência). | |
Utilitário de teste que envia dados de teste de PII como spans OTel. | |
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.
- Guided notebook (recommended)
- CLI
- Manual
Para uma implantação passo a passo diretamente no seu workspace:
- Importar deploy_notebook.py para seu workspace, juntamente com os outros ativos baixados. Consulte Pastas Git do Databricks.
- Abra
deploy_notebook.pyem seu workspace. - Preencha os parâmetros do widget acima (catálogo, esquema de origem, esquema de destino e prefixo da tabela).
- 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.
Execute o script de implantação com os detalhes do seu workspace:
./deploy.sh <WORKSPACE_HOST> <CATALOG> <SOURCE_SCHEMA> <TARGET_SCHEMA> <TABLE_PREFIX>
Por exemplo:
./deploy.sh https://my-workspace.cloud.databricks.com my_catalog traces_raw traces_redacted my_app
O script executa o seguinte:
- Faz upload do pipeline SQL para o seu workspace.
- Cria o esquema de destino.
- Cria e aciona o pipeline.
- Configura o TTL automático nas tabelas brutas (se
retention_daysestiver definido).
Depois que o pipeline for concluído, execute unified_view.sql para criar a view de rastreamento unificada. Substitua as variáveis ${...} pelos valores.
Para configurar passo a passo:
- Criar o esquema de destino. Executar os comandos em
setup_schema_and_grants.sql. - Faça upload do pipeline SQL. Importe
pii_redaction_pipeline.sqlpara o seu workspace. - Criar o pipeline. Use
pipeline_config.jsoncomo um padrão e substitua os valores<PLACEHOLDER>. - Trigger uma execução de pipeline. Use a interface do usuário ou a execução
databricks pipelines start-update <PIPELINE_ID>. - Criação da view unificada. Execute
unified_view.sqlapós a primeira execução do pipeline. - Configure a retenção. Ativar time-to-live automático nas tabelas brutas. Consulte Ocultação de PII de rastreamentos OTel
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 |
|---|---|---|
| Catálogo do Unity Catalog para as tabelas brutas e redigidas. | (Obrigatório) |
| Esquema que contém as tabelas OTel brutas. | (Obrigatório) |
| Esquema das tabelas de saída expurgadas. | (Obrigatório) |
| Prefixo para nomes de tabelas OTel. | (Obrigatório) |
| Tipos de PII a serem ocultados, separados por vírgula e entre aspas simples. |
|
| Nome do pipeline. |
|
| Número de dias para reter dados brutos antes da exclusão. Um valor em branco, |
|
| Modo de execução do pipeline: |
|
| Com que frequência o pipeline é executado (somente no modo acionado): |
|
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 |
|
Registros |
|
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:
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:
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;