Neste tópico, descrevemos como criar e recriar dicionários personalizados grandes. Ele também abrange vários cenários de erro.
Quando escolher um dicionário personalizado grande em vez de um comum
Os detectores de dicionário personalizado comuns são suficientes quando você tem dezenas de milhares de palavras ou frases sensíveis que quer verificar no seu conteúdo. Se você tiver mais ou se sua lista de termos mudar com frequência, crie um dicionário personalizado grande, que pode aceitar dezenas de milhões de termos.
Como os dicionários personalizados grandes diferem de outros infoTypes personalizados
Os dicionários personalizados grandes são diferentes de outros infoTypes personalizados porque cada um deles tem dois componentes:
- Uma lista de frases que você cria e define. Essa lista é armazenada como um arquivo de texto no Cloud Storage ou como uma coluna em uma tabela do BigQuery.
- Os arquivos de dicionário, que a Proteção de Dados Sensíveis gera e armazena no Cloud Storage. Os arquivos de dicionário são compostos por uma cópia da sua lista de termos e filtros de Bloom, que ajudam na pesquisa e na correspondência.
Criar um dicionário personalizado grande
Nesta seção, descrevemos como criar, editar e recriar um dicionário personalizado grande.
Criar uma lista de termos
Crie uma lista que contenha todas as palavras e frases que você quer que o novo detector de infoType pesquise. Escolha uma destas opções:
- Insira um arquivo de texto com cada palavra ou frase em sua própria linha em um bucket do Cloud Storage.
- Defina uma coluna de uma tabela do BigQuery como o contêiner para as palavras e frases. Coloque cada entrada em uma linha separada na coluna. É possível usar uma tabela do BigQuery, desde que todas as palavras e frases do dicionário estejam em uma única coluna.
É possível montar uma lista de termos grande demais para a Proteção de Dados Sensíveis processar. Se uma mensagem de erro for exibida, consulte Solução de problemas de erros mais adiante neste tópico.
Criar um infoType armazenado
Depois de criar sua lista de termos, use a Proteção de Dados Sensíveis para criar um dicionário:
Console
Em um bucket do Cloud Storage, crie uma nova pasta em que a Proteção de Dados Sensíveis vai armazenar o dicionário gerado.
A Proteção de Dados Sensíveis cria pastas com os arquivos de dicionário no local especificado.
No console do Google Cloud , acesse a página Criar infoType.
Em Tipo, selecione Dicionário personalizado grande.
Em ID do infoType, insira um identificador para o infoType armazenado.
Você usará esse identificador ao configurar os jobs de inspeção e desidentificação. Você pode usar letras, números, hifens e sublinhados no nome.
Em Nome de exibição do infoType, insira um nome para o infoType armazenado.
É possível usar espaços e pontuação no nome.
Em Descrição, insira uma descrição do que o infoType armazenado detecta.
Em Tipo de armazenamento, selecione o local da sua lista de termos:
- BigQuery: insira os ID do projeto, ID conjunto de dados e da tabela. No campo Nome do campo, insira o identificador da coluna. É possível designar no máximo uma coluna da tabela.
- Google Cloud Storage: insira o caminho para o arquivo.
Em Pasta ou bucket de saída, insira o local do Cloud Storage da pasta que você criou na etapa 1.
Clique em Criar.
Um resumo do infoType armazenado é exibido. Quando o dicionário é gerado e o novo infoType armazenado está pronto para uso, o status do infoType mostra Pronto.
C#
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
- Crie uma nova pasta para o dicionário em um bucket do Cloud Storage. A Proteção de Dados Sensíveis cria pastas com os arquivos de dicionário no local especificado.
- Crie o dicionário usando o método
storedInfoTypes.create. O métodocreateutiliza os seguintes parâmetros:- Um objeto
StoredInfoTypeConfig, que contém a configuração do infoType armazenado. Isso inclui:description: uma descrição do dicionário.displayName: o nome que você quer dar ao dicionário.LargeCustomDictionaryConfig: contém a configuração do dicionário personalizado grande. Ele inclui:BigQueryField: especificado se a lista de termos estiver armazenada no BigQuery. Inclui uma referência à tabela em que sua lista está armazenada, além do campo que contém cada frase do dicionário.CloudStorageFileSet: especificado se a lista de termos estiver armazenada no Cloud Storage. Inclui o URL ao local de origem no Cloud Storage, no seguinte formato:"gs://[PATH_TO_GS]". Não há suporte para caracteres curinga.outputPath: o caminho para o local em um bucket do Cloud Storage para armazenar o dicionário criado.
storedInfoTypeId: o identificador do infoType armazenado. Use esse identificador para se referir ao infoType armazenado ao recriá-lo, excluí-lo ou usá-lo em um job de inspeção ou desidentificação. Se deixar esse campo em branco, o sistema gerará um identificador para você.
- Um objeto
Veja a seguir um exemplo de JSON que, quando enviado ao método storedInfoTypes.create, cria um novo infoType armazenado, especificamente, um detector de dicionário personalizado grande. Este exemplo cria um infoType armazenado com base em uma lista de termos
armazenada em um banco de dados do BigQuery
disponível publicamente (bigquery-public-data.samples.github_nested).
O banco de dados contém todos os nomes de usuário do GitHub usados em commits. O caminho de saída do
dicionário gerado é definido como um bucket do Cloud Storage chamado
dlptesting, e o infoType armazenado é chamado de github-usernames.
Entrada JSON
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes
{
"config":{
"displayName":"GitHub usernames",
"description":"Dictionary of GitHub usernames used in commits",
"largeCustomDictionary":{
"outputPath":{
"path":"gs://[PATH_TO_GS]"
},
"bigQueryField":{
"table":{
"datasetId":"samples",
"projectId":"bigquery-public-data",
"tableId":"github_nested"
}
}
}
},
"storedInfoTypeId":"github-usernames"
}
Recriar o dicionário
Se você quiser atualizar seu dicionário, primeiro atualize sua lista de termos de origem e, em seguida, instrua a Proteção de Dados Sensíveis a recriar o infoType armazenado.
Atualize a lista atual de termos de origem no Cloud Storage ou no BigQuery.
Adicione, remova ou mude os termos ou frases conforme necessário.
Crie uma nova versão do infoType armazenado "recriando-o" usando o console do Google Cloud ou o método
storedInfoTypes.patch.A recriação cria uma nova versão do dicionário, que substitui o antigo.
Quando você recria um infoType armazenado em uma nova versão, a versão antiga é excluída. Enquanto a Proteção de Dados Sensíveis atualiza o infoType armazenado, o status dele é "pendente". Durante esse período, a versão antiga do infoType armazenado ainda existe. As verificações executadas enquanto o infoType armazenado está no estado pendente serão executadas usando a versão antiga do infoType armazenado.
Para recriar o infoType armazenado:
Console
- Atualize e salve sua lista de termos no Cloud Storage ou no BigQuery.
No console do Google Cloud , acesse a lista de infoTypes armazenados.
Clique no ID do infoType armazenado que você quer atualizar.
Na página Detalhes do infoType, clique em Recriar dados.
A Proteção de Dados Sensíveis recria o infoType armazenado com as mudanças feitas na lista de termos de origem. Quando o status do infoType armazenado for "Pronto", você poderá usá-lo. Todos os modelos ou gatilhos de jobs que usam o infoType armazenado vão usar automaticamente a versão recriada.
C#
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Atualizar a lista de termos
Se você estiver atualizando apenas a lista de termos no dicionário personalizado grande, sua solicitação storedInfoTypes.patch vai exigir apenas o campo name. Informe o nome completo do recurso do
infoType armazenado que você quer recriar.
Os seguintes padrões representam entradas válidas para o campo name:
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_IDprojects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
Substitua STORED_INFOTYPE_ID pelo identificador do infoType armazenado que você quer recriar.
Se você não souber o identificador do infoType armazenado, chame o método
storedInfoTypes.list
para ver uma lista de todos os infoTypes armazenados atualmente.
Exemplo
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
Nesse caso, um corpo de solicitação não é necessário.
Mudar a lista de termos de origem
É possível mudar a lista de termos de origem de um infoType armazenado
no BigQuery para um armazenado no
Cloud Storage. Use o método
storedInfoTypes.patch,
mas inclua um objeto
CloudStorageFileSet
em
LargeCustomDictionaryConfig
onde você usou um objeto
BigQueryField
anteriormente. Em seguida, defina o parâmetro updateMask como o parâmetro infoType armazenado que você recriou, no formato FieldMask. Por exemplo, o JSON a seguir indica no parâmetro updateMask
que o URL do caminho do Cloud Storage foi atualizado
(large_custom_dictionary.cloud_storage_file_set.url):
Exemplo
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/github-usernames
{
"config":{
"largeCustomDictionary":{
"cloudStorageFileSet":{
"url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
}
}
},
"updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}
Da mesma forma, é possível trocar a lista de termos armazenada em uma tabela do BigQuery por uma armazenada em um bucket do Cloud Storage.
Verificar conteúdo usando um detector de dicionário personalizado grande
A verificação de conteúdo usando um detector de dicionário personalizado grande é semelhante à verificação de conteúdo usando qualquer outro detector de infoType personalizado.
Este procedimento pressupõe que você já tenha um infoType armazenado. Para mais informações, consulte Criar um infoType armazenado nesta página.
Console
É possível aplicar um detector de dicionário personalizado grande ao fazer o seguinte:
- Criar um novo job
- Criar ou editar um gatilho de job
- Criar ou editar um modelo
- Configurar a criação de perfis de dados
Na seção Configurar detecção da página, na subseção InfoTypes, é possível especificar o infoType do dicionário personalizado grande.
- Clique em Gerenciar infoTypes.
- No painel InfoTypes, clique na guia Personalizado.
- Clique em Adicionar infoType personalizado.
No painel Adicionar infoType personalizado, faça o seguinte:
- Em Tipo, selecione infoType armazenado.
- Em InfoType, insira um nome para o infoType personalizado. Você pode usar letras, números e sublinhados.
Em Probabilidade, selecione o nível de probabilidade padrão que você quer atribuir a todas as descobertas que correspondem a esse infoType personalizado. É possível ajustar ainda mais o nível de probabilidade de descobertas individuais usando regras de hotword.
Se você não especificar um valor padrão, o nível de probabilidade padrão será definido como
VERY_LIKELY. Para mais informações, consulte Probabilidade de correspondência.Em Sensibilidade, selecione o nível de sensibilidade que você quer atribuir a todas as descobertas que correspondem a esse infoType personalizado. Se você não especificar um valor, os níveis de confidencialidade dessas descobertas serão definidos como
HIGH.As pontuações de sensibilidade são usadas em perfis de dados. Ao criar o perfil dos dados, a Proteção de Dados Sensíveis usa as pontuações de confidencialidade dos infoTypes para calcular o nível de confidencialidade.
Em Nome do infoType armazenado, selecione o infoType armazenado em que você quer basear o novo infoType personalizado.
Clique em Concluído para fechar o painel Adicionar infoType personalizado.
Opcional: na guia Integrado, edite sua seleção de infoTypes integrados.
Clique em Concluído para fechar o painel InfoTypes.
O infoType personalizado é adicionado à lista de infoTypes que a Proteção de Dados Sensíveis verifica. No entanto, essa seleção não é final até que você salve o job, o gatilho de job, o modelo ou a configuração de verificação.
Quando terminar de criar ou editar a configuração, clique em Salvar.
C#
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da Proteção de Dados Sensíveis.
Para autenticar na Proteção de Dados Sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Quando enviado ao método
content.inspect,
o exemplo a seguir verifica o texto fornecido usando o detector de infoType armazenado
especificado. O parâmetro infoType é obrigatório porque
todos os infoTypes personalizados precisam ter um nome
que não entre em conflito com infoTypes integrados ou outros infoTypes personalizados. O parâmetro storedType contém o caminho completo do recurso do infoType armazenado.
Entrada JSON
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
{
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"GITHUB_LOGINS"
},
"storedType":{
"name":"projects/PROJECT_ID/storedInfoTypes/github-logins"
}
}
]
},
"item":{
"value":"The commit was made by githubuser."
}
}
Solucionar erros
Se você receber um erro ao tentar criar um infoType armazenado com base em uma lista de termos armazenada no Cloud Storage, as possíveis causas são:
- Você atingiu um limite máximo para infoTypes
armazenados. Dependendo do
problema, há várias soluções alternativas:
- Se você atingir o limite máximo de um único arquivo de entrada no Cloud Storage (200 MB), tente dividir o arquivo em vários arquivos. É possível usar vários arquivos para montar um único dicionário personalizado, desde que o tamanho combinado de todos os arquivos não exceda 1 GB.
- O BigQuery não tem os mesmos limites do Cloud Storage. Considere mover os termos para uma tabela do BigQuery. O tamanho máximo de uma coluna de dicionário personalizado no BigQuery é de 1 GB, e o número máximo de linhas é de 5.000.000.
- Se o arquivo da lista de termos exceder todos os limites aplicáveis para listas de termos de origem, divida o arquivo em vários arquivos e crie um dicionário para cada um. Em seguida, crie um job de verificação separado para cada dicionário.
- Falta pelo menos uma letra ou um número em um ou mais dos termos. A Proteção de Dados Sensíveis não pode verificar termos compostos apenas por espaços ou símbolos. Eles precisam ter pelo menos uma letra ou um número. Analise sua lista e veja se há alguns desses termos incluídos e, em seguida, corrija-os ou exclua-os.
- A lista de termos contém uma frase com muitos "componentes". Um componente, neste contexto, é uma sequência contínua composta apenas de letras, de números ou de caracteres que não são letras nem números, como espaços ou símbolos. Analise sua lista e veja se há alguns desses termos incluídos e, em seguida, corrija-os ou exclua-os.
- O agente de serviço da Proteção de Dados Sensíveis não tem acesso aos dados de origem do dicionário nem ao bucket do Cloud Storage para armazenar arquivos de dicionário. Para corrigir esse problema, conceda ao agente de serviço da Proteção de Dados Sensíveis o papel de Administrador do Storage (
roles/storage.admin) ou os papéis de Proprietário de dados do BigQuery (roles/bigquery.dataOwner) e Usuário de jobs do BigQuery (roles/bigquery.jobUser).
Visão geral da API
A criação de um infoType armazenado é necessária se você estiver criando um detector de dicionário personalizado grande.
Um infoType armazenado é representado na Proteção de Dados Sensíveis pelo objeto StoredInfoType. Ele consiste nos seguintes objetos relacionados:
StoredInfoTypeVersioninclui a data e hora de criação e as últimas cinco mensagens de erro que ocorreram quando a versão atual foi criada.StoredInfoTypeConfigcontém a configuração do infoType armazenado, incluindo o nome e a descrição. Para um dicionário personalizado grande, otypeprecisa ser umLargeCustomDictionaryConfig.LargeCustomDictionaryConfigespecifica as duas opções a seguir:- o local no Cloud Storage ou no BigQuery em que sua lista de frases está armazenada;
- o local no Cloud Storage para armazenar os arquivos de dicionários gerados.
StoredInfoTypeStatecontém o estado da versão mais atual e quaisquer versões pendentes do infoType armazenado. As informações de estado avisam se o infoType armazenado está sendo recriado, está pronto para uso ou é inválido.
Especificações de correspondência de dicionário
Veja a seguir orientações sobre como a Proteção de Dados Sensíveis faz a correspondência de palavras e frases do dicionário. Estes pontos se aplicam a dicionários personalizados normais e grandes:
- As palavras do dicionário não diferenciam maiúsculas de minúsculas. Se o dicionário incluir
Abby, ele corresponderá aabby,ABBY,Abbye assim por diante. - Todos os caracteres (em dicionários ou no conteúdo a ser verificado), exceto
letras, dígitos e outros caracteres alfabéticos contidos no
Plano Multilíngue Básico
do Unicode, são considerados espaços em branco ao verificar correspondências. Se o dicionário procurar
por
Abby Abernathy, ele corresponderá aabby abernathy,Abby, Abernathy,Abby (ABERNATHY)e assim por diante. - Os caracteres ao redor das correspondências precisam ser de um tipo diferente (letras ou dígitos) dos caracteres adjacentes da palavra. Se o dicionário procurar
Abi, ele corresponderá aos três primeiros caracteres deAbi904, mas não deAbigail. - Palavras do dicionário que contêm caracteres no Plano Multilíngue Suplementar do padrão Unicode podem gerar descobertas inesperadas. Exemplos desses caracteres são emojis, símbolos científicos e scripts históricos.
Letras, dígitos e outros caracteres alfabéticos são definidos da seguinte maneira:
- Letras: caracteres com categorias gerais
Lu,Ll,Lt,LmouLona especificação Unicode - Dígitos: caracteres com a categoria geral
Ndna especificação Unicode - Outros caracteres alfabéticos: caracteres com a categoria geral
Nlna especificação Unicode ou com a propriedade contributivaOther_Alphabetic, conforme definido pelo padrão Unicode
Use os métodos a seguir para editar ou excluir um infoType armazenado:
storedInfoTypes.create: cria um novo infoType armazenado, conforme oStoredInfoTypeConfigespecificado.storedInfoTypes.patch: recria o infoType armazenado com um novoStoredInfoTypeConfigque você especificar. Se nenhum for especificado, esse método vai criar uma nova versão do infoType armazenado com oStoredInfoTypeConfigatual.storedInfoTypes.get: recupera oStoredInfoTypeConfige todas as versões pendentes do infoType armazenado especificado.storedInfoTypes.list: lista todos os infoTypes armazenados no momento.storedInfoTypes.delete: exclui o infoType armazenado especificado.