Privacidade e Mascaramento
Controles de privacidade de dados — flag isPublic, tratamento de dados sensíveis e padrões de mascaramento.
Last updated on
A plataforma Carrot foi projetada para tornar a logística da cadeia de suprimentos transparente e publicamente verificável. No entanto, alguns dados são sensíveis por razões comerciais ou de privacidade. Este guia cobre os controles de privacidade disponíveis nos níveis de documento e metadados de eventos.
As flags de visibilidade são definidas ao criar um documento (veja API de Documents) e podem
ser ajustadas por meio de eventos UPDATE (veja
Especificação de Eventos).
Controles de visibilidade
isPublic: controla se os dados são visíveis em superfícies públicas como o Carrot Registry.isPubliclySearchable: controla se os registros podem ser encontrados por meio de busca pública.
O flag isPublic aparece em quatro níveis no caminho de escrita, e é obrigatório em cada um deles:
- Nível do documento —
isPublicna criação do documento, controlando o próprio documento. - Nível do evento —
isPublicem cada evento, controlando a visibilidade do evento inteiro. - Nível do anexo —
isPublicem cada entrada do arrayattachmentsdo evento, que é o que governa as linhas de anexo na tabela abaixo. - Nível do atributo de metadados —
isPublicem cada entrada demetadata.attributes, que sobrepõe a visibilidade do evento para aquele atributo.
Níveis mais baixos podem sobrepor níveis mais altos — por exemplo, um atributo pode ser marcado como privado dentro de um evento público. A precedência é aplicada pela plataforma Carrot.
Os objetos target e updates carregam o próprio isPublic para o documento que criam ou
modificam. O relatedDocument.isPublic é diferente: ele controla se o evento espelhado gravado no
documento relacionado é público, não a visibilidade daquele documento. É obrigatório quando
bidirectional é true.
Quando um documento ou evento é marcado como público (isPublic: true), qualquer pessoa com o ID do
documento pode visualizá-lo no Carrot Registry (registry.carrot.eco). Quando privado (isPublic: false),
os dados ficam ocultos da visualização pública, mas permanecem acessíveis a auditores para verificação
de conformidade.
Identidade do participante
As flags de visibilidade governam o evento e seus metadados. A identidade do participante por trás do
evento é governada separadamente por preserveSensitiveData, um campo true/false aceito em todo evento.
A visibilidade de um participante é decidida uma vez para o documento inteiro, a partir de todos os
eventos que o mencionam. Quando o participante é uma empresa, definir preserveSensitiveData: true
em qualquer um desses eventos força a identidade dele a privada em todo o documento — name,
taxId, taxIdType e as coordenadas do endereço são suprimidos — enquanto os eventos em si
permanecem publicamente visíveis. Município e estado não são suprimidos.
Envie o campo explicitamente em todo evento ACTOR. Use false para
Processadores,
Recicladores e
Integradores, e true para Geradores de
Resíduos, transportadores, Gestores de
Resíduos e todos os demais papéis da cadeia de suprimentos. Um participante que é ao mesmo tempo transportador e processador ou reciclador no mesmo documento é a exceção: deixe o campo de fora em todo evento que o menciona, e ele pode ser nomeado na página pública do documento. Deixar o campo de fora aplica o padrão do
papel: Processadores, Recicladores e Integradores podem ser nomeados, desde que todo papel da cadeia
de suprimentos que o participante ocupa no documento seja um desses, com uma exceção para
transportadores descrita abaixo; os demais papéis da cadeia de suprimentos não são nomeados por
padrão. true em qualquer evento ACTOR mantém o participante sem nome em todas as superfícies
públicas.
A superfície pública de MassID da Carrot é mais restrita. Entre outras condições, ela exige
isPublic: true em todo evento ACTOR que nomeia o participante e, entre os papéis da cadeia de
suprimentos, nomeia apenas Processadores, Recicladores e Integradores: um participante que ocupa
qualquer outro papel da cadeia no documento nunca é nomeado ali, independentemente das flags.
Um papel que pode ser nomeado é, portanto, permissão, não garantia. Envie as flags que este guia
especifica e depois leia o documento publicado para ver o resultado, em vez de prevê-lo a partir do
papel. Se um nome que você esperava não aparecer, confira antes aquele payload contra este guia — o
papel, o isPublic do evento e o preserveSensitiveData. Quando os três corresponderem ao que o
guia pede, a retenção é decisão da superfície, e não algo a perseguir mudando flags; portanto, não
construa lógica de exibição que presuma que um papel que pode ser nomeado aparece nomeado.
As duas flags respondem a perguntas diferentes, e confundi-las é o erro mais caro desta página:
isPublicdecide se o evento é publicado. Um eventoACTORenviado comoisPublic: falsesai inteiramente da linha do tempo pública — a etapa desaparece, não apenas o nome — e é apontado em auditoria, porque todo eventoACTORdeve ser público.preserveSensitiveDatadecide se o participante por trás do evento é nomeado. A etapa continua na linha do tempo; a empresa por trás dela não aparece.
Manter um participante sem nome é trabalho de preserveSensitiveData. Nunca é trabalho de
isPublic: false.
O campo também é aceito em relatedDocument, onde é rejeitado quando bidirectional é false — assim como eventName e eventLabel, já que não há evento espelhado a descrever.
Política de visibilidade por papel
Os seguintes padrões se aplicam a todas as metodologias:
- Dados do Processador, do Reciclador e do Integrador devem ser públicos.
- Dados do gerador e do transportador — informações da empresa, endereços, PII — devem ser privados.
- Um participante que é ao mesmo tempo o transportador e o reciclador ou processador no mesmo documento segue o padrão do reciclador ou processador e pode ser nomeado na página pública do documento.
- Na página pública do documento, transportadores, custodiantes de ponto de coleta e Gestores de Resíduos não são nomeados por padrão: os papéis aparecem enquanto os nomes ficam retidos, e enviar
preserveSensitiveData: falseos nomeia ali. A superfície pública de MassID da Carrot nunca nomeia um Gerador de Resíduos, transportador, custodiante de ponto de coleta ou Gestor de Resíduos, independentemente das flags. - Campos de texto livre nunca devem conter dados sensíveis, independentemente da visibilidade do evento.
O Gestor de Resíduos é retido por risco de reidentificação, não porque a participação dele seja sensível em si. Ele é contratado por um gerador para escolher a destinação, então onde ele atende um único gerador em um município, nomeá-lo nomeia aquele gerador — e município e estado são públicos.
Quando um participante acumula vários papéis
Participantes rotineiramente acumulam mais de um papel: um transportador com sua própria instalação de triagem é transportador e Processador, e um reciclador que também tria é Processador e Reciclador. A flag é enviada por evento, mas uma empresa resolve para uma única resposta no documento inteiro.
- Envie
preserveSensitiveData: trueem todo eventoACTORde Gerador de Resíduos ou transportador. Um únicotrueem qualquer lugar do documento já torna aquele participante privado por todo ele, então enviar de forma consistente não custa nada. - O caso a considerar é uma empresa que é seu transportador e seu Reciclador ou Processador. Ela
segue o padrão do Reciclador ou Processador na página pública do documento, então esconder a
aparição dela como transportadora não protege nada: deixe o campo de fora em todo evento que a
menciona. Um único
trueali sobrepõe a exceção e torna a empresa privada em todo o documento. - O Gerador de Resíduos nunca é afetado por esse caso. Ele permanece privado, faça o que fizer no mesmo documento.
A ordem completa de resolução, vencendo a primeira que se aplicar:
preserveSensitiveData: trueem qualquer ocorrência → privado em todo o documento.- Gerador de Resíduos → privado. A regra 3 nunca se aplica a ele.
- Transportador junto com Reciclador ou Processador → público.
preserveSensitiveData: falseem qualquer ocorrência → público.- O padrão do papel; papéis que discordam resolvem como privado.
Para recomendações específicas por metodologia, siga os flags isPublic nos exemplos canônicos:
Tratamento de dados sensíveis
Para atributos de metadados que contêm dados sensíveis ou pessoais (ex.: placas de veículos, identificadores de motoristas), você tem duas opções:
- Privacidade total — Defina
isPublic: falsepara ocultar os dados completamente das superfícies públicas. - Mascaramento parcial — Envie o valor completo, defina
isPublic: truee definasensitive: truenos metadados. A plataforma aplica mascaramento nas superfícies públicas — uma placa enviada comoABC-1234aparece comoAB****34— enquanto preserva o valor completo para auditores.
O mascaramento sempre cobre um único trecho contíguo no meio do valor: no mínimo 4 caracteres e no mínimo metade do valor, deixando no máximo 8 caracteres visíveis, divididos entre o início e o fim.
Apenas valores string são mascarados. Um atributo não-string marcado como sensitive é tratado como
privado, e seu valor é omitido inteiramente das superfícies públicas.
Não pré-mascare ou redija valores no seu payload. Envie os dados completos e deixe a plataforma realizar o mascaramento.
O sensitive é um sinal que você envia, não o mecanismo que mantém um valor fora das superfícies
públicas da própria Carrot. A API pública de MassID e o documento de metadados do registry publicam
um conjunto fixo de atributos mantido no código da Carrot, então um atributo que você acrescenta não
é publicado lá, com ou sem a flag. Defina a flag corretamente mesmo assim — é ela que governa o
mascaramento na página pública do documento — mas não a trate como a garantia.
Veja Formatos de Dados para o atributo
sensitive e as convenções de formato de mascaramento.
Padrões comuns de dados privados
A tabela a seguir lista campos de dados que parceiros comumente configuram como privados, junto com a justificativa para cada um:
| Dado | Categoria | Justificativa |
|---|---|---|
| Nome do Gerador de Resíduos | Dados de participante | Confidencialidade comercial — nunca publicado, independentemente das flags |
| Manifesto de transporte (MTR) | Anexo | Defina isPublic: false na entrada do anexo; o evento em si permanece publicamente visível |
| Certificado de destinação final (CDF) | Anexo | Defina isPublic: false na entrada do anexo; o evento em si permanece publicamente visível |
| Placa do veículo | Metadados de evento | Dados pessoais — use sensitive: true com isPublic: true para mascaramento parcial |
| Identificador do motorista | Metadados de evento | Dados pessoais — use sensitive: true com isPublic: true para mascaramento parcial |
Se você não tem certeza se um campo deve ser privado ou usar mascaramento parcial, consulte o time Carrot para orientação específica ao seu caso de uso.
Estratégia prática de mascaramento
- Mantenha valores sensíveis privados por padrão.
- Exponha apenas os campos mínimos exigidos pelo seu negócio e fluxos públicos.
- Use
sensitive: truepara campos que precisam ser publicamente visíveis de forma mascarada. - Audite payloads públicos regularmente para garantir que não haja exposição não intencional de dados.
Referências relacionadas: