Как узнать местоположение отсканированного файла при использовании Google Cloud DLP API? - PullRequest
0 голосов
/ 22 февраля 2019

Я сканирую вложенный каталог в облачном хранилище.Результат не содержит соответствующего значения (цитата), хотя у меня есть include_quote.Кроме того, как я могу получить имя файлов, у которых есть соответствие наряду с соответствующими значениями?Я использую Python.Это то, что я до сих пор.Как видите, API нашел соответствие, но я не получаю информацию о том, какие слова (и файлы) были помечены.

inspect_job = {
  'inspect_config': {
      'info_types': info_types,
      'min_likelihood': MIN_LIKELIHOOD,
      'include_quote': True,
      'limits': {
          'max_findings_per_request': MAX_FINDINGS
      },
  },
  'storage_config': {
      'cloud_storage_options': {
          'file_set': {
              'url':
                  'gs://{bucket_name}/{dir_name}/**'.format(
                      bucket_name=STAGING_BUCKET, dir_name=DIR_NAME)
          }
      }
  }


operation = dlp.create_dlp_job(parent, inspect_job)
dlp.get_dlp_job(operation.name)

Вот результат:

result {
processed_bytes: 64
total_estimated_bytes: 64
info_type_stats {
  info_type {
    name: "EMAIL_ADDRESS"
  }
  count: 1
}
info_type_stats {
  info_type {
    name: "PHONE_NUMBER"
  }
  count: 1
}
info_type_stats {
  info_type {
    name: "FIRST_NAME"
  }
  count: 2
}

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Я думаю, что вы не получаете значение кавычки, потому что ваш inspectConfig не совсем прав: в соответствии с документами, расположенными в https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig, вы должны установить

  "includeQuote": true 

Редактировать: добавить информациюо получении файлов: В следующем примере: https://cloud.google.com/solutions/automating-classification-of-data-uploaded-to-cloud-storage

Код для облачной функции resol_DLP получает имя файла из сведений о задании, как это

def resolve_DLP(data, context):
...
job = dlp.get_dlp_job(job_name)
...
file_path = (
      job.inspect_details.requested_options.job_config.storage_config
      .cloud_storage_options.file_set.url)
  file_name = os.path.basename(file_path)
...

Редактировать 2: теперь я вижу, чтопоследний Python API-клиент, который использует include_quote: в качестве ключа dict .... так что это не так ...

Редактировать 3: Из кода Python API:

message Finding {
  // The content that was found. Even if the content is not textual, it
  // may be converted to a textual representation here.
  // Provided if `include_quote` is true and the finding is
  // less than or equal to 4096 bytes long. If the finding exceeds 4096 bytes
  // in length, the quote may be omitted.
  string quote = 1;

Так что, возможно, файлы меньшего размера приведут к кавычкам

0 голосов
/ 26 февраля 2019

Рондо, спасибо за ваш вклад.Я полагаю, что приведенный вами пример облачного хранилища сканирует только один файл для каждой работы.Он не использует объект savefindings.

Джош, ты прав.Кажется, нужно направить вывод в Bigquery или Pub / sub, чтобы увидеть полный результат.

С https://cloud.google.com/dlp/docs/inspecting-storage#retrieving-inspection-results:

Для получения полных результатов проверки у вас есть два варианта.В зависимости от выбранного действия, задания проверки:

Сохраняются в BigQuery (объект SaveFindings) в указанной таблице.Перед просмотром или анализом результатов сначала убедитесь, что задание выполнено, используя метод projects.dlpJobs.get, который описан ниже.Обратите внимание, что вы можете указать схему для хранения результатов, используя объект OutputSchema.Публикуется в облачной публикации / подразделе (объект PublishToPubSub).В теме должны быть предоставлены права доступа для публикации к учетной записи службы Cloud DLP, которая запускает DlpJob, отправляющий уведомления.

Я получил его, изменив решение Как сканировать таблицу BigQuery с помощью DLP, ищаконфиденциальные данные? .

Вот мой последний рабочий скрипт:

import google.cloud.dlp
dlp = google.cloud.dlp.DlpServiceClient()

inspect_job_data = {
    'storage_config': {
      'cloud_storage_options': {
          'file_set': {
              'url':
                  'gs://{bucket_name}/{dir_name}/**'.format(
                      bucket_name=STAGING_BUCKET, dir_name=DIR_NAME)
          }
      }
  },
'inspect_config': {
    'include_quote': include_quote,
    'info_types': [
        {'name': 'ALL_BASIC'},
    ],
},
'actions': [
    {
        'save_findings': {
            'output_config':{
                'table':{
                    'project_id': GCP_PROJECT_ID,
                    'dataset_id': DATASET_ID,
                    'table_id': '{}_DLP'.format(TABLE_ID)
                }
            }

        },
    },
]

}

operation = dlp.create_dlp_job(parent=dlp.project_path(GCP_PROJECT_ID), 
inspect_job=inspect_job_data)
0 голосов
/ 25 февраля 2019

Вам необходимо следовать разделу «Получение результатов проверки» в https://cloud.google.com/dlp/docs/inspecting-storage и указать действие сохранения результатов https://cloud.google.com/dlp/docs/reference/rest/v2/InspectJobConfig#SaveFindings

...