如需正确管理存储区中存储的敏感数据,首先需要进行存储分类:确定存储区中敏感数据的位置、敏感数据的类型以及敏感数据的使用方法。这些信息可以帮助您正确设置访问权限控制和共享权限,并且可以作为持续监控计划的一部分。
Sensitive Data Protection 可以检测存储在 Cloud Storage 位置、Datastore 种类或 BigQuery 表中的敏感数据并对其进行分类。扫描 Cloud Storage 位置中的文件时,Sensitive Data Protection 支持扫描二进制文件、文本、图片、Microsoft Word、Microsoft Excel、Microsoft Powerpoint、PDF 和 Apache Avro 文件。无法识别类型的文件将作为二进制文件进行扫描。如需详细了解支持的文件类型,请参阅支持的文件类型。
如需检查存储空间和数据库中是否存在敏感数据,请指定数据的位置以及 Sensitive Data Protection 应查找的敏感数据类型。Sensitive Data Protection 会启动可检查给定位置数据的作业,然后提供内容中找到的 infoTypes 的详细信息、可能性值及其他信息。
您可以在 Google Cloud 控制台中使用 Sensitive Data Protection、通过 RESTful DLP API,或者采用多种语言之一以编程方式使用 Sensitive Data Protection 客户端库来设置存储空间和数据库检查。
本主题包含以下内容:
- 设置 Google Cloud 存储库和数据库扫描的最佳实践。
- 有关如何在 Google Cloud 控制台中使用 Sensitive Data Protection 设置检查扫描以及(可选)安排定期重复检查扫描的说明。
- 每种 Google Cloud 存储库类型(Cloud Storage、Datastore 模式下的 Firestore (Datastore) 和 BigQuery)的 JSON 和代码示例。
- 扫描作业配置选项的详细概览。
- 有关如何对每个成功的请求生成的扫描结果进行检索以及创建的扫描作业进行管理的说明。
最佳做法
确定扫描范围和优先级
请务必先评估您的资源并指定哪些资源的扫描优先级最高。刚开始时,可能有大量积压的数据需要分类,而且无法立即扫描所有数据。首先选择潜在风险最高的数据,例如经常访问、广泛访问或未知的数据。
确保 Sensitive Data Protection 可以访问您的数据
Sensitive Data Protection 必须能够访问要扫描的数据。确保 Sensitive Data Protection 服务账号有权读取您的资源。
限制首次扫描的范围
为达到最佳效果,请限制前几项作业的范围,而不是扫描所有数据。从一个表、一个存储分区或几个文件开始,同时使用抽样。通过限制首次扫描的范围,您可以更好地确定要启用的检测器以及可能需要哪些排除规则来减少误报,让结果更有意义。如果您不需要所有 infoType,请避免启用所有 infoType,因为误报或无法使用的结果可能会让评估风险变得更加困难。虽然在某些情况下很有用,但像 DATE、TIME、DOMAIN_NAME 和 URL 这样的 infoType 会匹配广泛的结果,可能不适用于大型数据扫描。
对结构化文件(例如 CSV、TSV 或 Avro 文件)进行抽样时,请确保样本大小足以涵盖文件的完整标题和一行数据。如需了解详情,请参阅在结构化解析模式下扫描结构化文件。
安排扫描时间
使用 Sensitive Data Protection 作业触发器每天、每周或每季度自动运行扫描并生成结果。这些扫描还可以配置为仅检查自上次扫描以来发生更改的数据,从而节省时间并降低费用。定期运行扫描可帮助您识别扫描结果中的趋势或异常值。
作业延迟时间
我们不保证作业和作业触发器的服务等级目标 (SLO)。延迟时间受多种因素影响,包括要扫描的数据量、要扫描的存储区、要扫描的 infoType 类型和数量、作业的处理区域以及该区域中可用的计算资源。因此,无法提前确定检查作业的延迟时间。
如需帮助减少作业延迟时间,您可以尝试以下方法:
- 如果您的作业或作业触发器支持抽样,请启用该功能。
避免启用不需要的 infoType。虽然以下信息类型在某些情况下很有用,但与不包含这些信息类型的请求相比,包含这些信息类型的请求的运行速度会慢得多:
PERSON_NAMEFEMALE_NAMEMALE_NAMEFIRST_NAMELAST_NAMEDATE_OF_BIRTHLOCATIONSTREET_ADDRESSORGANIZATION_NAME
始终明确指定 infoType。请勿使用空的 infoType 列表。
如果可以,请使用其他处理区域。
如果您在尝试这些技巧后,作业仍然存在延迟问题,请考虑使用 content.inspect 或 content.deidentify 请求,而不是作业。这些方法受服务等级协议的约束。如需了解详情,请参阅 Sensitive Data Protection 服务等级协议。
准备工作
本主题提供的说明做了以下假设:
您已启用结算功能。
您已启用 Sensitive Data Protection。
存储分类需要以下 OAuth 范围:https://www.googleapis.com/auth/cloud-platform。如需了解详情,请参阅对 DLP API 进行身份验证。
检查 Cloud Storage 位置
您可以使用 Google Cloud 控制台、通过 REST 或 RPC 请求调用 DLP API,或者采用多种语言以编程方式使用客户端库,对 Cloud Storage 位置设置 Sensitive Data Protection 检查。如需了解以下 JSON 和代码示例中包含的参数,请参阅本主题后面的配置存储空间检查。
Sensitive Data Protection 依靠文件扩展名和媒体 (MIME) 类型来确定要扫描的文件类型以及要应用的扫描模式。例如,即使 .txt 文件是结构化 CSV 文件,Sensitive Data Protection 也会以纯文本模式扫描该文件,而通常情况下,CSV 文件是以结构化解析模式扫描的。
如需设置使用 Sensitive Data Protection 的 Cloud Storage 存储桶扫描作业,请执行以下操作:
控制台
本部分介绍了如何检查 Cloud Storage 存储桶或文件夹。 如果您还希望 Sensitive Data Protection 创建数据的去标识化副本,请参阅使用 Google Cloud 控制台对存储在 Cloud Storage 中的敏感数据进行去标识化处理。
在 Google Cloud 控制台的 Sensitive Data Protection 部分中,前往创建作业或作业触发器页面。
输入 Sensitive Data Protection 作业信息,然后点击继续以完成各个步骤:
对于选择输入数据,请在名称字段中输入值,为作业命名。在位置中,从存储类型菜单中选择 Cloud Storage,然后输入要扫描的数据的位置。系统已预先配置采样部分,以便针对您的数据运行示例扫描。如果您有大量数据,则可以调整存储分区内要扫描的对象百分比字段以节省资源。如需了解详情,请参阅选择输入数据。
(可选)在配置检测部分,您可以配置要查找的数据类型,称为“infoTypes”。您可以从预定义的 infoType 列表中进行选择,也可以选择已有的模板(如有)。如需了解详情,请参阅配置检测。
对于添加操作,请选择在作业完成后,Sensitive Data Protection 要执行的一项或多项操作。如需了解详情,请参阅启用检查或风险分析操作。
选择操作后,点击继续。
(可选)对于时间安排,如需仅运行一次扫描,请将菜单设置为无。如需安排定期运行扫描,请点击创建一个触发器来定期运行作业。如需了解详情,请参阅时间安排。
点击创建。
Sensitive Data Protection 作业完成后,系统会将您重定向至作业详情页面,并向您发送一封通知电子邮件。您可以在作业详情页面上查看检查结果。
(可选)如果您选择将 Sensitive Data Protection 发现结果发布到 BigQuery,请在作业详情页面上点击在 BigQuery 中查看发现结果,以便在 BigQuery 网页界面中打开相应表格。您可以随后对表格执行查询,并分析发现结果。如需详细了解如何在 BigQuery 中查询结果,请参阅在 BigQuery 中查询 Sensitive Data Protection 发现结果。
协议
以下 JSON 示例可通过 POST 请求发送到指定的 Sensitive Data Protection REST 端点。此 JSON 示例演示了如何使用 DLP API 检查 Cloud Storage 存储分区。如需了解请求中包含的参数,请参阅本主题后面的配置存储空间检查。
您可以在 API Explorer 的 content.inspect 参考页面上快速尝试此操作:
请注意,如果请求成功(即使是在 APIs Explorer 中),就会创建一个新的扫描作业。如需了解如何控制扫描作业,请参阅本主题后面的检索检查结果。如需了解有关如何使用 JSON 将请求发送到 DLP API 的常规信息,请参阅 JSON 快速入门。
JSON 输入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET-NAME]/*"
},
"bytesLimitPerFile":"1073741824"
},
"timespanConfig":{
"startTime":"2017-11-13T12:34:29.965633345Z",
"endTime":"2018-01-05T04:45:04.240912125Z"
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"excludeInfoTypes":false,
"includeQuote":true,
"minLikelihood":"LIKELY"
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[DATASET-ID]"
}
}
}
}
]
}
}
JSON 输出:
{
"name":"projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
"type":"INSPECT_JOB",
"state":"PENDING",
"inspectDetails":{
"requestedOptions":{
"snapshotInspectTemplate":{
},
"jobConfig":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET-NAME]/*"
},
"bytesLimitPerFile":"1073741824"
},
"timespanConfig":{
"startTime":"2017-11-13T12:34:29.965633345Z",
"endTime":"2018-01-05T04:45:04.240912125Z"
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"minLikelihood":"LIKELY",
"limits":{
},
"includeQuote":true
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[DATASET-ID]",
"tableId":"[NEW-TABLE-ID]"
}
}
}
}
]
}
}
},
"createTime":"2018-11-07T18:01:14.225Z"
}
Java
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。