Как сканировать таблицу BigQuery с помощью DLP в поисках конфиденциальных данных?

Я хочу проанализировать свои таблицы в BigQuery с помощью DLP. Возможно ? Как это сделать ?


person hkanjih    schedule 31.01.2019    source источник


Ответы (2)


Возможно. Чтобы использовать BigQuery, вам необходимо определить свой storage_config. Если вы хотите сохранить результаты в другой таблице, добавьте действие save_findings в конфигурацию задания. Без действий у вас будет доступ только к сводке по поиску задания через метод projects.dlpJobs.get.

Следуйте примеру на Python, чтобы вызвать DLP для сканирования BigQuery:

client_dlp = dlp_v2.DlpServiceClient.from_service_account_json(JSON_FILE_NAME)

inspect_job_data = {
    'storage_config': {
        'big_query_options': {
            'table_reference': {
                'project_id': GCP_PROJECT_ID,
                'dataset_id': DATASET_ID,
                'table_id': TABLE_ID
            },
            'rows_limit':10000,
            'sample_method':'RANDOM_START',
        },
    },
    'inspect_config': {
        '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 = client_dlp.create_dlp_job(parent=client_dlp.project_path(GCP_PROJECT_ID), inspect_job=inspect_job_data)

И запрос для анализа результата:

client_bq = bigquery.Client.from_service_account_json(JSON_FILE_NAME)
# Perform a query.
QUERY = (
    'WITH result AS ('
    'SELECT'
    ' c1.info_type.name,'
    ' c1.likelihood,'
    ' content_locations.record_location.record_key.big_query_key.table_reference as bq,'
    ' content_locations.record_location.field_id as column '
    'FROM '
    ' `'+ GCP_PROJECT_ID +'.'+  DATASET_ID +'.'+  TABLE_ID  +'_DLP` as c1 '
    'CROSS JOIN UNNEST(c1.location.content_locations) AS content_locations '
    'WHERE c1.likelihood in (\'LIKELY\',\'VERY_LIKELY\'))'
    'SELECT r.name as info_type, r.likelihood, r.bq.project_id, r.bq.dataset_id,'
    ' r.bq.table_id, r.column.name, count(*) as count  FROM result r GROUP By 1,2,3,4,5,6 '
    'ORDER By COUNT DESC'
)
query_job = client_bq.query(QUERY)  # API request
rows = query_job.result() 
for row in rows:
    print('RULES: {} ({}) | COLUMN: {}.{}.{}:{} | count->{}'.format
          (row.info_type, row.likelihood, row.project_id,row.dataset_id,row.table_id,row.name, row.count)

Более подробную информацию можно найти здесь

person hkanjih    schedule 31.01.2019

Было опубликовано руководство сообщества, посвященное вашему варианту использования: dlp-to- datacatalog-теги.

После этого вы можете запускать DLP во всех своих ресурсах Big Query и автоматически создавать теги в каталоге данных Google.

Таким образом, вы можете искать конфиденциальную информацию, используя синтаксис поиска в каталоге данных Google.

person mesmacosta    schedule 12.05.2020