Esta página descreve como inspecionar um recurso do Cloud Storage e criar cópias desidentificadas dos dados usando a API Cloud Data Loss Prevention.
Essa operação ajuda a garantir que os arquivos usados nos processos de negócios não contenham dados sensíveis, como informações de identificação pessoal (PII). A Proteção de dados sensíveis pode inspecionar arquivos em um bucket do Cloud Storage para encontrar dados sensíveis e criar cópias desidentificadas desses arquivos em um bucket separado. Você pode usar as cópias desidentificadas nos processos de negócios.
Para saber mais sobre esse recurso, consulte Desidentificação de dados sensíveis no Cloud Storage.
Antes de começar
Esta página pressupõe o seguinte:
Você ativou o faturamento.
Você ativou a proteção de dados sensíveis.
Você tem um bucket do Cloud Storage com dados que quer remover a identificação.
Você sabe como enviar uma solicitação HTTP para a API DLP. Para mais informações, consulte Inspecionar texto confidencial usando a API DLP.
Saiba mais sobre as limitações e pontos a serem considerados para essa operação.
A inspeção de armazenamento requer o seguinte escopo OAuth:
https://www.googleapis.com/auth/cloud-platform
. Para mais informações, consulte
Como autenticar na API DLP.
Papéis do IAM obrigatórios
Se todos os recursos dessa operação estiverem no mesmo projeto, o
papel de agente de serviço da API DLP (roles/dlp.serviceAgent
) no
agente de serviço será suficiente. Com essa função, é possível fazer o seguinte:
- Criar o job de inspeção
- Ler os arquivos no diretório de entrada
- Gravar os arquivos desidentificados no diretório de saída
- Gravar os detalhes da transformação em uma tabela do BigQuery
Os recursos relevantes incluem o job de inspeção, os modelos de desidentificação, o bucket de entrada, o bucket de saída e a tabela de detalhes da transformação.
Se você precisar ter os recursos em projetos separados, verifique se o agente de serviço do seu projeto também tem os seguintes papéis:
- O papel de leitor de objetos do Storage (
roles/storage.objectViewer
) no bucket de entrada ou no projeto que o contém. - O papel Criador de objetos do Storage
(
roles/storage.objectCreator
) no bucket de saída ou no projeto que o contém. - O papel de editor de dados do BigQuery (
roles/bigquery.dataEditor
) na tabela de detalhes da transformação ou no projeto que a contém.
Para conceder uma função ao agente de serviço, consulte Conceder um único papel. Também é possível controlar o acesso nos seguintes níveis:
Visão geral da API
Para criar cópias desidentificadas do conteúdo armazenado no Cloud Storage,
configure um job de inspeção
que procure dados sensíveis
de acordo com os critérios especificados. Em seguida, no job de inspeção, você
fornece instruções de desidentificação na forma de uma ação Deidentify
.
Se você quiser verificar apenas um subconjunto dos arquivos no bucket, limite os arquivos que o job vai verificar. As opções compatíveis para jobs com
desidentificação são a filtragem de arquivos por tipo (FileType
) e a expressão
regular (FileSet
).
Quando você ativa a ação Deidentify
, por padrão, a proteção de dados sensíveis
cria cópias desidentificadas (transformadas) de todos os tipos de arquivo compatíveis
incluídos na verificação. No entanto, é possível configurar o job para transformar apenas um
subconjunto dos tipos de arquivo aceitos.
Opcional: criar modelos de desidentificação
Se você quiser controlar como as descobertas são transformadas, crie os modelos a seguir. Esses modelos fornecem instruções sobre como transformar descobertas em arquivos estruturados, não estruturados e imagens.
Modelo de desidentificação:um
DeidentifyTemplate
padrão a ser usado para arquivos não estruturados, como arquivos de texto de formato livre. Esse tipo deDeidentifyTemplate
não pode conter um objetoRecordTransformations
, que é compatível apenas com conteúdo estruturado. Se esse modelo não estiver presente, a Proteção de dados sensíveis vai usar o métodoReplaceWithInfoTypeConfig
para transformar arquivos não estruturados.Modelo de desidentificação estruturada:um
DeidentifyTemplate
a ser usado para arquivos estruturados, como CSVs. EsseDeidentifyTemplate
pode conterRecordTransformations
. Se esse modelo não estiver presente, a Proteção de dados sensíveis vai usar o modelo de desidentificação padrão que você criou. Se ele também não estiver presente, a Proteção de dados sensíveis vai usar o métodoReplaceWithInfoTypeConfig
para transformar arquivos estruturados.Modelo de edição de imagem:um
DeidentifyTemplate
a ser usado para imagens. Esse modelo precisa conter um objetoImageTransformations
. Se esse modelo não estiver presente, a Proteção de dados sensíveis vai editar todas as descobertas em imagens com uma caixa preta.
Saiba mais sobre como criar um modelo de desidentificação.
Criar um job de inspeção com uma ação de desidentificação
O objeto DlpJob
fornece instruções sobre o que inspecionar, quais tipos
de dados sinalizar como sensíveis e o que fazer com as descobertas.
Para desidentificar dados sensíveis em um diretório do Cloud Storage, o
DlpJob
precisa definir pelo menos o seguinte:
- Um objeto
StorageConfig
, que especifica o diretório do Cloud Storage a ser inspecionado. - Um objeto
InspectConfig
, que contém os tipos de dados a serem procurados e outras instruções de inspeção sobre como encontrar os dados sensíveis. Uma ação
Deidentify
que contém o seguinte:Um objeto
TransformationConfig
, que especifica todos os modelos que você criou para desidentificar dados em arquivos estruturados e não estruturados. Também é possível incluir uma configuração para editar dados sensíveis de imagens.Se você não incluir um objeto
TransformationConfig
, a Proteção de dados sensíveis substituirá os dados sensíveis no texto pelo infoType. Nas imagens, ele cobre dados sensíveis com uma caixa preta.Um objeto
TransformationDetailsStorageConfig
, que especifica uma tabela do BigQuery em que a Proteção de dados confidenciais precisa armazenar detalhes sobre cada transformação. Para cada transformação, os detalhes incluem uma descrição, um código de sucesso ou erro, detalhes de erro, o número de bytes transformados, o local do conteúdo transformado e o nome do job de inspeção em que a Proteção de dados sensíveis fez a transformação. Essa tabela não armazena o conteúdo desidentificado.
Quando os dados são gravados em uma tabela do BigQuery, o uso do faturamento e da cota é aplicado ao projeto que contém a tabela de destino.
Depois que o conteúdo copiado é desidentificado, o trabalho de desidentificação
é concluído. O job contém um resumo de quantas vezes as transformações especificadas foram aplicadas, que podem ser recuperadas usando o método projects.dlpJobs.get
no DlpJob
. O DlpJob
retornado inclui
um objeto DeidentifyDataSourceDetails
e um objeto
InspectDataSourceDetails
. Esses objetos contêm os resultados de uma ação Deidentify
e o
job de inspeção, respectivamente.
Se você incluiu um objeto TransformationDetailsStorageConfig
na DlpJob
, uma tabela do BigQuery
será criada com metadados sobre os detalhes da transformação. Para cada transformação que ocorre, a Proteção de dados sensíveis grava uma linha de metadados na tabela. Para mais informações sobre o conteúdo da tabela,
consulte a referência de detalhes da transformação.
Exemplos de código
Os exemplos a seguir demonstram como usar a API DLP para criar cópias desidentificadas de arquivos do Cloud Storage.
Método HTTP e URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
C#
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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 para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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 para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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 para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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 para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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 para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a 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
Entrada JSON{
"inspect_job": {
"storage_config": {
"cloud_storage_options": {
"file_set": {
"url": "INPUT_DIRECTORY"
}
}
},
"inspect_config": {
"info_types": [
{
"name": "PERSON_NAME"
}
]
},
"actions": {
"deidentify": {
"cloud_storage_output": "OUTPUT_DIRECTORY",
"transformation_config": {
"deidentify_template": "DEIDENTIFY_TEMPLATE_NAME",
"structured_deidentify_template": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME",
"image_redact_template": "IMAGE_REDACTION_TEMPLATE_NAME"
},
"transformation_details_storage_config": {
"table": {
"project_id": "TRANSFORMATION_DETAILS_PROJECT_ID",
"dataset_id": "TRANSFORMATION_DETAILS_DATASET_ID",
"table_id": "TRANSFORMATION_DETAILS_TABLE_ID"
}
},
"fileTypesToTransform": ["IMAGE","CSV", "TEXT_FILE"]
}
}
}
}
Substitua:
PROJECT_ID
: o ID do projeto em que você quer armazenar o trabalho de inspeção.INPUT_DIRECTORY
: o diretório do Cloud Storage que você quer inspecionar, por exemplo,gs://input-bucket/folder1/folder1a
. Se o URL terminar com uma barra, os subdiretórios dentro deINPUT_DIRECTORY
não serão verificados.OUTPUT_DIRECTORY
: o diretório do Cloud Storage em que você quer armazenar os arquivos desidentificados. Esse diretório não pode estar no mesmo bucket do Cloud Storage queINPUT_DIRECTORY
.DEIDENTIFY_TEMPLATE_NAME
: o nome completo do recurso do modelo de desidentificação padrão para arquivos estruturados e não estruturados, se você criou um. Esse valor precisa estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
: o nome completo do recurso do modelo de desidentificação para arquivos estruturados, se você tiver criado um. Esse valor precisa estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.IMAGE_REDACTION_TEMPLATE_NAME
: o nome completo do recurso do modelo de ocultação de imagem para imagens, se você tiver criado um. Esse valor precisa estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.TRANSFORMATION_DETAILS_PROJECT_ID
: o ID do projeto em que você quer armazenar os detalhes da transformação.TRANSFORMATION_DETAILS_DATASET_ID
: o ID do conjunto de dados do BigQuery em que você quer armazenar os detalhes da transformação. Se você não fornecer um ID de tabela, o sistema vai criar um automaticamente.TRANSFORMATION_DETAILS_TABLE_ID
: o ID da tabela do BigQuery em que você quer armazenar os detalhes da transformação.
Observe os seguintes objetos:
inspectJob
: o objeto de configuração do job (DlpJob
). Esse objeto contém a configuração dos estágios de inspeção e desidentificação.storageConfig
: o local do conteúdo a ser inspecionado (StorageConfig
). Este exemplo especifica um bucket do Cloud StorageCloudStorageOptions
.inspectConfig
: informações sobre os dados sensíveis que você quer inspecionar (InspectConfig
). Esse exemplo inspeciona o conteúdo que corresponde ao infoTypePERSON_NAME
integrado.actions
: as ações a serem realizadas depois que a parte de inspeção do job for concluída (Action
).deidentify
: especificar essa ação informa à Proteção de dados sensíveis para desidentificar os dados sensíveis correspondentes de acordo com a configuração especificada (Deidentify
).cloud_storage_output
: especifica o URL do diretório do Cloud Storage que você quer inspecionar.transformation_config
: especifica como a Proteção de dados sensíveis precisa remover a identificação de dados sensíveis em arquivos estruturados, não estruturados e imagens (TransformationConfig
).Se você não incluir um objeto
TransformationConfig
, a Proteção de dados sensíveis substituirá os dados sensíveis no texto pelo infoType. Nas imagens, ele cobre dados sensíveis com uma caixa preta.transformation_details_storage_config
: especifica que a Proteção de dados sensíveis precisa armazenar metadados sobre cada transformação realizada para esse job. Além disso, ele especifica o local e o nome da tabela em que a Proteção de Dados Sensíveis precisa armazenar esses metadados (TransformationDetailsStorageConfig
).fileTypesToTransform
: limita a operação de desidentificação apenas aos tipos de arquivo listados. Se você não definir esse campo, todos os tipos de arquivo com suporte incluídos na operação de inspeção também serão incluídos na operação de desidentificação. Neste exemplo, a Proteção de dados sensíveis desidentifica apenas arquivos de imagem, CSV e texto, mesmo que você tenha configurado oDlpJob
para inspecionar todos os tipos de arquivo compatíveis.
Criar um job de inspeção pela API REST
Para criar o job de inspeção (DlpJob
), envie uma solicitação
projects.dlpJobs.create
. Para enviar a solicitação usando o cURL, salve o exemplo REST
anterior como um arquivo JSON e execute o
comando a seguir:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs \
-d @PATH_TO_JSON_FILE
Substitua:
PROJECT_ID
: o ID do projeto em que você armazenou oDlpJob
.PATH_TO_JSON_FILE
: o caminho para o arquivo JSON que contém o corpo da solicitação.
A Proteção de dados sensíveis retorna o identificador do DlpJob
recém-criado, o status dele e um snapshot da configuração de inspeção que você definiu.
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "PENDING", ... }
Extrair os resultados do job de inspeção
Para recuperar os resultados do DlpJob
, envie uma solicitação
projects.dlpJobs.get
:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
Substitua:
PROJECT_ID
: o ID do projeto em que você armazenou oDlpJob
.JOB_ID
: o ID do job que foi retornado quando você criou oDlpJob
.
Se a operação for concluída, você receberá uma resposta semelhante a esta:
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "DONE", "inspectDetails": { "requestedOptions": { "snapshotInspectTemplate": {}, "jobConfig": { "storageConfig": { "cloudStorageOptions": { "fileSet": { "url": "INPUT_DIRECTORY" } } }, "inspectConfig": { "infoTypes": [ { "name": "PERSON_NAME" } ], "limits": {} }, "actions": [ { "deidentify": { "transformationDetailsStorageConfig": { "table": { "projectId": "TRANSFORMATION_DETAILS_PROJECT_ID", "datasetId": "TRANSFORMATION_DETAILS_DATASET_ID", "tableId": "TRANSFORMATION_DETAILS_TABLE_ID" } }, "transformationConfig": { "deidentifyTemplate": "DEIDENTIFY_TEMPLATE_NAME", "structuredDeidentifyTemplate": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "imageRedactTemplate": "IMAGE_REDACTION_TEMPLATE_NAME" }, "fileTypesToTransform": [ "IMAGE", "CSV", "TEXT_FILE" ], "cloudStorageOutput": "OUTPUT_DIRECTORY" } } ] } }, "result": { "processedBytes": "25242", "totalEstimatedBytes": "25242", "infoTypeStats": [ { "infoType": { "name": "PERSON_NAME" }, "count": "114" } ] } }, "createTime": "2022-06-09T23:00:53.380Z", "startTime": "2022-06-09T23:01:27.986383Z", "endTime": "2022-06-09T23:02:00.443536Z", "actionDetails": [ { "deidentifyDetails": { "requestedOptions": { "snapshotDeidentifyTemplate": { "name": "DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T17:46:34.208923Z", "updateTime": "2022-06-09T17:46:34.208923Z", "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "characterMaskConfig": { "maskingCharacter": "*", "numberToMask": 25 } } } ] } }, "locationId": "global" }, "snapshotStructuredDeidentifyTemplate": { "name": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T20:51:12.411456Z", "updateTime": "2022-06-09T21:07:53.633149Z", "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "Name" } ], "primitiveTransformation": { "replaceConfig": { "newValue": { "stringValue": "[redacted]" } } } } ] } }, "locationId": "global" }, "snapshotImageRedactTemplate": { "name": "IMAGE_REDACTION_TEMPLATE_NAME", "createTime": "2022-06-09T20:52:25.453564Z", "updateTime": "2022-06-09T20:52:25.453564Z", "deidentifyConfig": {}, "locationId": "global" } }, "deidentifyStats": { "transformedBytes": "3972", "transformationCount": "110" } } } ], "locationId": "global" }
A seguir
- Saiba mais sobre o processo de desidentificação de dados em armazenamento.
- Saiba como remover a identificação de dados no armazenamento usando o console do Google Cloud.
- Faça o codelab Criar uma cópia desidentificada dos dados no Cloud Storage.
- Saiba mais sobre transformações de desidentificação.
- Saiba como inspecionar o armazenamento em busca de dados sensíveis.