分析和报告敏感数据保护扫描结果

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

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

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

扫描存储分区

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

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

  • InspectJobConfig:配置 Sensitive Data Protection 扫描作业,其中包含:

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

在此示例中,您要扫描 Cloud Storage 存储分区中的人名、电话号码、美国社会保障号和电子邮件地址。然后,您要将结果发送到专用于存储敏感数据保护输出的 BigQuery 表中。下面的 JSON 可以保存到文件中,也可以直接发送到 Sensitive Data Protection 资源 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 的后续作业会将结果附加到同一表中。如果要指示 Sensitive Data Protection 在每次运行扫描时都创建一个新表,您也可以省略 "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 中运行分析

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

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

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

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

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

Sensitive Data Protection 结果的示例摘要。

在 Looker Studio 中创建报告

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

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

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

Looker Studio 中的示例表格。

后续步骤

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