Esta página descreve como inspecionar um recurso do Cloud Storage e criar cópias anónimas dos dados através da API Cloud Data Loss Prevention.
Esta operação ajuda a garantir que os ficheiros que usa nos processos da sua empresa não contêm dados confidenciais, como informações de identificação pessoal (PII). A Proteção de dados confidenciais pode inspecionar ficheiros num contentor do Cloud Storage para encontrar dados confidenciais e criar cópias anonimizadas desses ficheiros num contentor separado. Em seguida, pode usar as cópias anonimizadas nos seus processos empresariais.
Para mais informações acerca desta funcionalidade, consulte o artigo Desidentificação de dados confidenciais no Cloud Storage.
Antes de começar
Esta página pressupõe o seguinte:
Ativou a faturação.
Ativou a proteção de dados confidenciais.
Tem um contentor do Cloud Storage com dados que quer desidentificar.
Sabe como enviar um pedido HTTP para a API DLP. Para mais informações, consulte o artigo Inspeccione texto sensível através da API DLP.
Saiba mais sobre as limitações e os pontos a ter em consideração para esta operação.
A inspeção de armazenamento requer o seguinte âmbito do OAuth:
https://www.googleapis.com/auth/cloud-platform
. Para mais informações, consulte o artigo
Autenticação na API DLP.
Funções de IAM necessárias
Se todos os recursos para esta operação estiverem no mesmo projeto, a função de agente do serviço da API DLP (roles/dlp.serviceAgent
) no agente do serviço é suficiente. Com essa função, pode fazer o seguinte:
- Crie a tarefa de inspeção
- Ler os ficheiros no diretório de entrada
- Escrever os ficheiros anonimizados no diretório de saída
- Escreva os detalhes da transformação numa tabela do BigQuery
Os recursos relevantes incluem a tarefa de inspeção, os modelos de desidentificação, o contentor de entrada, o contentor de saída e a tabela de detalhes da transformação.
Se tiver de ter os recursos em projetos separados, certifique-se de que o agente de serviço do seu projeto também tem as seguintes funções:
- A função de visualizador de objetos de armazenamento (
roles/storage.objectViewer
) no contentor de entrada ou no projeto que o contém. - A função de criador de objetos de armazenamento (
roles/storage.objectCreator
) no contentor de saída ou no projeto que o contém. - A função 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 do serviço, consulte o artigo Conceda uma única função. Também pode controlar o acesso nos seguintes níveis:
Vista geral da API
Para criar cópias anonimizadas de conteúdo armazenado no Cloud Storage,
configure uma tarefa de inspeção
que procura dados confidenciais
de acordo com os critérios que especificar. Em seguida, na tarefa de inspeção, fornece instruções de desidentificação sob a forma de uma ação Deidentify
.
Se quiser analisar apenas um subconjunto dos ficheiros no seu contentor, pode limitar os ficheiros que a tarefa analisa. As opções suportadas para tarefas com
desidentificação são a filtragem de ficheiros por tipo (FileType
) e a expressão
regular (FileSet
).
Quando ativa a ação Deidentify
, por predefinição, a Proteção de dados confidenciais
cria cópias desidentificadas (transformadas) de todos os tipos de ficheiros suportados
incluídos na análise. No entanto, pode configurar a tarefa para transformar apenas um subconjunto dos tipos de ficheiros suportados.
Opcional: crie modelos de desidentificação
Se quiser controlar a forma como as conclusões são transformadas, crie os seguintes modelos. Estes modelos fornecem instruções sobre a transformação de resultados em ficheiros estruturados, ficheiros não estruturados e imagens.
Modelo de desidentificação: um
DeidentifyTemplate
predefinido a usar para ficheiros não estruturados, como ficheiros de texto de forma livre. Este tipo deDeidentifyTemplate
não pode conter um objetoRecordTransformations
, que só é suportado para conteúdo estruturado. Se este modelo não estiver presente, a proteção de dados confidenciais usa o métodoReplaceWithInfoTypeConfig
para transformar ficheiros não estruturados.Modelo de desidentificação estruturado: um
DeidentifyTemplate
a usar para ficheiros estruturados, como ficheiros CSV. Estas informaçõesDeidentifyTemplate
podem conterRecordTransformations
. Se este modelo não estiver presente, a proteção de dados confidenciais usa o modelo de desidentificação predefinido que criou. Se também não estiver presente, a proteção de dados confidenciais usa o métodoReplaceWithInfoTypeConfig
para transformar ficheiros estruturados.Modelo de ocultação de imagens: um
DeidentifyTemplate
a usar para imagens. Este modelo tem de conter um objetoImageTransformations
. Se este modelo não estiver presente, a proteção de dados confidenciais oculta todas as descobertas em imagens com uma caixa preta.
Saiba como criar um modelo de desidentificação.
Crie uma tarefa de inspeção que tenha uma ação de desidentificação
O objeto DlpJob
fornece instruções sobre o que inspecionar, que tipos de dados marcar como confidenciais e o que fazer com as conclusões.
Para remover a identificação de dados confidenciais num diretório do Cloud Storage, o seu
DlpJob
tem de definir, pelo menos, o seguinte:
- Um objeto
StorageConfig
, que especifica o diretório do Cloud Storage a inspecionar. - Um objeto
InspectConfig
, que contém os tipos de dados a procurar e instruções de inspeção adicionais sobre como encontrar os dados confidenciais. Uma ação de
Deidentify
que contenha o seguinte:Um objeto
TransformationConfig
, que especifica quaisquer modelos que criou para desidentificar dados em ficheiros estruturados e não estruturados. Também pode incluir a configuração para ocultar dados confidenciais de imagens.Se não incluir um objeto
TransformationConfig
, a Proteção de dados confidenciais substitui os dados confidenciais no texto pelo respetivo infoType. Em imagens, cobre dados confidenciais com uma caixa preta.Um objeto
TransformationDetailsStorageConfig
, que especifica uma tabela do BigQuery onde a proteção de dados confidenciais tem de armazenar detalhes sobre cada transformação. Para cada transformação, os detalhes incluem uma descrição, um código de êxito ou de erro, quaisquer detalhes de erro, o número de bytes transformados, a localização do conteúdo transformado e o nome da tarefa de inspeção na qual a proteção de dados confidenciais fez a transformação. Esta tabela não armazena o conteúdo anonimizado real.
Quando os dados são escritos numa tabela do BigQuery, a faturação e a utilização de quotas são aplicadas ao projeto que contém a tabela de destino.
Depois de o conteúdo copiado ser desidentificado, a tarefa de desidentificação termina. O trabalho contém um resumo do número de vezes que as transformações especificadas foram aplicadas, que pode obter através do método projects.dlpJobs.get
em DlpJob
. O DlpJob
devolvido inclui um objeto DeidentifyDataSourceDetails
e um objeto InspectDataSourceDetails
. Esses objetos contêm os resultados de uma ação Deidentify
e a tarefa de inspeção, respetivamente.
Se incluiu um objeto TransformationDetailsStorageConfig
no seu DlpJob
, é criada uma tabela do BigQuery com metadados sobre os detalhes da transformação. Para cada transformação que ocorre, a proteção de dados confidenciais escreve 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 seguintes demonstram como usar a API DLP para criar cópias anonimizadas de ficheiros 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 cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 o seguinte:
PROJECT_ID
: o ID do projeto onde quer armazenar a tarefa de inspeção.INPUT_DIRECTORY
: o diretório do Cloud Storage que quer inspecionar, por exemplo,gs://input-bucket/folder1/folder1a
. Se o URL terminar numa barra à direita, não são analisados quaisquer subdiretórios no interior deINPUT_DIRECTORY
.OUTPUT_DIRECTORY
: o diretório do Cloud Storage onde quer armazenar os ficheiros anonimizados. Este diretório não pode estar no mesmo contentor do Cloud Storage queINPUT_DIRECTORY
.DEIDENTIFY_TEMPLATE_NAME
: o nome completo do recurso do modelo de desidentificação predefinido, para ficheiros não estruturados e estruturados, se tiver criado um. Este valor tem de estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
: o nome completo do recurso do modelo de desidentificação para ficheiros estruturados, se tiver criado um. Este valor tem de estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.IMAGE_REDACTION_TEMPLATE_NAME
: o nome completo do recurso do modelo de ocultação de imagens para imagens, se tiver criado um. Este valor tem de estar no formatoprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.TRANSFORMATION_DETAILS_PROJECT_ID
: o ID do projeto onde quer armazenar os detalhes da transformação.TRANSFORMATION_DETAILS_DATASET_ID
: o ID do conjunto de dados do BigQuery onde quer armazenar os detalhes da transformação. Se não fornecer um ID da tabela, o sistema cria automaticamente um.TRANSFORMATION_DETAILS_TABLE_ID
: o ID da tabela do BigQuery onde quer armazenar os detalhes da transformação.
Tenha em atenção os seguintes objetos:
inspectJob
: O objeto de configuração da tarefa (DlpJob
). Este objeto contém a configuração para as fases de inspeção e desidentificação.storageConfig
: A localização do conteúdo a inspecionar (StorageConfig
). Este exemplo especifica um contentor do Cloud StorageCloudStorageOptions
.inspectConfig
: Informações sobre os dados confidenciais que quer inspecionar (InspectConfig
). Este exemplo inspeciona o conteúdo que corresponde ao infoType incorporadoPERSON_NAME
.actions
: as ações a realizar após a parte de inspeção da tarefa estar concluída (Action
).deidentify
: a especificação desta ação indica à proteção de dados confidenciais que deve desidentificar os dados confidenciais correspondentes de acordo com a configuração especificada no interior de (Deidentify
).cloud_storage_output
: especifica o URL do diretório do Cloud Storage que quer inspecionar.transformation_config
: especifica como a proteção de dados confidenciais tem de remover a identificação de dados confidenciais em ficheiros estruturados, ficheiros não estruturados e imagens (TransformationConfig
).Se não incluir um objeto
TransformationConfig
, a Proteção de dados confidenciais substitui os dados confidenciais no texto pelo respetivo infoType. Em imagens, cobre dados confidenciais com uma caixa preta.transformation_details_storage_config
: especifica que a proteção de dados confidenciais tem de armazenar metadados sobre cada transformação que realiza para esta tarefa. Além disso, especifica a localização e o nome da tabela onde a Proteção de dados confidenciais tem de armazenar esses metadados (TransformationDetailsStorageConfig
).fileTypesToTransform
: limita a operação de desidentificação apenas aos tipos de ficheiros que indicar. Se não definir este campo, todos os tipos de ficheiros suportados incluídos na operação de inspeção também são incluídos na operação de desidentificação. Neste exemplo, a proteção de dados confidenciais desidentifica apenas ficheiros de imagem, CSV e texto, mesmo que tenha configurado oDlpJob
para inspecionar todos os tipos de ficheiros suportados.
Crie uma tarefa de inspeção através da API REST
Para criar a tarefa de inspeção (DlpJob
), envie um pedido projects.dlpJobs.create
. Para enviar o pedido através do cURL, guarde o exemplo REST anterior como um ficheiro JSON e execute o seguinte comando:
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 o seguinte:
PROJECT_ID
: o ID do projeto onde armazenou oDlpJob
.PATH_TO_JSON_FILE
: o caminho para o ficheiro JSON que contém o corpo do pedido.
A Proteção de dados confidenciais devolve o identificador do DlpJob
recém-criado, o respetivo estado e um instantâneo da configuração de inspeção que definiu.
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "PENDING", ... }
Obtenha os resultados da tarefa de inspeção
Para obter os resultados do DlpJob
, envie um pedido 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 o seguinte:
PROJECT_ID
: o ID do projeto onde armazenou oDlpJob
.JOB_ID
: o ID da tarefa devolvido quando criou oDlpJob
.
Se a operação estiver concluída, recebe uma resposta semelhante à seguinte:
{ "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" }
O que se segue?
- Saiba mais acerca do processo de desidentificação de dados no armazenamento.
- Saiba como desidentificar dados no armazenamento através da Google Cloud consola.
- Siga o codelab Criar uma cópia anónima de dados no Cloud Storage.
- Saiba mais acerca das transformações de desidentificação.
- Saiba como inspecionar o armazenamento para verificar se existem dados confidenciais.