Como criar e programar jobs de inspeção do Cloud DLP

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Neste tópico, descrevemos em detalhes como criar um job de inspeção do Cloud Data Loss Prevention e como programar jobs de inspeção recorrentes criando um gatilho de jobs. Para um tutorial rápido de como criar um novo acionador de jobs usando a IU do Cloud DLP, consulte Início rápido para criar um acionador de jobs do Cloud DLP.

Sobre jobs de inspeção e gatilhos de jobs

Quando o Cloud DLP executa uma verificação de inspeção para identificar dados confidenciais, cada verificação é executada como um job. O Cloud DLP cria e executa um recurso de job sempre que você pede para inspecionar os repositórios de armazenamento do Google Cloud, incluindo buckets do Cloud Storage, tabelas do BigQuery, tipos do Datastore e dados externos.

Programe os jobs de verificação de inspeção do Cloud DLP criando gatilhos de jobs. Um gatilho de jobs automatiza a criação de jobs de DLP periodicamente e também pode ser executado sob demanda.

Para saber mais sobre jobs e gatilhos de jobs no Cloud DLP, consulte a página conceitual Jobs e gatilhos de jobs.

Criar um novo job de inspeção

Para criar um novo job de inspeção do Cloud DLP:

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

  2. Clique na guia Inspeção e em Criar gatilhos de jobs e jobs.

    Ou clique no seguinte botão:

    Criar nova vaga

A página "Criar job" contém as seguintes seções:

Escolher dados de entrada

Nome

Insira um nome para o job. Use letras, números e hifens. Nomear o job é opcional. Se você não inserir um nome, o Cloud DLP fornecerá ao job um identificador de número exclusivo.

Local

No menu Tipo de armazenamento, escolha o tipo de repositório que armazena os dados que você quer verificar:

  • Cloud Storage: digite o URL do bucket que você quer verificar ou escolha Incluir/excluir no menu Tipo de local e clique em Procurar para navegar até o bucket ou a subpasta que você quer verificar. Marque a caixa de seleção Verificar pasta recursivamente para verificar o diretório especificado e todos os diretórios contidos. Deixe-a desmarcada para verificar apenas o diretório especificado e não mais profundamente.
  • BigQuery: insira os identificadores do projeto, o conjunto de dados e a tabela que você quer verificar.
  • Datastore: insira os identificadores do projeto, o namespace (opcional) e o tipo que você quer verificar.
  • Híbrido: é possível adicionar rótulos obrigatórios, opcionais e opções para processar dados tabulares. Para saber mais, consulte Tipos de metadados que você pode fornecer.

Amostragem

A amostragem é uma forma opcional de economizar recursos, se você tiver uma quantidade muito grande de dados.

Em Amostragem, escolha se você quer verificar todos os dados selecionados ou criar amostras dos dados verificando uma determinada porcentagem. A amostragem funciona de maneira diferente, dependendo do tipo de repositório de armazenamento que você está verificando:

  • Para o BigQuery, é possível criar uma amostra de um subconjunto do total de linhas selecionadas, correspondendo à porcentagem de arquivos especificada a ser incluída na verificação.
  • Para o Cloud Storage, se algum arquivo exceder o tamanho especificado no Tamanho máximo de bytes a ser verificado por arquivo, o Cloud DLP verificará até esse tamanho máximo de arquivo e avançará para o próximo arquivo.

Para ativar a amostragem, escolha uma das seguintes opções no primeiro menu:

  • Comece a amostragem pelo começo: o Cloud DLP inicia a verificação parcial no início dos dados. Para o BigQuery, isso inicia a verificação na primeira linha. No Cloud Storage, isso inicia a verificação no início de cada arquivo e interrompe a verificação quando o Cloud DLP é verificado até um tamanho máximo de arquivo especificado.
  • Iniciar amostragem de forma aleatória: o Cloud DLP inicia a verificação parcial em um local aleatório dentro dos dados. Para o BigQuery, isso inicia a verificação em uma linha aleatória. Para o Cloud Storage, essa configuração só se aplica a arquivos que excedam qualquer tamanho máximo especificado. O Cloud DLP verifica arquivos com o tamanho máximo na íntegra e arquivos acima do tamanho até o máximo.

Para realizar uma verificação parcial, também é necessário escolher qual porcentagem dos dados você quer verificar. Use o controle deslizante para definir a porcentagem.

Também é possível restringir os arquivos ou os registros para verificação por data. Para saber como, consulte Programação, mais adiante neste tópico.

Configuração avançada

Ao criar um job para uma verificação de buckets do Cloud Storage ou tabelas do BigQuery, restrinja a pesquisa especificando uma configuração avançada. Mais especificamente, é possível configurar estes elementos:

  • Arquivos (somente Cloud Storage): os tipos de arquivos a serem verificados, que incluem arquivos de texto, binários e de imagem.
  • Campos de identificação (somente BigQuery): identificadores de linha exclusivos na tabela.
  • Para o Cloud Storage, se algum arquivo exceder o tamanho especificado no Tamanho máximo de bytes a ser verificado por arquivo, o Cloud DLP verificará até esse tamanho máximo de arquivo e avançará para o próximo arquivo.

Para ativar a amostragem, escolha a porcentagem dos dados que você quer verificar. Use o controle deslizante para definir a porcentagem. Em seguida, escolha uma das seguintes opções no primeiro menu:

  • Comece a amostragem pelo começo: o Cloud DLP inicia a verificação parcial no início dos dados. Para o BigQuery, isso inicia a verificação na primeira linha. Para o Cloud Storage, isso inicia a verificação no início de cada arquivo e para a verificação assim que o Cloud DLP é verificado até um tamanho máximo de arquivo especificado (veja acima).
  • Iniciar amostragem de forma aleatória: o Cloud DLP inicia a verificação parcial em um local aleatório dentro dos dados. Para o BigQuery, isso inicia a verificação em uma linha aleatória. Para o Cloud Storage, essa configuração só se aplica a arquivos que excedam qualquer tamanho máximo especificado. O Cloud DLP verifica arquivos com o tamanho máximo na íntegra e arquivos acima do tamanho até o máximo.
Arquivos

Para arquivos armazenados no Cloud Storage, especifique os tipos a serem incluídos na verificação em Arquivos.

É possível escolher entre arquivos binários, de texto, gráficos, CSV, TSV, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, PDF e Apache Avro. Para ver uma lista completa de extensões de arquivos que o Cloud DLP pode verificar nos buckets do Cloud Storage, consulte FileType. Quando você escolhe Binário, o Cloud DLP verifica os arquivos de tipos não reconhecidos.

Campos de identificação

Para tabelas no BigQuery, no campo Campos de identificação, é possível direcionar o Cloud DLP para incluir os valores das colunas de chave primária da tabela nos resultados. Isso permite que você vincule as descobertas às linhas da tabela que as contêm.

Insira os nomes das colunas que identificam exclusivamente cada linha na tabela. Se necessário, use a notação por pontos para especificar campos aninhados. Você pode adicionar quantos campos quiser.

Você também precisa ativar a ação Salvar no BigQuery para exportar as descobertas para o BigQuery. Quando as descobertas são exportadas para o BigQuery, as descobertas contêm os respectivos valores dos campos de identificação. Para mais informações, consulte identifyingFields.

Configurar detecção

A seção Configurar detecção é onde você especifica os tipos de dados confidenciais que quer verificar. A conclusão desta seção é opcional. Se você pular esta seção, o Cloud DLP vai verificar os dados em busca de um conjunto padrão de InfoTypes.

Modelo

Também é possível usar um modelo do Cloud DLP para reutilizar as informações de configuração especificadas anteriormente.

Se você já tiver criado um modelo que queira usar, clique no campo Nome do modelo para ver uma lista dos modelos de inspeção. Escolha ou digite o nome do modelo que você quer usar.

Para mais informações sobre como criar modelos, consulte Como criar modelos de inspeção do Cloud DLP.

InfoTypes

Os detectores InfoType encontram dados confidenciais de um determinado tipo. Por exemplo, o detector infoType integrado US_SOCIAL_SECURITY_NUMBER do Cloud DLP encontra números de CPF. Além dos detectores de infoType integrados, é possível criar seus próprios detectores de infoType personalizados.

Em InfoTypes, escolha o detector infoType correspondente a um tipo de dados que você quer verificar. Também é possível deixar esse campo em branco para verificar todos os infoTypes padrão. Mais informações sobre cada detector são fornecidas na referência de detectores de InfoType.

Também é possível adicionar detectores de infoType personalizados na seção infoTypes personalizados e personalizar os detectores de infoType integrados e personalizados na seção Conjuntos de regras de inspeção.

InfoTypes personalizados

To add a custom infoType detector, do the following:

  1. Click Add custom infoType.
  2. Choose the type of custom infoType detector you want to create:
    • Words or phrases: Matches on one or more words or phrases that you enter into the field. Use this custom infoType when you have just a few words or phrases to search for. Give your custom infoType a name, and then, under List of words or phrases, type the word or phrase you want Cloud DLP to match on. To search on multiple words or phrases, press Enter after each one. For more information, see Creating a regular custom dictionary detector.
    • Dictionary path: Searches your content for items in a list of words and phrases. The list is stored in a text file in Cloud Storage. Use this custom infoType when you have anywhere from a few to several hundred thousand words or phrases to search for. This method is also useful if your list contains sensitive elements and you don't want to store them inside of a job or template. Give your custom infoType a name, and then, under Dictionary location, enter or browse to the Cloud Storage path where the dictionary file is stored. For more information, see Creating a regular custom dictionary detector.
    • Regex: Matches content based on a regular expression. Give your custom infoType a name, and then, in the Regex field, enter a regex pattern to match words and phrases. See the supported regex syntax.
    • Stored infoType: This option adds a stored custom dictionary detector, which is a kind of dictionary detector that is built from either a large text file stored in Cloud Storage or a single column of a BigQuery table. Use this kind of custom infoType when you have anywhere from several hundred thousand to tens of millions of words or phrases to search for. Be aware that this is the only option in this menu for which you must have already created the stored infoType to use it. Give your custom infoType a name (different from the name you gave the stored infoType), and then, in the Stored infoType field, enter the name of the stored infoType. For more information about creating stored custom dictionaries, see Creating a stored custom dictionary detector.

Click Add custom infoType again to add additional custom infoType detectors.

Conjuntos de regras de inspeção

Inspection rulesets allow you to customize both built-in and custom infoType detectors using context rules. The two types of inspection rules are:

To add a new ruleset, first specify one or more built-in or custom infoType detectors in the InfoTypes section. These are the infoType detectors that your rulesets will be modifying. Then, do the following:

  1. Click in the Choose infoTypes field. The infoType or infoTypes you specified previously appear below the field in a menu, as shown here:
  2. Screenshot of the DLP UI's inspection rulesets configuration.
  3. Choose an infoType from the menu, and then click Add rule. A menu appears with the two options Hotword rule and Exclusion rule.

For hotword rules, choose Hotword rules. Then, do the following:

  1. In the Hotword field, enter a regular expression that Cloud DLP should look for.
  2. From the Hotword proximity menu, choose whether the hotword you entered is found before or after the chosen infoType.
  3. In Hotword distance from infoType, enter the approximate number of characters between the hotword and the chosen infoType.
  4. In Confidence level adjustment, choose whether to assign matches a fixed likelihood level, or to increase or decrease the default likelihood level by a certain amount.

For exclusion rules, choose Exclusion rules. Then, do the following:

  1. In the Exclude field, enter a regular expression (regex) that Cloud DLP should look for.
  2. From the Matching type menu, choose one of the following:
    • Full match: The finding must completely match the regex.
    • Partial match: A substring of the finding can match the regex.
    • Inverse match: The finding doesn't match the regex.

You can add additional hotword or exclusion rules and rulesets to further refine your scan results.

Limite de confiança

Sempre que o Cloud DLP detecta uma possível correspondência para dados confidenciais, ele atribui um valor de probabilidade em uma escala de "Muito improvável" a "Muito provável". Ao definir um valor de probabilidade aqui, você instrui o Cloud DLP a fazer a correspondência apenas com dados que correspondam a esse valor de probabilidade ou mais.

O valor padrão "Possível" é suficiente para a maioria das finalidades. Se você normalmente recebe correspondências muito amplas, mova o controle deslizante para a direita. Se você recebe poucas correspondências, mova o controle deslizante para a esquerda.

Quando terminar, clique em Continuar.

Adicionar ações

Na etapa Adicionar ações, selecione uma ou mais ações que você queira que o Cloud DLP execute após a conclusão do job.

Você pode configurar as seguintes ações:

  • Salvar no BigQuery: salve os resultados do job de DLP em uma tabela do BigQuery. Antes de visualizar ou analisar os resultados, verifique se o job foi concluído.

    Sempre que uma verificação é executada, o Cloud DLP salva as descobertas da verificação na tabela especificada do BigQuery. As descobertas exportadas contêm detalhes sobre a localização e a probabilidade de correspondência de cada descoberta. Se você quiser que cada descoberta inclua a string que corresponde ao detector de infoType, ative a opção Incluir cotação.

    Se você não especificar um ID de tabela, o BigQuery atribuirá um nome padrão a uma nova tabela na primeira vez que a verificação for executada. Se você especificar uma tabela, o Cloud DLP anexará as descobertas da verificação a ela.

    Se você não salvar as descobertas no BigQuery, os resultados da verificação conterão apenas estatísticas sobre o número e os infoTypes das descobertas.

    Quando os dados são gravados em uma tabela do BigQuery, o uso de faturamento e cotas é aplicado ao projeto que contém a tabela de destino.

  • Publicar no Pub/Sub: publique uma notificação que contenha o nome do job do DLP como um atributo em um canal do Pub/Sub. É possível especificar um ou mais tópicos para enviar a mensagem de notificação. Verifique se a conta de serviço do Cloud DLP que executa o job de verificação tem acesso de publicação no tópico.

  • Publicar no Security Command Center: publique um resumo dos resultados do job no Security Command Center. Para mais informações, consulte Enviar os resultados da verificação do Cloud DLP para o Security Command Center.

  • Publicar no Dataplex: envie os resultados do job para o Dataplex, o serviço de gerenciamento de metadados do Google Cloud.

  • Notificar por e-mail: envie um e-mail quando o job for concluído. O e-mail é enviado para os proprietários do projeto do IAM e os Contatos essenciais técnicos.

  • Publicar no Cloud Monitoring: envie resultados da inspeção para o Cloud Monitoring no pacote de operações do Google Cloud.

  • Fazer uma cópia desidentificada: desidentifique todas as descobertas nos dados inspecionados e grave o conteúdo desidentificado em um novo arquivo. Em seguida, é possível usar a cópia desidentificada nos processos de negócios em vez de dados que contêm informações confidenciais. Para mais informações, consulte Criar uma cópia desidentificada dos dados do Cloud Storage usando o Cloud DLP no Console do Google Cloud.

Para mais informações, consulte Ações.

Quando terminar de selecionar ações, clique em Continuar.

Revisar

A seção Revisar contém um resumo formatado em JSON das configurações do job recém-especificado.

Clique em Criar para criar o job (se não tiver especificado uma programação) e executar o job uma vez. A página de informações do job é exibida, que contém status e outras informações. Se o job estiver em execução no momento, será possível clicar no botão Cancelar para interrompê-lo. Também é possível excluir o job clicando em Excluir.

Para retornar à página principal do Cloud DLP, clique na seta Voltar no Console do Google Cloud.

Protocolo

Um job é representado na API DLP pelo recurso DlpJobs. Para criar um novo job, use o método projects.dlpJobs.create do recurso DlpJob.

Esta amostra de JSON pode ser enviada em uma solicitação POST para o endpoint do Cloud DLP REST especificado. Este exemplo de JSON demonstra como criar um job no Cloud DLP. O job é uma verificação de inspeção do Datastore.

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Uma solicitação bem-sucedida, mesmo se for criada na API Explorer, criará um job. Para informações gerais sobre como usar o JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Entrada JSON:

{
  "inspectJob": {
    "storageConfig": {
      "bigQueryOptions": {
        "tableReference": {
          "projectId": "bigquery-public-data",
          "datasetId": "san_francisco_sfpd_incidents",
          "tableId": "sfpd_incidents"
        }
      },
      "timespanConfig": {
        "startTime": "2020-01-01T00:00:01Z",
        "endTime": "2020-01-31T23:59:59Z",
        "timestampField": {
          "name": "timestamp"
        }
      }
    },
    "inspectConfig": {
      "infoTypes": [
        {
          "name": "PERSON_NAME"
        },
        {
          "name": "STREET_ADDRESS"
        }
      ],
      "excludeInfoTypes": false,
      "includeQuote": true,
      "minLikelihood": "LIKELY"
    },
    "actions": [
      {
        "saveFindings": {
          "outputConfig": {
            "table": {
              "projectId": "[PROJECT-ID]",
              "datasetId": "[DATASET-ID]"
            }
          }
        }
      }
    ]
  }
}

Saída JSON:

A resposta a seguir indica que o job foi criado com sucesso.

{
  "name": "projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
  "type": "INSPECT_JOB",
  "state": "PENDING",
  "inspectDetails": {
    "requestedOptions": {
      "snapshotInspectTemplate": {},
      "jobConfig": {
        "storageConfig": {
          "bigQueryOptions": {
            "tableReference": {
              "projectId": "bigquery-public-data",
              "datasetId": "san_francisco_sfpd_incidents",
              "tableId": "sfpd_incidents"
            }
          },
          "timespanConfig": {
            "startTime": "2020-01-01T00:00:01Z",
            "endTime": "2020-01-31T23:59:59Z",
            "timestampField": {
              "name": "timestamp"
            }
          }
        },
        "inspectConfig": {
          "infoTypes": [
            {
              "name": "PERSON_NAME"
            },
            {
              "name": "STREET_ADDRESS"
            }
          ],
          "minLikelihood": "LIKELY",
          "limits": {},
          "includeQuote": true
        },
        "actions": [
          {
            "saveFindings": {
              "outputConfig": {
                "table": {
                  "projectId": "[PROJECT-ID]",
                  "datasetId": "[DATASET-ID]",
                  "tableId": "[TABLE-ID]"
                }
              }
            }
          }
        ]
      }
    },
    "result": {}
  },
  "createTime": "2020-07-10T07:26:33.643Z"
}

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.Action;
import com.google.privacy.dlp.v2.CloudStorageOptions;
import com.google.privacy.dlp.v2.CreateDlpJobRequest;
import com.google.privacy.dlp.v2.DlpJob;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectJobConfig;
import com.google.privacy.dlp.v2.Likelihood;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.StorageConfig;
import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class JobsCreate {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt";
    createJobs(projectId, gcsPath);
  }

  // Creates a DLP Job
  public static void createJobs(String projectId, String gcsPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Set autoPopulateTimespan to true to scan only new content
      boolean autoPopulateTimespan = true;
      TimespanConfig timespanConfig =
          TimespanConfig.newBuilder()
              .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan)
              .build();

      // Specify the GCS file to be inspected.
      CloudStorageOptions cloudStorageOptions =
          CloudStorageOptions.newBuilder()
              .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath))
              .build();
      StorageConfig storageConfig =
          StorageConfig.newBuilder()
              .setCloudStorageOptions(cloudStorageOptions)
              .setTimespanConfig(timespanConfig)
              .build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      List<InfoType> infoTypes =
          Stream.of("EMAIL_ADDRESS", "PERSON_NAME", "LOCATION", "PHONE_NUMBER")
              .map(it -> InfoType.newBuilder().setName(it).build())
              .collect(Collectors.toList());
      // The minimum likelihood required before returning a match:
      // See: https://cloud.google.com/dlp/docs/likelihood
      Likelihood minLikelihood = Likelihood.UNLIKELY;

      // The maximum number of findings to report (0 = server maximum)
      InspectConfig.FindingLimits findingLimits =
          InspectConfig.FindingLimits.newBuilder().setMaxFindingsPerItem(100).build();

      InspectConfig inspectConfig =
          InspectConfig.newBuilder()
              .addAllInfoTypes(infoTypes)
              .setIncludeQuote(true)
              .setMinLikelihood(minLikelihood)
              .setLimits(findingLimits)
              .build();

      // Specify the action that is triggered when the job completes.
      Action.PublishSummaryToCscc publishSummaryToCscc =
          Action.PublishSummaryToCscc.getDefaultInstance();
      Action action = Action.newBuilder().setPublishSummaryToCscc(publishSummaryToCscc).build();

      // Configure the inspection job we want the service to perform.
      InspectJobConfig inspectJobConfig =
          InspectJobConfig.newBuilder()
              .setInspectConfig(inspectConfig)
              .setStorageConfig(storageConfig)
              .addActions(action)
              .build();

      // Construct the job creation request to be sent by the client.
      CreateDlpJobRequest createDlpJobRequest =
          CreateDlpJobRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setInspectJob(inspectJobConfig)
              .build();

      // Send the job creation request and process the response.
      DlpJob createdDlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest);
      System.out.println("Job created successfully: " + createdDlpJob.getName());
    }
  }
}

Criar um novo gatilho de job

Para criar um novo gatilho de jobs do Cloud DLP:

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

  2. Clique na guia Inspeção e em Criar gatilhos de jobs e jobs.

    Ou clique no seguinte botão:

    Criar novo gatilho de jobs

A página "Criar gatilho de jobs" contém as seguintes seções:

Escolher dados de entrada

Nome

Insira um nome para o gatilho de jobs. Use letras, números e hifens. Nomear o gatilho de jobs é opcional. Se você não inserir um nome, o Cloud DLP fornecerá ao gatilho de jobs um identificador de número exclusivo.

Local

No menu Tipo de armazenamento, escolha o tipo de repositório que armazena os dados que você quer verificar:

  • Cloud Storage: digite o URL do bucket que você quer verificar ou escolha Incluir/excluir no menu Tipo de local e clique em Procurar para navegar até o bucket ou a subpasta que você quer verificar. Marque a caixa de seleção Verificar pasta recursivamente para verificar o diretório especificado e todos os diretórios contidos. Deixe-a desmarcada para verificar apenas o diretório especificado e não mais profundamente.
  • BigQuery: insira os identificadores do projeto, o conjunto de dados e a tabela que você quer verificar.
  • Datastore: insira os identificadores do projeto, o namespace (opcional) e o tipo que você quer verificar.

Amostragem

A amostragem é uma forma opcional de economizar recursos, se você tiver uma quantidade muito grande de dados.

Em Amostragem, escolha se você quer verificar todos os dados selecionados ou criar amostras dos dados verificando uma determinada porcentagem. A amostragem funciona de maneira diferente, dependendo do tipo de repositório de armazenamento que você está verificando:

  • Para o BigQuery, é possível criar uma amostra de um subconjunto do total de linhas selecionadas, correspondendo à porcentagem de arquivos especificada a ser incluída na verificação.
  • Para o Cloud Storage, se algum arquivo exceder o tamanho especificado no Tamanho máximo de bytes a ser verificado por arquivo, o Cloud DLP verificará até esse tamanho máximo de arquivo e avançará para o próximo arquivo.

Para ativar a amostragem, escolha uma das seguintes opções no primeiro menu:

  • Comece a amostragem pelo começo: o Cloud DLP inicia a verificação parcial no início dos dados. Para o BigQuery, isso inicia a verificação na primeira linha. Para o Cloud Storage, isso inicia a verificação no início de cada arquivo e para a verificação assim que o Cloud DLP é verificado até um tamanho máximo de arquivo especificado (veja acima).
  • Iniciar amostragem de forma aleatória: o Cloud DLP inicia a verificação parcial em um local aleatório dentro dos dados. Para o BigQuery, isso inicia a verificação em uma linha aleatória. Para o Cloud Storage, essa configuração só se aplica a arquivos que excedam qualquer tamanho máximo especificado. O Cloud DLP verifica arquivos com o tamanho máximo na íntegra e arquivos acima do tamanho até o máximo.

Para realizar uma verificação parcial, também é necessário escolher qual porcentagem dos dados você quer verificar. Use o controle deslizante para definir a porcentagem.

Configuração avançada

Ao criar um gatilho de jobs para uma verificação de buckets do Cloud Storage ou tabelas do BigQuery, restrinja a pesquisa especificando uma configuração avançada. Mais especificamente, é possível configurar estes elementos:

  • Arquivos (somente Cloud Storage): os tipos de arquivos a serem verificados, que incluem arquivos de texto, binários e de imagem.
  • Campos de identificação (somente BigQuery): identificadores de linha exclusivos na tabela.
  • Para o Cloud Storage, se algum arquivo exceder o tamanho especificado no Tamanho máximo de bytes a ser verificado por arquivo, o Cloud DLP verificará até esse tamanho máximo de arquivo e avançará para o próximo arquivo.

Para ativar a amostragem, escolha a porcentagem dos dados que você quer verificar. Use o controle deslizante para definir a porcentagem. Em seguida, escolha uma das seguintes opções no primeiro menu:

  • Comece a amostragem pelo começo: o Cloud DLP inicia a verificação parcial no início dos dados. Para o BigQuery, isso inicia a verificação na primeira linha. Para o Cloud Storage, isso inicia a verificação no início de cada arquivo e para a verificação assim que o Cloud DLP é verificado até um tamanho máximo de arquivo especificado (veja acima).
  • Iniciar amostragem de forma aleatória: o Cloud DLP inicia a verificação parcial em um local aleatório dentro dos dados. Para o BigQuery, isso inicia a verificação em uma linha aleatória. Para o Cloud Storage, essa configuração só se aplica a arquivos que excedam qualquer tamanho máximo especificado. O Cloud DLP verifica arquivos com o tamanho máximo na íntegra e arquivos acima do tamanho até o máximo.

Arquivos

Para arquivos armazenados no Cloud Storage, especifique os tipos a serem incluídos na verificação em Arquivos.

É possível escolher entre arquivos binários, de texto, gráficos, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, PDF e Apache Avro. Para uma lista completa de extensões de arquivos que o Cloud DLP pode verificar nos buckets do Cloud Storage, consulte FileType. Quando você escolhe Binário, o Cloud DLP verifica os arquivos de tipos não reconhecidos.

Campos de identificação

Para tabelas no BigQuery, no campo Campos de identificação, é possível direcionar o Cloud DLP para incluir os valores das colunas de chave primária da tabela nos resultados. Isso permite que você vincule as descobertas às linhas da tabela que as contêm.

Insira os nomes das colunas que identificam exclusivamente cada linha na tabela. Se necessário, use a notação por pontos para especificar campos aninhados. Você pode adicionar quantos campos quiser.

Você também precisa ativar a ação Salvar no BigQuery para exportar as descobertas para o BigQuery. Quando as descobertas são exportadas para o BigQuery, as descobertas contêm os respectivos valores dos campos de identificação. Para mais informações, consulte identifyingFields.

Configurar detecção

A seção Configurar detecção é onde você especifica os tipos de dados confidenciais que quer verificar. A conclusão desta seção é opcional. Se você pular esta seção, o Cloud DLP vai verificar os dados em busca de um conjunto padrão de InfoTypes.

Modelo

Também é possível usar um modelo do Cloud DLP para reutilizar as informações de configuração especificadas anteriormente.

Se você já tiver criado um modelo que queira usar, clique no campo Nome do modelo para ver uma lista dos modelos de inspeção. Escolha ou digite o nome do modelo que você quer usar.

Para mais informações sobre como criar modelos, consulte Como criar modelos de inspeção do Cloud DLP.

InfoTypes

Os detectores InfoType encontram dados confidenciais de um determinado tipo. Por exemplo, o detector infoType integrado US_SOCIAL_SECURITY_NUMBER do Cloud DLP encontra números de CPF. Além dos detectores de infoType integrados, é possível criar seus próprios detectores de infoType personalizados.

Em InfoTypes, escolha o detector infoType correspondente a um tipo de dados que você quer verificar. Também é possível deixar esse campo em branco para verificar todos os infoTypes padrão. Mais informações sobre cada detector são fornecidas na referência de detectores de InfoType.

Também é possível adicionar detectores de infoType personalizados na seção infoTypes personalizados e personalizar os detectores de infoType integrados e personalizados na seção Conjuntos de regras de inspeção.

InfoTypes personalizados

To add a custom infoType detector, do the following:

  1. Click Add custom infoType.
  2. Choose the type of custom infoType detector you want to create:
    • Words or phrases: Matches on one or more words or phrases that you enter into the field. Use this custom infoType when you have just a few words or phrases to search for. Give your custom infoType a name, and then, under List of words or phrases, type the word or phrase you want Cloud DLP to match on. To search on multiple words or phrases, press Enter after each one. For more information, see Creating a regular custom dictionary detector.
    • Dictionary path: Searches your content for items in a list of words and phrases. The list is stored in a text file in Cloud Storage. Use this custom infoType when you have anywhere from a few to several hundred thousand words or phrases to search for. This method is also useful if your list contains sensitive elements and you don't want to store them inside of a job or template. Give your custom infoType a name, and then, under Dictionary location, enter or browse to the Cloud Storage path where the dictionary file is stored. For more information, see Creating a regular custom dictionary detector.
    • Regex: Matches content based on a regular expression. Give your custom infoType a name, and then, in the Regex field, enter a regex pattern to match words and phrases. See the supported regex syntax.
    • Stored infoType: This option adds a stored custom dictionary detector, which is a kind of dictionary detector that is built from either a large text file stored in Cloud Storage or a single column of a BigQuery table. Use this kind of custom infoType when you have anywhere from several hundred thousand to tens of millions of words or phrases to search for. Be aware that this is the only option in this menu for which you must have already created the stored infoType to use it. Give your custom infoType a name (different from the name you gave the stored infoType), and then, in the Stored infoType field, enter the name of the stored infoType. For more information about creating stored custom dictionaries, see Creating a stored custom dictionary detector.

Click Add custom infoType again to add additional custom infoType detectors.

Conjuntos de regras de inspeção

Inspection rulesets allow you to customize both built-in and custom infoType detectors using context rules. The two types of inspection rules are:

To add a new ruleset, first specify one or more built-in or custom infoType detectors in the InfoTypes section. These are the infoType detectors that your rulesets will be modifying. Then, do the following:

  1. Click in the Choose infoTypes field. The infoType or infoTypes you specified previously appear below the field in a menu, as shown here:
  2. Screenshot of the DLP UI's inspection rulesets configuration.
  3. Choose an infoType from the menu, and then click Add rule. A menu appears with the two options Hotword rule and Exclusion rule.

For hotword rules, choose Hotword rules. Then, do the following:

  1. In the Hotword field, enter a regular expression that Cloud DLP should look for.
  2. From the Hotword proximity menu, choose whether the hotword you entered is found before or after the chosen infoType.
  3. In Hotword distance from infoType, enter the approximate number of characters between the hotword and the chosen infoType.
  4. In Confidence level adjustment, choose whether to assign matches a fixed likelihood level, or to increase or decrease the default likelihood level by a certain amount.

For exclusion rules, choose Exclusion rules. Then, do the following:

  1. In the Exclude field, enter a regular expression (regex) that Cloud DLP should look for.
  2. From the Matching type menu, choose one of the following:
    • Full match: The finding must completely match the regex.
    • Partial match: A substring of the finding can match the regex.
    • Inverse match: The finding doesn't match the regex.

You can add additional hotword or exclusion rules and rulesets to further refine your scan results.

Limite de confiança

Sempre que o Cloud DLP detecta uma possível correspondência para dados confidenciais, ele atribui um valor de probabilidade em uma escala de "Muito improvável" a "Muito provável". Ao definir um valor de probabilidade aqui, você instrui o Cloud DLP a fazer a correspondência apenas com dados que correspondam a esse valor de probabilidade ou mais.

O valor padrão "Possível" é suficiente para a maioria das finalidades. Se você normalmente recebe correspondências muito amplas, mova o controle deslizante para a direita. Se você recebe poucas correspondências, mova o controle deslizante para a esquerda.

Quando terminar, clique em Continuar.

Adicionar ações

Na etapa Adicionar ações, selecione uma ou mais ações que você queira que o Cloud DLP execute após a conclusão do job.

Você pode configurar as seguintes ações:

  • Salvar no BigQuery: salve os resultados do job de DLP em uma tabela do BigQuery. Antes de visualizar ou analisar os resultados, verifique se o job foi concluído.

    Sempre que uma verificação é executada, o Cloud DLP salva as descobertas da verificação na tabela especificada do BigQuery. As descobertas exportadas contêm detalhes sobre a localização e a probabilidade de correspondência de cada descoberta. Se você quiser que cada descoberta inclua a string que corresponde ao detector de infoType, ative a opção Incluir cotação.

    Se você não especificar um ID de tabela, o BigQuery atribuirá um nome padrão a uma nova tabela na primeira vez que a verificação for executada. Se você especificar uma tabela, o Cloud DLP anexará as descobertas da verificação a ela.

    Se você não salvar as descobertas no BigQuery, os resultados da verificação conterão apenas estatísticas sobre o número e os infoTypes das descobertas.

    Quando os dados são gravados em uma tabela do BigQuery, o uso de faturamento e cotas é aplicado ao projeto que contém a tabela de destino.

  • Publicar no Pub/Sub: publique uma notificação que contenha o nome do job do DLP como um atributo em um canal do Pub/Sub. É possível especificar um ou mais tópicos para enviar a mensagem de notificação. Verifique se a conta de serviço do Cloud DLP que executa o job de verificação tem acesso de publicação no tópico.

  • Publicar no Security Command Center: publique um resumo dos resultados do job no Security Command Center. Para mais informações, consulte Enviar os resultados da verificação do Cloud DLP para o Security Command Center.

  • Publicar no Dataplex: envie os resultados do job para o Dataplex, o serviço de gerenciamento de metadados do Google Cloud.

  • Notificar por e-mail: envie um e-mail quando o job for concluído. O e-mail é enviado para os proprietários do projeto do IAM e os Contatos essenciais técnicos.

  • Publicar no Cloud Monitoring: envie resultados da inspeção para o Cloud Monitoring no pacote de operações do Google Cloud.

  • Fazer uma cópia desidentificada: desidentifique todas as descobertas nos dados inspecionados e grave o conteúdo desidentificado em um novo arquivo. Em seguida, é possível usar a cópia desidentificada nos processos de negócios em vez de dados que contêm informações confidenciais. Para mais informações, consulte Criar uma cópia desidentificada dos dados do Cloud Storage usando o Cloud DLP no Console do Google Cloud.

Para mais informações, consulte Ações.

Quando terminar de selecionar ações, clique em Continuar.

Programar

Na seção Programar, é possível fazer duas coisas:

  • Especificar período: essa opção limita os arquivos ou as linhas a serem verificados por data. Clique em Hora de início para especificar o carimbo de data/hora mais antigo do arquivo a ser incluído. Deixe esse valor em branco para especificar todos os arquivos. Clique em Hora de término para especificar o carimbo de data/hora mais recente do arquivo a ser incluído. Deixe esse valor em branco para não especificar um limite máximo de carimbo de data/hora.
  • Criar um acionador para executar o job em uma programação periódica: essa opção cria o acionador de jobs e o define para executar o job especificado em uma programação periódica. O valor padrão também é o valor mínimo: 24 horas. O valor máximo é 60 dias. Se você quiser que o Cloud DLP só verifique novos arquivos ou linhas, marque a caixa de seleção Limitar verificações somente a conteúdo novo.

Revisar

A seção Revisar contém um resumo formatado em JSON das configurações do job recém-especificado.

Clique em Criar para criar o gatilho de jobs (se tiver especificado uma programação). A página de informações do gatilho de jobs é exibida, contendo status e outras informações. Se o job estiver em execução no momento, será possível clicar no botão Cancelar para interrompê-lo. Também é possível excluir o acionador de jobs clicando em Excluir.

Para retornar à página principal do Cloud DLP, clique na seta Voltar no Console do Google Cloud.

Protocolo

Um gatilho de jobs é representado na API DLP pelo recurso JobTrigger. Crie um novo gatilho de jobs usando o JobTrigger do método projects.jobTriggers.create do recurso.

Esta amostra de JSON pode ser enviada em uma solicitação POST para o endpoint do Cloud DLP REST especificado. Este JSON de exemplo demonstra como criar um gatilho de jobs no Cloud DLP. O job que será iniciado por esse gatilho é uma verificação de inspeção do Datastore. O acionador de jobs criado é executado a cada 86.400 segundos (ou 24 horas).

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Uma solicitação bem-sucedida, mesmo se for criada na API Explorer, criará um novo gatilho de jobs programado. Para informações gerais sobre como usar o JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Entrada JSON:

{
  "jobTrigger":{
    "displayName":"JobTrigger1",
    "description":"Starts a DLP scan job of a Datastore kind",
    "triggers":[
      {
        "schedule":{
          "recurrencePeriodDuration":"86400s"
        }
      }
    ],
    "status":"HEALTHY",
    "inspectJob":{
      "storageConfig":{
        "datastoreOptions":{
          "kind":{
            "name":"Example-Kind"
          },
          "partitionId":{
            "projectId":"[PROJECT_ID]",
            "namespaceId":"[NAMESPACE_ID]"
          }
        }
      },
      "inspectConfig":{
        "infoTypes":[
          {
            "name":"PHONE_NUMBER"
          }
        ],
        "excludeInfoTypes":false,
        "includeQuote":true,
        "minLikelihood":"LIKELY"
      },
      "actions":[
        {
          "saveFindings":{
            "outputConfig":{
              "table":{
                "projectId":"[PROJECT_ID]",
                "datasetId":"[BIGQUERY_DATASET_NAME]",
                "tableId":"[BIGQUERY_TABLE_NAME]"
              }
            }
          }
        }
      ]
    }
  }
}

Saída JSON:

A saída abaixo indica que o acionador de job foi criado com sucesso.

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "displayName":"JobTrigger1",
  "description":"Starts a DLP scan job of a Datastore kind",
  "inspectJob":{
    "storageConfig":{
      "datastoreOptions":{
        "partitionId":{
          "projectId":"[PROJECT_ID]",
          "namespaceId":"[NAMESPACE_ID]"
        },
        "kind":{
          "name":"Example-Kind"
        }
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"PHONE_NUMBER"
        }
      ],
      "minLikelihood":"LIKELY",
      "limits":{

      },
      "includeQuote":true
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"[PROJECT_ID]",
              "datasetId":"[BIGQUERY_DATASET_NAME]",
              "tableId":"[BIGQUERY_TABLE_NAME]"
            }
          }
        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2018-11-30T01:52:41.171857Z",
  "updateTime":"2018-11-30T01:52:41.171857Z",
  "status":"HEALTHY"
}

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.CloudStorageOptions;
import com.google.privacy.dlp.v2.CreateJobTriggerRequest;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectJobConfig;
import com.google.privacy.dlp.v2.JobTrigger;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.Schedule;
import com.google.privacy.dlp.v2.StorageConfig;
import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig;
import com.google.protobuf.Duration;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TriggersCreate {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt";
    createTrigger(projectId, gcsPath);
  }

  public static void createTrigger(String projectId, String gcsPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Set autoPopulateTimespan to true to scan only new content
      boolean autoPopulateTimespan = true;
      TimespanConfig timespanConfig =
          TimespanConfig.newBuilder()
              .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan)
              .build();

      // Specify the GCS file to be inspected.
      CloudStorageOptions cloudStorageOptions =
          CloudStorageOptions.newBuilder()
              .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath))
              .build();
      StorageConfig storageConfig =
          StorageConfig.newBuilder()
              .setCloudStorageOptions(cloudStorageOptions)
              .setTimespanConfig(timespanConfig)
              .build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      List<InfoType> infoTypes =
          Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER")
              .map(it -> InfoType.newBuilder().setName(it).build())
              .collect(Collectors.toList());

      InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build();

      // Configure the inspection job we want the service to perform.
      InspectJobConfig inspectJobConfig =
          InspectJobConfig.newBuilder()
              .setInspectConfig(inspectConfig)
              .setStorageConfig(storageConfig)
              .build();

      // Set scanPeriod to the number of days between scans (minimum: 1 day)
      int scanPeriod = 1;

      // Optionally set a display name of max 100 chars and a description of max 250 chars
      String displayName = "Daily Scan";
      String description = "A daily inspection for personally identifiable information.";

      // Schedule scan of GCS bucket every scanPeriod number of days (minimum = 1 day)
      Duration duration = Duration.newBuilder().setSeconds(scanPeriod * 24 * 3600).build();
      Schedule schedule = Schedule.newBuilder().setRecurrencePeriodDuration(duration).build();
      JobTrigger.Trigger trigger = JobTrigger.Trigger.newBuilder().setSchedule(schedule).build();
      JobTrigger jobTrigger =
          JobTrigger.newBuilder()
              .setInspectJob(inspectJobConfig)
              .setDisplayName(displayName)
              .setDescription(description)
              .setStatus(JobTrigger.Status.HEALTHY)
              .addTriggers(trigger)
              .build();

      // Create scan request to be sent by client
      CreateJobTriggerRequest createJobTriggerRequest =
          CreateJobTriggerRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setJobTrigger(jobTrigger)
              .build();

      // Send the scan request and process the response
      JobTrigger createdJobTrigger = dlpServiceClient.createJobTrigger(createJobTriggerRequest);

      System.out.println("Created Trigger: " + createdJobTrigger.getName());
      System.out.println("Display Name: " + createdJobTrigger.getDisplayName());
      System.out.println("Description: " + createdJobTrigger.getDescription());
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// (Optional) The name of the trigger to be created.
// const triggerId = 'my-trigger';

// (Optional) A display name for the trigger to be created
// const displayName = 'My Trigger';

// (Optional) A description for the trigger to be created
// const description = "This is a sample trigger.";

// The name of the bucket to scan.
// const bucketName = 'YOUR-BUCKET';

// Limit scan to new content only.
// const autoPopulateTimespan = true;

// How often to wait between scans, in days (minimum = 1 day)
// const scanPeriod = 1;

// The infoTypes of information to match
// const infoTypes = [{ name: 'PHONE_NUMBER' }, { name: 'EMAIL_ADDRESS' }, { name: 'CREDIT_CARD_NUMBER' }];

// The minimum likelihood required before returning a match
// const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';

// The maximum number of findings to report per request (0 = server maximum)
// const maxFindings = 0;

async function createTrigger() {
  // Get reference to the bucket to be inspected
  const storageItem = {
    cloudStorageOptions: {
      fileSet: {url: `gs://${bucketName}/*`},
    },
    timeSpanConfig: {
      enableAutoPopulationOfTimespanConfig: autoPopulateTimespan,
    },
  };

  // Construct job to be triggered
  const job = {
    inspectConfig: {
      infoTypes: infoTypes,
      minLikelihood: minLikelihood,
      limits: {
        maxFindingsPerRequest: maxFindings,
      },
    },
    storageConfig: storageItem,
  };

  // Construct trigger creation request
  const request = {
    parent: `projects/${projectId}/locations/global`,
    jobTrigger: {
      inspectJob: job,
      displayName: displayName,
      description: description,
      triggers: [
        {
          schedule: {
            recurrencePeriodDuration: {
              seconds: scanPeriod * 60 * 60 * 24, // Trigger the scan daily
            },
          },
        },
      ],
      status: 'HEALTHY',
    },
    triggerId: triggerId,
  };

  // Run trigger creation request
  const [trigger] = await dlp.createJobTrigger(request);
  console.log(`Successfully created trigger ${trigger.name}.`);
}

createTrigger();

Python

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

def create_trigger(
    project,
    bucket,
    scan_period_days,
    info_types,
    trigger_id=None,
    display_name=None,
    description=None,
    min_likelihood=None,
    max_findings=None,
    auto_populate_timespan=False,
):
    """Creates a scheduled Data Loss Prevention API inspect_content trigger.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        bucket: The name of the GCS bucket to scan. This sample scans all
            files in the bucket using a wildcard.
        scan_period_days: How often to repeat the scan, in days.
            The minimum is 1 day.
        info_types: A list of strings representing info types to look for.
            A full list of info type categories can be fetched from the API.
        trigger_id: The id of the trigger. If omitted, an id will be randomly
            generated.
        display_name: The optional display name of the trigger.
        description: The optional description of the trigger.
        min_likelihood: A string representing the minimum likelihood threshold
            that constitutes a match. One of: 'LIKELIHOOD_UNSPECIFIED',
            'VERY_UNLIKELY', 'UNLIKELY', 'POSSIBLE', 'LIKELY', 'VERY_LIKELY'.
        max_findings: The maximum number of findings to report; 0 = no maximum.
        auto_populate_timespan: Automatically populates time span config start
            and end times in order to scan new content only.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library
    import google.cloud.dlp

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries (protos are also accepted).
    info_types = [{"name": info_type} for info_type in info_types]

    # Construct the configuration dictionary. Keys which are None may
    # optionally be omitted entirely.
    inspect_config = {
        "info_types": info_types,
        "min_likelihood": min_likelihood,
        "limits": {"max_findings_per_request": max_findings},
    }

    # Construct a cloud_storage_options dictionary with the bucket's URL.
    url = "gs://{}/*".format(bucket)
    storage_config = {
        "cloud_storage_options": {"file_set": {"url": url}},
        # Time-based configuration for each storage object.
        "timespan_config": {
            # Auto-populate start and end times in order to scan new objects
            # only.
            "enable_auto_population_of_timespan_config": auto_populate_timespan
        },
    }

    # Construct the job definition.
    job = {"inspect_config": inspect_config, "storage_config": storage_config}

    # Construct the schedule definition:
    schedule = {
        "recurrence_period_duration": {"seconds": scan_period_days * 60 * 60 * 24}
    }

    # Construct the trigger definition.
    job_trigger = {
        "inspect_job": job,
        "display_name": display_name,
        "description": description,
        "triggers": [{"schedule": schedule}],
        "status": google.cloud.dlp_v2.JobTrigger.Status.HEALTHY,
    }

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Call the API.
    response = dlp.create_job_trigger(
        request={"parent": parent, "job_trigger": job_trigger, "trigger_id": trigger_id}
    )

    print("Successfully created trigger {}".format(response.name))

Go

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"github.com/golang/protobuf/ptypes/duration"
)

// createTrigger creates a trigger with the given configuration.
func createTrigger(w io.Writer, projectID string, triggerID, displayName, description, bucketName string, infoTypeNames []string) error {
	// projectID := "my-project-id"
	// triggerID := "my-trigger"
	// displayName := "My Trigger"
	// description := "My trigger description"
	// bucketName := "my-bucket"
	// infoTypeNames := []string{"US_SOCIAL_SECURITY_NUMBER"}

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %v", err)
	}
	defer client.Close()

	// Convert the info type strings to a list of InfoTypes.
	var infoTypes []*dlppb.InfoType
	for _, it := range infoTypeNames {
		infoTypes = append(infoTypes, &dlppb.InfoType{Name: it})
	}

	// Create a configured request.
	req := &dlppb.CreateJobTriggerRequest{
		Parent:    fmt.Sprintf("projects/%s/locations/global", projectID),
		TriggerId: triggerID,
		JobTrigger: &dlppb.JobTrigger{
			DisplayName: displayName,
			Description: description,
			Status:      dlppb.JobTrigger_HEALTHY,
			// Triggers control when the job will start.
			Triggers: []*dlppb.JobTrigger_Trigger{
				{
					Trigger: &dlppb.JobTrigger_Trigger_Schedule{
						Schedule: &dlppb.Schedule{
							Option: &dlppb.Schedule_RecurrencePeriodDuration{
								RecurrencePeriodDuration: &duration.Duration{
									Seconds: 10 * 60 * 60 * 24, // 10 days in seconds.
								},
							},
						},
					},
				},
			},
			// Job configures the job to run when the trigger runs.
			Job: &dlppb.JobTrigger_InspectJob{
				InspectJob: &dlppb.InspectJobConfig{
					InspectConfig: &dlppb.InspectConfig{
						InfoTypes:     infoTypes,
						MinLikelihood: dlppb.Likelihood_POSSIBLE,
						Limits: &dlppb.InspectConfig_FindingLimits{
							MaxFindingsPerRequest: 10,
						},
					},
					StorageConfig: &dlppb.StorageConfig{
						Type: &dlppb.StorageConfig_CloudStorageOptions{
							CloudStorageOptions: &dlppb.CloudStorageOptions{
								FileSet: &dlppb.CloudStorageOptions_FileSet{
									Url: "gs://" + bucketName + "/*",
								},
							},
						},
						// Time-based configuration for each storage object. See more at
						// https://cloud.google.com/dlp/docs/reference/rest/v2/InspectJobConfig#TimespanConfig
						TimespanConfig: &dlppb.StorageConfig_TimespanConfig{
							// Auto-populate start and end times in order to scan new objects only.
							EnableAutoPopulationOfTimespanConfig: true,
						},
					},
				},
			},
		},
	}

	// Send the request.
	resp, err := client.CreateJobTrigger(ctx, req)
	if err != nil {
		return fmt.Errorf("CreateJobTrigger: %v", err)
	}
	fmt.Fprintf(w, "Successfully created trigger: %v", resp.GetName())
	return nil
}

PHP

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\JobTrigger;
use Google\Cloud\Dlp\V2\JobTrigger\Trigger;
use Google\Cloud\Dlp\V2\JobTrigger\Status;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\Schedule;
use Google\Cloud\Dlp\V2\CloudStorageOptions;
use Google\Cloud\Dlp\V2\CloudStorageOptions_FileSet;
use Google\Cloud\Dlp\V2\StorageConfig;
use Google\Cloud\Dlp\V2\StorageConfig_TimespanConfig;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Cloud\Dlp\V2\InspectConfig\FindingLimits;
use Google\Protobuf\Duration;

/**
 * Create a Data Loss Prevention API job trigger.
 *
 * @param string $callingProjectId     The project ID to run the API call under
 * @param string $bucketName           The name of the bucket to scan
 * @param string $triggerId            (Optional) The name of the trigger to be created
 * @param string $displayName          (Optional) The human-readable name to give the trigger
 * @param string $description          (Optional) A description for the trigger to be created
 * @param int    $scanPeriod           (Optional) How often to wait between scans, in days (minimum = 1 day)
 * @param bool   $autoPopulateTimespan (Optional) Automatically limit scan to new content only
 * @param int    $maxFindings          (Optional) The maximum number of findings to report per request (0 = server maximum)
 */
function create_trigger(
    string $callingProjectId,
    string $bucketName,
    string $triggerId = '',
    string $displayName = '',
    string $description = '',
    int $scanPeriod = 0,
    bool $autoPopulateTimespan = false,
    int $maxFindings = 0
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // ----- Construct job config -----
    // The infoTypes of information to match
    $personNameInfoType = (new InfoType())
        ->setName('PERSON_NAME');
    $phoneNumberInfoType = (new InfoType())
        ->setName('PHONE_NUMBER');
    $infoTypes = [$personNameInfoType, $phoneNumberInfoType];

    // The minimum likelihood required before returning a match
    $minLikelihood = likelihood::LIKELIHOOD_UNSPECIFIED;

    // Specify finding limits
    $limits = (new FindingLimits())
        ->setMaxFindingsPerRequest($maxFindings);

    // Create the inspectConfig object
    $inspectConfig = (new InspectConfig())
        ->setMinLikelihood($minLikelihood)
        ->setLimits($limits)
        ->setInfoTypes($infoTypes);

    // Create triggers
    $duration = (new Duration())
        ->setSeconds($scanPeriod * 60 * 60 * 24);

    $schedule = (new Schedule())
        ->setRecurrencePeriodDuration($duration);

    $triggerObject = (new Trigger())
        ->setSchedule($schedule);

    // Create the storageConfig object
    $fileSet = (new CloudStorageOptions_FileSet())
        ->setUrl('gs://' . $bucketName . '/*');

    $storageOptions = (new CloudStorageOptions())
        ->setFileSet($fileSet);

    // Auto-populate start and end times in order to scan new objects only.
    $timespanConfig = (new StorageConfig_TimespanConfig())
        ->setEnableAutoPopulationOfTimespanConfig($autoPopulateTimespan);

    $storageConfig = (new StorageConfig())
        ->setCloudStorageOptions($storageOptions)
        ->setTimespanConfig($timespanConfig);

    // Construct the jobConfig object
    $jobConfig = (new InspectJobConfig())
        ->setInspectConfig($inspectConfig)
        ->setStorageConfig($storageConfig);

    // ----- Construct trigger object -----
    $jobTriggerObject = (new JobTrigger())
        ->setTriggers([$triggerObject])
        ->setInspectJob($jobConfig)
        ->setStatus(Status::HEALTHY)
        ->setDisplayName($displayName)
        ->setDescription($description);

    // Run trigger creation request
    $parent = "projects/$callingProjectId/locations/global";
    $trigger = $dlp->createJobTrigger($parent, $jobTriggerObject, [
        'triggerId' => $triggerId
    ]);

    // Print results
    printf('Successfully created trigger %s' . PHP_EOL, $trigger->getName());
}

C#

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using System;
using System.Collections.Generic;
using static Google.Cloud.Dlp.V2.CloudStorageOptions.Types;
using static Google.Cloud.Dlp.V2.InspectConfig.Types;
using static Google.Cloud.Dlp.V2.JobTrigger.Types;
using static Google.Cloud.Dlp.V2.StorageConfig.Types;

public class TriggersCreate
{
    public static JobTrigger Create(
        string projectId,
        string bucketName,
        Likelihood minLikelihood,
        int maxFindings,
        bool autoPopulateTimespan,
        int scanPeriod,
        IEnumerable<InfoType> infoTypes,
        string triggerId,
        string displayName,
        string description)
    {
        var dlp = DlpServiceClient.Create();

        var jobConfig = new InspectJobConfig
        {
            InspectConfig = new InspectConfig
            {
                MinLikelihood = minLikelihood,
                Limits = new FindingLimits
                {
                    MaxFindingsPerRequest = maxFindings
                },
                InfoTypes = { infoTypes }
            },
            StorageConfig = new StorageConfig
            {
                CloudStorageOptions = new CloudStorageOptions
                {
                    FileSet = new FileSet
                    {
                        Url = $"gs://{bucketName}/*"
                    }
                },
                TimespanConfig = new TimespanConfig
                {
                    EnableAutoPopulationOfTimespanConfig = autoPopulateTimespan
                }
            }
        };

        var jobTrigger = new JobTrigger
        {
            Triggers =
            {
                new Trigger
                {
                    Schedule = new Schedule
                    {
                        RecurrencePeriodDuration = new Google.Protobuf.WellKnownTypes.Duration
                        {
                            Seconds = scanPeriod * 60 * 60 * 24
                        }
                    }
                }
            },
            InspectJob = jobConfig,
            Status = Status.Healthy,
            DisplayName = displayName,
            Description = description
        };

        var response = dlp.CreateJobTrigger(
            new CreateJobTriggerRequest
            {
                Parent = new LocationName(projectId, "global").ToString(),
                JobTrigger = jobTrigger,
                TriggerId = triggerId
            });

        Console.WriteLine($"Successfully created trigger {response.Name}");
        return response;
    }
}

Listar todos os jobs

Para listar todos os jobs do projeto atual:

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

  2. Clique na guia Inspecionar e depois na subguia Inspecionar jobs.

O console exibe uma lista de todos os jobs do projeto atual, incluindo os identificadores de job, o estado, o horário de criação e o horário de término. É possível acessar mais informações sobre qualquer job, incluindo um resumo dos resultados, clicando no identificador.

Protocolo

O recurso DlpJob tem um método projects.dlpJobs.list, com que é possível listar todos os jobs.

Para listar todos os jobs atualmente definidos no projeto, envie uma solicitação GET para o endpoint dlpJobs, conforme mostrado aqui:

URL:

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}

A saída JSON a seguir lista um dos jobs retornados. A estrutura do gatilho de jobs espelha a do recurso DlpJob.

Saída JSON:

{
  "jobs":[
    {
      "name":"projects/[PROJECT-ID]/dlpJobs/i-5270277269264714623",
      "type":"INSPECT_JOB",
      "state":"DONE",
      "inspectDetails":{
        "requestedOptions":{
          "snapshotInspectTemplate":{
          },
          "jobConfig":{
            "storageConfig":{
              "cloudStorageOptions":{
                "fileSet":{
                  "url":"[CLOUD-STORAGE-URL]"
                },
                "fileTypes":[
                  "FILE_TYPE_UNSPECIFIED"
                ],
                "filesLimitPercent":100
              },
              "timespanConfig":{
                "startTime":"2019-09-08T22:43:16.623Z",
                "enableAutoPopulationOfTimespanConfig":true
              }
            },
            "inspectConfig":{
              "infoTypes":[
                {
                  "name":"US_SOCIAL_SECURITY_NUMBER"
                },
                {
                  "name":"CANADA_SOCIAL_INSURANCE_NUMBER"
                }
              ],
              "minLikelihood":"LIKELY",
              "limits":{
              },
              "includeQuote":true
            },
            "actions":[
              {
                "saveFindings":{
                  "outputConfig":{
                    "table":{
                      "projectId":"[PROJECT-ID]",
                      "datasetId":"[DATASET-ID]",
                      "tableId":"[TABLE-ID]"
                    }
                  }
                }
              }
            ]
          }
        },
        "result":{
          ...
        }
      },
      "createTime":"2019-09-09T22:43:16.918Z",
      "startTime":"2019-09-09T22:43:16.918Z",
      "endTime":"2019-09-09T22:43:53.091Z",
      "jobTriggerName":"projects/[PROJECT-ID]/jobTriggers/sample-trigger2"
    },
    ...

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DlpJob;
import com.google.privacy.dlp.v2.DlpJobType;
import com.google.privacy.dlp.v2.ListDlpJobsRequest;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

public class JobsList {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listJobs(projectId);
  }

  // Lists DLP jobs
  public static void listJobs(String projectId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the request to be sent by the client.
      // For more info on filters and job types,
      // see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
      ListDlpJobsRequest listDlpJobsRequest =
          ListDlpJobsRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setFilter("state=DONE")
              .setType(DlpJobType.valueOf("INSPECT_JOB"))
              .build();

      // Send the request to list jobs and process the response
      DlpServiceClient.ListDlpJobsPagedResponse response =
          dlpServiceClient.listDlpJobs(listDlpJobsRequest);

      System.out.println("DLP jobs found:");
      for (DlpJob dlpJob : response.getPage().getValues()) {
        System.out.println(dlpJob.getName() + " -- " + dlpJob.getState());
      }
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The filter expression to use
// For more information and filter syntax, see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
// const filter = `state=DONE`;

// The type of job to list (either 'INSPECT_JOB' or 'RISK_ANALYSIS_JOB')
// const jobType = 'INSPECT_JOB';
async function listJobs() {
  // Construct request for listing DLP scan jobs
  const request = {
    parent: `projects/${projectId}/locations/global`,
    filter: filter,
    type: jobType,
  };

  // Run job-listing request
  const [jobs] = await dlp.listDlpJobs(request);
  jobs.forEach(job => {
    console.log(`Job ${job.name} status: ${job.state}`);
  });
}

listJobs();

Python

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

def list_dlp_jobs(project, filter_string=None, job_type=None):
    """Uses the Data Loss Prevention API to lists DLP jobs that match the
        specified filter in the request.
    Args:
        project: The project id to use as a parent resource.
        filter: (Optional) Allows filtering.
            Supported syntax:
            * Filter expressions are made up of one or more restrictions.
            * Restrictions can be combined by 'AND' or 'OR' logical operators.
            A sequence of restrictions implicitly uses 'AND'.
            * A restriction has the form of '<field> <operator> <value>'.
            * Supported fields/values for inspect jobs:
                - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED
                - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
                - `trigger_name` - The resource name of the trigger that
                                   created job.
            * Supported fields for risk analysis jobs:
                - `state` - RUNNING|CANCELED|FINISHED|FAILED
            * The operator must be '=' or '!='.
            Examples:
            * inspected_storage = cloud_storage AND state = done
            * inspected_storage = cloud_storage OR inspected_storage = bigquery
            * inspected_storage = cloud_storage AND
                                  (state = done OR state = canceled)
        type: (Optional) The type of job. Defaults to 'INSPECT'.
            Choices:
            DLP_JOB_TYPE_UNSPECIFIED
            INSPECT_JOB: The job inspected content for sensitive data.
            RISK_ANALYSIS_JOB: The job executed a Risk Analysis computation.

    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library.
    import google.cloud.dlp

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Job type dictionary
    job_type_to_int = {
        "DLP_JOB_TYPE_UNSPECIFIED": google.cloud.dlp.DlpJobType.DLP_JOB_TYPE_UNSPECIFIED,
        "INSPECT_JOB": google.cloud.dlp.DlpJobType.INSPECT_JOB,
        "RISK_ANALYSIS_JOB": google.cloud.dlp.DlpJobType.RISK_ANALYSIS_JOB,
    }
    # If job type is specified, convert job type to number through enums.
    if job_type:
        job_type = job_type_to_int[job_type]

    # Call the API to get a list of jobs.
    response = dlp.list_dlp_jobs(
        request={"parent": parent, "filter": filter_string, "type_": job_type}
    )

    # Iterate over results.
    for job in response:
        print("Job: %s; status: %s" % (job.name, job.state.name))

Go

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"google.golang.org/api/iterator"
)

// listJobs lists jobs matching the given optional filter and optional jobType.
func listJobs(w io.Writer, projectID, filter, jobType string) error {
	// projectID := "my-project-id"
	// filter := "`state` = FINISHED"
	// jobType := "RISK_ANALYSIS_JOB"
	ctx := context.Background()
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %v", err)
	}
	defer client.Close()

	// Create a configured request.
	req := &dlppb.ListDlpJobsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
		Filter: filter,
		Type:   dlppb.DlpJobType(dlppb.DlpJobType_value[jobType]),
	}
	// Send the request and iterate over the results.
	it := client.ListDlpJobs(ctx, req)
	for {
		j, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("Next: %v", err)
		}
		fmt.Fprintf(w, "Job %v status: %v\n", j.GetName(), j.GetState())
	}
	return nil
}

PHP

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\DlpJob\JobState;
use Google\Cloud\Dlp\V2\DlpJobType;

/**
 * List Data Loss Prevention API jobs corresponding to a given filter.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 * @param string $filter            The filter expression to use
 */
function list_jobs(string $callingProjectId, string $filter): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // The type of job to list (either 'INSPECT_JOB' or 'REDACT_JOB')
    $jobType = DlpJobType::INSPECT_JOB;

    // Run job-listing request
    // For more information and filter syntax,
    // @see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
    $parent = "projects/$callingProjectId/locations/global";
    $response = $dlp->listDlpJobs($parent, [
    'filter' => $filter,
    'type' => $jobType
    ]);

    // Print job list
    $jobs = $response->iterateAllElements();
    foreach ($jobs as $job) {
        printf('Job %s status: %s' . PHP_EOL, $job->getName(), $job->getState());
        $infoTypeStats = $job->getInspectDetails()->getResult()->getInfoTypeStats();

        if ($job->getState() == JobState::DONE) {
            if (count($infoTypeStats) > 0) {
                foreach ($infoTypeStats as $infoTypeStat) {
                    printf(
                        '  Found %s instance(s) of type %s' . PHP_EOL,
                        $infoTypeStat->getCount(),
                        $infoTypeStat->getInfoType()->getName()
                    );
                }
            } else {
                print('  No findings.' . PHP_EOL);
            }
        }
    }
}

C#

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class JobsList
{
    public static PagedEnumerable<ListDlpJobsResponse, DlpJob> ListDlpJobs(string projectId, string filter, DlpJobType jobType)
    {
        var dlp = DlpServiceClient.Create();

        var response = dlp.ListDlpJobs(new ListDlpJobsRequest
        {
            Parent = new LocationName(projectId, "global").ToString(),
            Filter = filter,
            Type = jobType
        });

        // Uncomment to print jobs
        // foreach (var job in response)
        // {
        //     Console.WriteLine($"Job: {job.Name} status: {job.State}");
        // }

        return response;
    }
}

Listar todos os gatilhos de job

Para listar todos os acionadores de jobs do projeto atual:

Console

No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

Acessar a Prevenção contra perda de dados

Na guia Inspeção, na subguia Acionadores de job, o console exibe uma lista de todos os acionadores de job do projeto atual.

Protocolo

O recurso JobTrigger tem um método projects.jobTriggers.list, com que é possível listar todos os gatilhos de jobs.

Para listar todos os gatilhos de job definidos no projeto, envie uma solicitação GET para o endpoint jobTriggers, conforme mostrado aqui:

URL:

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/jobTriggers?key={YOUR_API_KEY}

A saída JSON abaixo lista o acionador de job que criamos na seção anterior. A estrutura do gatilho de jobs espelha a do recurso JobTrigger.

Saída JSON:

{
  "jobTriggers":[
    {
      "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
      "displayName":"JobTrigger1",
      "description":"Starts a DLP scan job of a Datastore kind",
      "inspectJob":{
        "storageConfig":{
          "datastoreOptions":{
            "partitionId":{
              "projectId":"[PROJECT_ID]",
              "namespaceId":"[NAMESPACE_ID]"
            },
            "kind":{
              "name":"Example-Kind"
            }
          }
        },
        "inspectConfig":{
          "infoTypes":[
            {
              "name":"PHONE_NUMBER"
            }
          ],
          "minLikelihood":"LIKELY",
          "limits":{

          },
          "includeQuote":true
        },
        "actions":[
          {
            "saveFindings":{
              "outputConfig":{
                "table":{
                  "projectId":"[PROJECT_ID]",
                  "datasetId":"[BIGQUERY_DATASET_NAME]",
                  "tableId":"[BIGQUERY_TABLE_NAME]"
                }
              }
            }
          }
        ]
      },
      "triggers":[
        {
          "schedule":{
            "recurrencePeriodDuration":"86400s"
          }
        }
      ],
      "createTime":"2018-11-30T01:52:41.171857Z",
      "updateTime":"2018-11-30T01:52:41.171857Z",
      "status":"HEALTHY"
    },

    ...

],
  "nextPageToken":"KkwKCQjivJ2UpPreAgo_Kj1wcm9qZWN0cy92ZWx2ZXR5LXN0dWR5LTE5NjEwMS9qb2JUcmlnZ2Vycy8xNTA5NzEyOTczMDI0MDc1NzY0"
}

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.JobTrigger;
import com.google.privacy.dlp.v2.ListJobTriggersRequest;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

class TriggersList {
  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listTriggers(projectId);
  }

  public static void listTriggers(String projectId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {
      // Build the request to be sent by the client
      ListJobTriggersRequest listJobTriggersRequest =
          ListJobTriggersRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .build();

      // Use the client to send the API request.
      DlpServiceClient.ListJobTriggersPagedResponse response =
          dlpServiceClient.listJobTriggers(listJobTriggersRequest);

      // Parse the response and process the results
      System.out.println("DLP triggers found:");
      for (JobTrigger trigger : response.getPage().getValues()) {
        System.out.println("Trigger: " + trigger.getName());
        System.out.println("\tCreated: " + trigger.getCreateTime());
        System.out.println("\tUpdated: " + trigger.getUpdateTime());
        if (trigger.getDisplayName() != null) {
          System.out.println("\tDisplay name: " + trigger.getDisplayName());
        }
        if (trigger.getDescription() != null) {
          System.out.println("\tDescription: " + trigger.getDescription());
        }
        System.out.println("\tStatus: " + trigger.getStatus());
        System.out.println("\tError count: " + trigger.getErrorsCount());
      }
      ;
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

  // Imports the Google Cloud Data Loss Prevention library
  const DLP = require('@google-cloud/dlp');

  // Instantiates a client
  const dlp = new DLP.DlpServiceClient();

  // The project ID to run the API call under
  // const projectId = 'my-project'

  async function listTriggers() {
    // Construct trigger listing request
    const request = {
      parent: `projects/${projectId}/locations/global`,
    };

    // Helper function to pretty-print dates
    const formatDate = date => {
      const msSinceEpoch = parseInt(date.seconds, 10) * 1000;
      return new Date(msSinceEpoch).toLocaleString('en-US');
    };

    // Run trigger listing request
    const [triggers] = await dlp.listJobTriggers(request);
    triggers.forEach(trigger => {
      // Log trigger details
      console.log(`Trigger ${trigger.name}:`);
      console.log(`  Created: ${formatDate(trigger.createTime)}`);
      console.log(`  Updated: ${formatDate(trigger.updateTime)}`);
      if (trigger.displayName) {
        console.log(`  Display Name: ${trigger.displayName}`);
      }
      if (trigger.description) {
        console.log(`  Description: ${trigger.description}`);
      }
      console.log(`  Status: ${trigger.status}`);
      console.log(`  Error count: ${trigger.errors.length}`);
    });
  }

  listTriggers();
}

main(...process.argv.slice(2));
process.on('unhandledRejection', err => {
  console.error(err.message);
  process.exitCode = 1;
});

Python

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

def list_triggers(project):
    """Lists all Data Loss Prevention API triggers.
    Args:
        project: The Google Cloud project id to use as a parent resource.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library
    import google.cloud.dlp

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Call the API.
    response = dlp.list_job_triggers(request={"parent": parent})

    for trigger in response:
        print("Trigger {}:".format(trigger.name))
        print("  Created: {}".format(trigger.create_time))
        print("  Updated: {}".format(trigger.update_time))
        if trigger.display_name:
            print("  Display Name: {}".format(trigger.display_name))
        if trigger.description:
            print("  Description: {}".format(trigger.discription))
        print("  Status: {}".format(trigger.status))
        print("  Error count: {}".format(len(trigger.errors)))

Go

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import (
	"context"
	"fmt"
	"io"
	"time"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"github.com/golang/protobuf/ptypes"
	"google.golang.org/api/iterator"
)

// listTriggers lists the triggers for the given project.
func listTriggers(w io.Writer, projectID string) error {
	// projectID := "my-project-id"

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %v", err)
	}
	defer client.Close()

	// Create a configured request.
	req := &dlppb.ListJobTriggersRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
	}
	// Send the request and iterate over the results.
	it := client.ListJobTriggers(ctx, req)
	for {
		t, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("Next: %v", err)
		}
		fmt.Fprintf(w, "Trigger %v\n", t.GetName())
		c, err := ptypes.Timestamp(t.GetCreateTime())
		if err != nil {
			return fmt.Errorf("CreateTime Timestamp: %v", err)
		}
		fmt.Fprintf(w, "  Created: %v\n", c.Format(time.RFC1123))
		u, err := ptypes.Timestamp(t.GetUpdateTime())
		if err != nil {
			return fmt.Errorf("UpdateTime Timestamp: %v", err)
		}
		fmt.Fprintf(w, "  Updated: %v\n", u.Format(time.RFC1123))
		fmt.Fprintf(w, "  Display Name: %q\n", t.GetDisplayName())
		fmt.Fprintf(w, "  Description: %q\n", t.GetDescription())
		fmt.Fprintf(w, "  Status: %v\n", t.GetStatus())
		fmt.Fprintf(w, "  Error Count: %v\n", len(t.GetErrors()))
	}

	return nil
}

PHP

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

use Google\Cloud\Dlp\V2\DlpServiceClient;

/**
 * List Data Loss Prevention API job triggers.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 */
function list_triggers(string $callingProjectId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    $parent = "projects/$callingProjectId/locations/global";

    // Run request
    $response = $dlp->listJobTriggers($parent);

    // Print results
    $triggers = $response->iterateAllElements();
    foreach ($triggers as $trigger) {
        printf('Trigger %s' . PHP_EOL, $trigger->getName());
        printf('  Created: %s' . PHP_EOL, $trigger->getCreateTime()->getSeconds());
        printf('  Updated: %s' . PHP_EOL, $trigger->getUpdateTime()->getSeconds());
        printf('  Display Name: %s' . PHP_EOL, $trigger->getDisplayName());
        printf('  Description: %s' . PHP_EOL, $trigger->getDescription());
        printf('  Status: %s' . PHP_EOL, $trigger->getStatus());
        printf('  Error count: %s' . PHP_EOL, count($trigger->getErrors()));
        $timespanConfig = $trigger->getInspectJob()->getStorageConfig()->getTimespanConfig();
        printf('  Auto-populates timespan config: %s' . PHP_EOL,
            ($timespanConfig && $timespanConfig->getEnableAutoPopulationOfTimespanConfig() ? 'yes' : 'no'));
    }
}

C#

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using System;

public class TriggersList
{
    public static PagedEnumerable<ListJobTriggersResponse, JobTrigger> List(string projectId)
    {
        var dlp = DlpServiceClient.Create();

        var response = dlp.ListJobTriggers(
            new ListJobTriggersRequest
            {
                Parent = new LocationName(projectId, "global").ToString(),
            });

        foreach (var trigger in response)
        {
            Console.WriteLine($"Name: {trigger.Name}");
            Console.WriteLine($"  Created: {trigger.CreateTime}");
            Console.WriteLine($"  Updated: {trigger.UpdateTime}");
            Console.WriteLine($"  Display Name: {trigger.DisplayName}");
            Console.WriteLine($"  Description: {trigger.Description}");
            Console.WriteLine($"  Status: {trigger.Status}");
            Console.WriteLine($"  Error count: {trigger.Errors.Count}");
        }

        return response;
    }
}

Excluir um job

Para excluir um job do projeto, o que também que inclui os resultados, faça o seguinte. Todos os resultados salvos externamente (como no BigQuery) não são alterados por essa operação.

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

  2. Clique na guia Inspecionar e depois na subguia Inspecionar jobs. O console do Google Cloud exibe uma lista de todos os jobs do projeto atual.

  3. Na coluna Ações do gatilho de jobs que você quer excluir, clique no menu mais ações (exibido como três pontos organizados verticalmente) e clique em Excluir.

Como alternativa, na lista de jobs, clique no identificador do job que você quer excluir. Na página de detalhes do job, clique em Excluir.

Protocolo

Para excluir um job do projeto atual, envie a solicitação EXCLUIR para o endpoint dlpJobs, conforme mostrado aqui. Substitua o campo [JOB-IDENTIFIER] pelo identificador do job, que começa com i-.

URL:

DELETE https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs/[JOB-IDENTIFIER]?key={YOUR_API_KEY}

Se a solicitação tiver sido bem-sucedida, a API DLP retornará uma resposta positiva. Para verificar se o job foi excluído, liste todos os jobs.

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DeleteDlpJobRequest;
import com.google.privacy.dlp.v2.DlpJobName;
import java.io.IOException;

public class JobsDelete {
  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String jobId = "your-job-id";
    deleteJobs(projectId, jobId);
  }

  // Deletes a DLP Job with the given jobId
  public static void deleteJobs(String projectId, String jobId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the complete job name from the projectId and jobId
      DlpJobName jobName = DlpJobName.of(projectId, jobId);

      // Construct the job deletion request to be sent by the client.
      DeleteDlpJobRequest deleteDlpJobRequest =
          DeleteDlpJobRequest.newBuilder().setName(jobName.toString()).build();

      // Send the job deletion request
      dlpServiceClient.deleteDlpJob(deleteDlpJobRequest);
      System.out.println("Job deleted successfully.");
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The name of the job whose results should be deleted
// Parent project ID is automatically extracted from this parameter
// const jobName = 'projects/my-project/dlpJobs/X-#####'

function deleteJob() {
  // Construct job deletion request
  const request = {
    name: jobName,
  };

  // Run job deletion request
  dlp
    .deleteDlpJob(request)
    .then(() => {
      console.log(`Successfully deleted job ${jobName}.`);
    })
    .catch(err => {
      console.log(`Error in deleteJob: ${err.message || err}`);
    });
}

deleteJob();

Python

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

def delete_dlp_job(project, job_name):
    """Uses the Data Loss Prevention API to delete a long-running DLP job.
    Args:
        project: The project id to use as a parent resource.
        job_name: The name of the DlpJob resource to be deleted.

    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library.
    import google.cloud.dlp

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id and job name into a full resource id.
    name = f"projects/{project}/dlpJobs/{job_name}"

    # Call the API to delete job.
    dlp.delete_dlp_job(request={"name": name})

    print("Successfully deleted %s" % job_name)

Go

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// deleteJob deletes the job with the given name.
func deleteJob(w io.Writer, jobName string) error {
	// jobName := "job-example"
	ctx := context.Background()
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %v", err)
	}
	defer client.Close()
	req := &dlppb.DeleteDlpJobRequest{
		Name: jobName,
	}
	if err = client.DeleteDlpJob(ctx, req); err != nil {
		return fmt.Errorf("DeleteDlpJob: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted job")
	return nil
}

PHP

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

use Google\Cloud\Dlp\V2\DlpServiceClient;

/**
 * Delete results of a Data Loss Prevention API job
 *
 * @param string $jobId The name of the job whose results should be deleted
 */
function delete_job(string $jobId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Run job-deletion request
    // The Parent project ID is automatically extracted from this parameter
    $dlp->deleteDlpJob($jobId);

    // Print status
    printf('Successfully deleted job %s' . PHP_EOL, $jobId);
}

C#

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


using System;
using Google.Cloud.Dlp.V2;

public class JobsDelete
{
    public static void DeleteJob(string jobName)
    {
        var dlp = DlpServiceClient.Create();

        dlp.DeleteDlpJob(new DeleteDlpJobRequest
        {
            Name = jobName
        });

        Console.WriteLine($"Successfully deleted job {jobName}.");
    }
}

Excluir gatilhos de jobs

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

    Na guia Inspeção, na subguia Acionadores de job, o console exibe uma lista de todos os acionadores de job do projeto atual.

  2. Na coluna Ações do gatilho de jobs que você quer excluir, clique no menu mais ações (exibido como três pontos organizados verticalmente) e clique em Excluir.

Como alternativa, na lista de acionadores de jobs, clique no nome do acionador que quer excluir. Na página de detalhes do acionador de jobs, clique em Excluir.

Protocolo

Para excluir um gatilho de jobs do projeto atual, envie a solicitação EXCLUIR para o endpoint jobTriggers, conforme mostrado aqui. Substitua o campo [JOB-TRIGGER-NAME] pelo nome do gatilho de jobs.

URL:

DELETE https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/jobTriggers/[JOB-TRIGGER-NAME]?key={YOUR_API_KEY}

Se a solicitação tiver sido bem-sucedida, a API DLP retornará uma resposta positiva. Para verificar se o acionador de job foi excluído com sucesso, liste todos os acionadores de job.

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DeleteJobTriggerRequest;
import com.google.privacy.dlp.v2.ProjectJobTriggerName;
import java.io.IOException;

class TriggersDelete {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String triggerId = "your-trigger-id";
    deleteTrigger(projectId, triggerId);
  }

  public static void deleteTrigger(String projectId, String triggerId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Get the full trigger name from the given triggerId and ProjectId
      ProjectJobTriggerName triggerName = ProjectJobTriggerName.of(projectId, triggerId);

      // Construct the trigger deletion request to be sent by the client
      DeleteJobTriggerRequest deleteJobTriggerRequest =
          DeleteJobTriggerRequest.newBuilder().setName(triggerName.toString()).build();

      // Send the trigger deletion request
      dlpServiceClient.deleteJobTrigger(deleteJobTriggerRequest);
      System.out.println("Trigger deleted: " + triggerName.toString());
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project'

// The name of the trigger to be deleted
// Parent project ID is automatically extracted from this parameter
// const triggerId = 'projects/my-project/triggers/my-trigger';

async function deleteTrigger() {
  // Construct trigger deletion request
  const request = {
    name: triggerId,
  };

  // Run trigger deletion request
  await dlp.deleteJobTrigger(request);
  console.log(`Successfully deleted trigger ${triggerId}.`);
}

deleteTrigger();

Python

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

def delete_trigger(project, trigger_id):
    """Deletes a Data Loss Prevention API trigger.
    Args:
        project: The id of the Google Cloud project which owns the trigger.
        trigger_id: The id of the trigger to delete.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library
    import google.cloud.dlp

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Combine the trigger id with the parent id.
    trigger_resource = "{}/jobTriggers/{}".format(parent, trigger_id)

    # Call the API.
    dlp.delete_job_trigger(request={"name": trigger_resource})

    print("Trigger {} successfully deleted.".format(trigger_resource))

if __name__ == "__main__":
    default_project = os.environ.get("GOOGLE_CLOUD_PROJECT")

    parser = argparse.ArgumentParser(description=__doc__)
    subparsers = parser.add_subparsers(
        dest="action", help="Select which action to perform."
    )
    subparsers.required = True

    parser_create = subparsers.add_parser("create", help="Create a trigger.")
    parser_create.add_argument(
        "bucket", help="The name of the GCS bucket containing the file."
    )
    parser_create.add_argument(
        "scan_period_days",
        type=int,
        help="How often to repeat the scan, in days. The minimum is 1 day.",
    )
    parser_create.add_argument(
        "--trigger_id",
        help="The id of the trigger. If omitted, an id will be randomly " "generated",
    )
    parser_create.add_argument(
        "--display_name", help="The optional display name of the trigger."
    )
    parser_create.add_argument(
        "--description", help="The optional description of the trigger."
    )
    parser_create.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )
    parser_create.add_argument(
        "--info_types",
        nargs="+",
        help="Strings representing info types to look for. A full list of "
        "info categories and types is available from the API. Examples "
        'include "FIRST_NAME", "LAST_NAME", "EMAIL_ADDRESS". '
        "If unspecified, the three above examples will be used.",
        default=["FIRST_NAME", "LAST_NAME", "EMAIL_ADDRESS"],
    )
    parser_create.add_argument(
        "--min_likelihood",
        choices=[
            "LIKELIHOOD_UNSPECIFIED",
            "VERY_UNLIKELY",
            "UNLIKELY",
            "POSSIBLE",
            "LIKELY",
            "VERY_LIKELY",
        ],
        help="A string representing the minimum likelihood threshold that "
        "constitutes a match.",
    )
    parser_create.add_argument(
        "--max_findings",
        type=int,
        help="The maximum number of findings to report; 0 = no maximum.",
    )
    parser_create.add_argument(
        "--auto_populate_timespan",
        type=bool,
        help="Limit scan to new content only.",
    )

    parser_list = subparsers.add_parser("list", help="List all triggers.")
    parser_list.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )

    parser_delete = subparsers.add_parser("delete", help="Delete a trigger.")
    parser_delete.add_argument("trigger_id", help="The id of the trigger to delete.")
    parser_delete.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )

    args = parser.parse_args()

    if args.action == "create":
        create_trigger(
            args.project,
            args.bucket,
            args.scan_period_days,
            args.info_types,
            trigger_id=args.trigger_id,
            display_name=args.display_name,
            description=args.description,
            min_likelihood=args.min_likelihood,
            max_findings=args.max_findings,
            auto_populate_timespan=args.auto_populate_timespan,
        )
    elif args.action == "list":
        list_triggers(args.project)
    elif args.action == "delete":
        delete_trigger(args.project, args.trigger_id)

Go

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// deleteTrigger deletes the given trigger.
func deleteTrigger(w io.Writer, triggerID string) error {
	// projectID := "my-project-id"
	// triggerID := "my-trigger"

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %v", err)
	}
	defer client.Close()

	req := &dlppb.DeleteJobTriggerRequest{
		Name: triggerID,
	}

	if err := client.DeleteJobTrigger(ctx, req); err != nil {
		return fmt.Errorf("DeleteJobTrigger: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted trigger %v", triggerID)
	return nil
}

PHP

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.

use Google\Cloud\Dlp\V2\DlpServiceClient;

/**
 * Delete a Data Loss Prevention API job trigger.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 * @param string $triggerId         The name of the trigger to be deleted.
 */
function delete_trigger(string $callingProjectId, string $triggerId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Run request
    // The Parent project ID is automatically extracted from this parameter
    $triggerName = "projects/$callingProjectId/locations/global/jobTriggers/$triggerId";
    $response = $dlp->deleteJobTrigger($triggerName);

    // Print the results
    printf('Successfully deleted trigger %s' . PHP_EOL, $triggerName);
}

C#

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


using Google.Cloud.Dlp.V2;
using System;

public class TriggersDelete
{

    public static void Delete(string triggerName)
    {
        var dlp = DlpServiceClient.Create();

        dlp.DeleteJobTrigger(
            new DeleteJobTriggerRequest
            {
                Name = triggerName
            });

        Console.WriteLine($"Successfully deleted trigger {triggerName}.");
    }
}

Receber um job

Para receber um job do projeto, o que também que inclui os resultados, faça o seguinte. Todos os resultados salvos externamente (como no BigQuery) não são alterados por essa operação.

Protocolo

Para receber um job do projeto atual, envie a solicitação GET para o endpoint dlpJobs, conforme mostrado aqui. Substitua o campo [JOB-IDENTIFIER] pelo identificador do job, que começa com i-.

URL:

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs/[JOB-IDENTIFIER]?key={YOUR_API_KEY}

Se a solicitação tiver sido bem-sucedida, a API DLP retornará uma resposta positiva.

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Java

Para saber como instalar e usar a biblioteca de cliente para o Cloud DLP, consulte Bibliotecas de cliente do Cloud DLP.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DlpJobName;
import com.google.privacy.dlp.v2.GetDlpJobRequest;
import java.io.IOException;

public class JobsGet {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String jobId = "your-job-id";
    getJobs(projectId, jobId);
  }

  // Gets a DLP Job with the given jobId
  public static void getJobs(String projectId, String jobId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the complete job name from the projectId and jobId
      DlpJobName jobName = DlpJobName.of(projectId, jobId);

      // Construct the get job request to be sent by the client.
      GetDlpJobRequest getDlpJobRequest =
          GetDlpJobRequest.newBuilder().setName(jobName.toString()).build();

      // Send the get job request
      dlpServiceClient.getDlpJob(getDlpJobRequest);
      System.out.println("Job got successfully.");
    }
  }
}

Forçar a execução imediata de um gatilho de jobs

Depois que um gatilho de jobs é criado, é possível forçar a execução imediata do gatilho para testes ao ativá-lo. Para fazer isso, execute o comando abaixo:

curl --request POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    'https://dlp.googleapis.com/v2/JOB_TRIGGER_NAME:activate'

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud para cobrar as cobranças de acesso associadas à solicitação.
  • JOB_TRIGGER_NAME: o nome completo do recurso do acionador do job, por exemplo, projects/my-project/locations/global/jobTriggers/123456789.

Atualizar um gatilho de jobs atual

Além de criar, listar e excluir acionadores de jobs, também é possível atualizar um acionador de jobs atual. Para alterar a configuração de um acionador de jobs atual:

Console

  1. No Console do Google Cloud, acesse a página Prevenção contra perda de dados.

    Acessar a Prevenção contra perda de dados

  2. Clique na guia Inspeção e, em seguida, clique na subguia Acionadores de job.

    O console exibe uma lista de todos os acionadores de jobs do projeto atual.

  3. Na coluna Ações do gatilho de jobs que você quer excluir, clique em Mais e depois emVer detalhes.

  4. Na página de detalhes do acionador de jobs, clique em Editar.

  5. Na página "Editar acionador", altere o local dos dados de entrada, os detalhes da detecção, como modelos, infoTypes ou probabilidade, além de todas as ações pós-verificação e a programação do acionador de jobs. Quando terminar de fazer as alterações, clique em Salvar.

Protocolo

Use o método projects.jobTriggers.patch para enviar novos valores JobTrigger à API DLP para atualizar esses valores em um gatilho de jobs especificado.

Por exemplo, considere o seguinte acionador de jobs simples. Esse JSON representa o acionador de jobs e foi retornado após o envio de uma solicitação GET para o endpoint do acionador de jobs do projeto atual.

Saída JSON:

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "inspectJob":{
    "storageConfig":{
      "cloudStorageOptions":{
        "fileSet":{
          "url":"gs://dlptesting/*"
        },
        "fileTypes":[
          "FILE_TYPE_UNSPECIFIED"
        ],
        "filesLimitPercent":100
      },
      "timespanConfig":{
        "enableAutoPopulationOfTimespanConfig":true
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"US_SOCIAL_SECURITY_NUMBER"
        }
      ],
      "minLikelihood":"POSSIBLE",
      "limits":{

      }
    },
    "actions":[
      {
        "jobNotificationEmails":{

        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2019-03-06T21:19:45.774841Z",
  "updateTime":"2019-03-06T21:19:45.774841Z",
  "status":"HEALTHY"
}

O JSON a seguir, quando enviado com uma solicitação PATCH para o endpoint especificado, atualiza o acionador de jobs indicado com um novo infoType para verificação, bem como uma nova probabilidade mínima. Também é preciso especificar o atributo updateMask e o valor dele está no formato FieldMask.

Entrada JSON:

PATCH https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]?key={YOUR_API_KEY}

{
  "jobTrigger":{
    "inspectJob":{
      "inspectConfig":{
        "infoTypes":[
          {
            "name":"US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER"
          }
        ],
        "minLikelihood":"LIKELY"
      }
    }
  },
  "updateMask":"inspectJob(inspectConfig(infoTypes,minLikelihood))"
}

Depois de enviar esse JSON para o URL especificado, ele retorna o seguinte, representando o acionador de jobs atualizado. O infoType e os valores de probabilidade originais foram substituídos pelos novos valores.

Saída JSON:

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "inspectJob":{
    "storageConfig":{
      "cloudStorageOptions":{
        "fileSet":{
          "url":"gs://dlptesting/*"
        },
        "fileTypes":[
          "FILE_TYPE_UNSPECIFIED"
        ],
        "filesLimitPercent":100
      },
      "timespanConfig":{
        "enableAutoPopulationOfTimespanConfig":true
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER"
        }
      ],
      "minLikelihood":"LIKELY",
      "limits":{

      }
    },
    "actions":[
      {
        "jobNotificationEmails":{

        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2019-03-06T21:19:45.774841Z",
  "updateTime":"2019-03-06T21:27:01.650183Z",
  "lastRunTime":"1970-01-01T00:00:00Z",
  "status":"HEALTHY"
}

Para testar isso rapidamente, use a API Explorer que está incorporada abaixo. Para informações gerais sobre como usar JSON para enviar solicitações à API DLP, consulte o guia de início rápido do JSON.

Limitar as verificações apenas a conteúdo novo

É possível configurar o gatilho de jobs para definir automaticamente a data do período dos arquivos armazenados no Cloud Storage ou no BigQuery. Quando você configura o objeto TimespanConfig para ser preenchido automaticamente, o Cloud DLP só verifica os dados que foram adicionados ou modificados desde a última execução do gatilho:

...
  timespan_config {
        enable_auto_population_of_timespan_config: true
      }
...

Acionar jobs ao carregar arquivos

Além do suporte aos gatilhos de jobs, que é integrado ao Cloud DLP, o Google Cloud também tem vários outros componentes que podem ser usados para integrar ou acionar jobs de DLP. Por exemplo, é possível usar o Cloud Functions para acionar uma verificação do DLP sempre que um arquivo for carregado no Cloud Storage.

Para mais informações sobre como configurar essa operação, consulte Como automatizar a classificação dos dados enviados ao Cloud Storage.

A seguir