分析和报告 Cloud DLP 扫描结果

Cloud Data Loss Prevention (DLP) 可帮助您查找、了解和管理基础架构中存在的敏感数据。使用 Cloud DLP 扫描内容中的敏感数据后,您可以通过多种方式处理该数据智能。本主题介绍如何利用其他 Google Cloud 功能(如 BigQuery、Cloud SQL)以及 Google Data Studio 执行以下操作:

  • 直接在 BigQuery 中存储 Cloud DLP 扫描结果。
  • 生成有关基础架构中敏感数据所在位置的报告。
  • 运行丰富的 SQL 分析,以了解敏感数据的存储位置和类型。
  • 根据一组结果或结果组合自动触发提醒或操作。

本主题还包含一个完整示例,介绍如何结合使用 Cloud DLP 和其他 Google Cloud 功能来完成上述所有操作。

扫描存储分区

首先,对数据进行扫描。下面是关于如何使用 Cloud DLP 扫描存储区的基本信息。如需有关如何扫描存储区的完整说明(包括客户端库的使用),请参阅检查存储空间和数据库中是否存在敏感数据

要在 Google Cloud 存储区上运行扫描操作,请创建一个包含以下配置对象的 JSON 对象:

  • InspectJobConfig:配置 DLP 扫描作业,其中包含:

    • StorageConfig:要扫描的存储区。
    • InspectConfig:扫描的方式和内容。您还可以使用检查模板来定义检查配置。
    • Action:在作业完成时执行的任务,包括将结果保存到 BigQuery 表或向 Pub/Sub 发布通知。

在此示例中,您要扫描 Cloud Storage 存储分区中的人名、电话号码、美国社会保障号和电子邮件地址。然后,您要将结果发送到专用于存储 DLP 输出的 BigQuery 表中。下面的 JSON 可以保存到文件中,也可以直接发送到 Cloud DLP 资源 DlpJobcreate 方法。

JSON 输入:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/dlpJobs

{
  "inspectJob":{
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"PERSON_NAME"
        },
        {
          "name":"PHONE_NUMBER"
        },
        {
          "name":"US_SOCIAL_SECURITY_NUMBER"
        },
        {
          "name":"EMAIL_ADDRESS"
        }
      ],
      "includeQuote":true
    },
    "storageConfig":{
      "cloudStorageOptions":{
        "fileSet":{
          "url":"gs://[BUCKET_NAME]/**"
        }
      }
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"[PROJECT_ID]",
              "datasetId":"[DATASET_ID]",
              "tableId":"[TABLE_ID]"
            }
          }
        }
      }
    ]
  }
}

通过在 Cloud Storage 存储分区地址 (gs://[BUCKET_NAME]/**) 后面指定两个星号 (**),您可以指示扫描作业以递归方式扫描。放置一个星号 (**) 将指示作业仅扫描指定的目录层级(不扫描更深入的层级)。

输出将保存到给定数据集和项目内的指定表中。指定了给定表 ID 的后续作业会将结果附加到同一表中。如果要指示 Cloud DLP 在每次运行扫描时都创建一个新表,您也可以省略 "tableId" 键。

通过指定的网址在请求中将此 JSON 发送到 projects.dlpJobs.create 方法后,您会收到以下响应:

JSON 输出:

{
  "name":"projects/[PROJECT_ID]/dlpJobs/[JOB_ID]",
  "type":"INSPECT_JOB",
  "state":"PENDING",
  "inspectDetails":{
    "requestedOptions":{
      "snapshotInspectTemplate":{

      },
      "jobConfig":{
        "storageConfig":{
          "cloudStorageOptions":{
            "fileSet":{
              "url":"gs://[BUCKET_NAME]/**"
            }
          }
        },
        "inspectConfig":{
          "infoTypes":[
            {
              "name":"PERSON_NAME"
            },
            {
              "name":"PHONE_NUMBER"
            },
            {
              "name":"US_SOCIAL_SECURITY_NUMBER"
            },
            {
              "name":"EMAIL_ADDRESS"
            }
          ],
          "minLikelihood":"POSSIBLE",
          "limits":{

          },
          "includeQuote":true
        },
        "actions":[
          {
            "saveFindings":{
              "outputConfig":{
                "table":{
                  "projectId":"[PROJECT_ID]",
                  "datasetId":"[DATASET_ID]",
                  "tableId":"[TABLE_ID]"
                }
              }
            }
          }
        ]
      }
    }
  },
  "createTime":"2018-11-19T21:09:07.926Z"
}

作业完成后会将结果保存到给定的 BigQuery 表中。

要获取作业的状态,请调用 projects.dlpJobs.get 方法,或者发送 GET 请求到以下网址,注意要将 [PROJECT_ID] 替换为项目 ID,将 [JOB_ID] 替换为 Cloud Data Loss Prevention API 针对作业创建请求发送的响应中提供的作业标识符(作业标识符将以“i-”开头):

GET https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/dlpJobs/[JOB_ID]

针对您刚刚创建的作业,此请求会返回以下 JSON。请注意,系统会在检查详细信息的后面返回扫描结果摘要。如果扫描尚未完成,其 "state" 键将指定 "RUNNING"

JSON 输出:

{
  "name":"projects/[PROJECT_ID]/dlpJobs/[JOB_ID]",
  "type":"INSPECT_JOB",
  "state":"DONE",
  "inspectDetails":{
    "requestedOptions":{
      "snapshotInspectTemplate":{

      },
      "jobConfig":{
        "storageConfig":{
          "cloudStorageOptions":{
            "fileSet":{
              "url":"gs://[BUCKET_NAME]/**"
            }
          }
        },
        "inspectConfig":{
          "infoTypes":[
            {
              "name":"PERSON_NAME"
            },
            {
              "name":"PHONE_NUMBER"
            },
            {
              "name":"US_SOCIAL_SECURITY_NUMBER"
            },
            {
              "name":"EMAIL_ADDRESS"
            }
          ],
          "minLikelihood":"POSSIBLE",
          "limits":{

          },
          "includeQuote":true
        },
        "actions":[
          {
            "saveFindings":{
              "outputConfig":{
                "table":{
                  "projectId":"[PROJECT_ID]",
                  "datasetId":"[DATASET_ID]",
                  "tableId":"[TABLE_ID]"
                }
              }
            }
          }
        ]
      }
    },
    "result":{
      "processedBytes":"536734051",
      "totalEstimatedBytes":"536734051",
      "infoTypeStats":[
        {
          "infoType":{
            "name":"PERSON_NAME"
          },
          "count":"269679"
        },
        {
          "infoType":{
            "name":"EMAIL_ADDRESS"
          },
          "count":"256"
        },
        {
          "infoType":{
            "name":"PHONE_NUMBER"
          },
          "count":"7"
        }
      ]
    }
  },
  "createTime":"2018-11-19T21:09:07.926Z",
  "startTime":"2018-11-19T21:10:20.660Z",
  "endTime":"2018-11-19T22:07:39.725Z"
}

在 BigQuery 中运行分析

现在您新建了一个包含 Cloud DLP 扫描结果的 BigQuery 表,接下来该对此表运行分析了。

在 Google Cloud Console 左侧的“大数据”下,点击 BigQuery。 打开项目和数据集,然后找到创建的新表。

您可在此表上运行 SQL 查询,以详细了解 Cloud DLP 在您数据存储分区中找到的内容。例如,运行以下命令,按 infoType 对所有扫描结果计数,将占位符替换为相应的实际值:

SELECT
  info_type.name,
  COUNT(*) AS iCount
FROM
  `[PROJECT_ID].[DATASET_ID].[TABLE_ID]`
GROUP BY
  info_type.name

此查询会生成该存储分区的结果摘要,如下所示:

Cloud DLP 结果的示例摘要。

在 Data Studio 中创建报告

借助 Data Studio,您可以创建能基于 BigQuery 表的自定义报告。在本部分中,您将在 Data Studio 中创建一个简单的表格报告,它基于 BigQuery 中存储的 Cloud DLP 结果。

  1. 打开 Data Studio 并启动新的报告。
  2. 点击创建新数据源
  3. 从“连接器”列表中,点击 BigQuery。如有必要,通过点击授权来授权数据洞察连接到 BigQuery 项目。
  4. 现在,选择要搜索的表格,然后点击我的项目共享的项目,具体取决于项目所在位置。在页面上的列表中查找项目、数据集和表。
  5. 点击连接以运行报告。
  6. 点击添加到报告 (Add to report)。

现在,您将创建一个,它会显示每个 infoType 的频率。选择字段 info_type.name 作为维度。生成的表如下所示:

Data Studio 中的示例表。

后续步骤

这只是使用数据洞察和 Cloud DLP 中的输出来直观呈现内容的开始。您可以添加其他图表元素和细目过滤器来创建信息中心和报告。要详细了解数据洞察提供的功能,请参阅数据洞察产品概览