本主题介绍如何使用混合作业和混合作业触发器来检查外部数据是否存在敏感信息。如需详细了解混合作业和混合作业触发器(包括混合环境的示例),请参阅混合作业和混合作业触发器。
混合作业和混合作业触发器简介
借助混合作业和混合作业触发器,您可以扩大敏感数据保护提供的保护范围,使其不再局限于简单的内容检查请求和 Google Cloud Storage 代码库扫描。使用混合作业和混合作业触发器,您可以将几乎任何来源(包括 Google Cloud 外部)的数据直接流式传输到敏感数据保护,并让敏感数据保护检查数据是否包含敏感信息。敏感数据保护会自动保存和汇总扫描结果,以供进一步分析。
混合作业和混合作业触发器的比较
创建混合作业后,这些作业会一直运行,直到您将其停止。只要数据已正确进行路由和格式设置,它们就接受所有传入的数据。
混合作业触发器的工作方式与混合作业类似,但您无需在混合作业触发器中明确停止作业。敏感数据保护会在每天结束时自动停止混合作业触发器中的作业。
此外,借助混合作业触发器,您可以在触发器内停止和启动新作业,而无需重新配置 hybridInspect
请求。例如,您可以将数据发送到混合作业触发器,然后停止活跃作业、更改其配置,在该触发器中启动新作业,然后继续将数据发送到同一触发器。
如需详细了解哪个选项适合您的使用场景,请参阅本页面上的典型的混合检查场景。
术语定义
本主题使用以下术语:
外部数据:存储在 Google Cloud 外部的数据或敏感数据保护不提供原生支持的数据。
混合作业:配置为扫描来自几乎所有来源的数据的检查作业。
混合作业触发器:配置为扫描来自几乎所有来源的数据的作业触发器。
hybridInspect
请求:包含您要检查的外部数据的请求。发送此请求时,您需要指定要向其发送请求的混合作业或混合作业触发器。
如需了解作业和作业触发器的一般信息,请参阅作业和作业触发器。
混合检查流程
混合检查流程分为三个步骤。
选择要发送到敏感数据保护的数据。
数据可能来自 Google Cloud 内部,也可能来自 Google Cloud 外部。例如,您可以配置自定义脚本或应用,将数据发送到敏感数据保护,以便检查正在传输的数据、来自其他云服务、本地数据存储区或几乎任何其他数据源的数据。
从头开始或使用检查模板在“敏感数据保护”中设置混合作业或混合作业触发器。
设置混合作业或混合作业触发器后,敏感数据保护会主动监听发送到该触发器的数据。当您的自定义脚本或应用将数据发送到此混合作业或混合作业触发器时,系统会检查数据并根据配置存储其结果。
设置混合作业或混合作业触发器时,您可以指定要在其中保存或发布发现结果的位置。选项包括保存到 BigQuery 以及将通知发布到 Pub/Sub、Cloud Monitoring 或电子邮件。
向混合作业或混合作业触发器发送
hybridInspect
请求。hybridInspect
请求包含要扫描的数据。在该请求中,请添加用于描述内容的元数据(也称为标签和表标识符),以便敏感数据保护功能识别您要跟踪的信息。例如,如果您要在多个请求(例如同一数据库表中的行)中扫描相关数据,则可以在这些相关请求中使用相同的元数据。然后,您可以收集、记录和分析该数据库表的发现结果。
当混合作业运行和检查请求时,当敏感数据保护生成检查结果时,系统会给出检查结果。相比之下,Pub/Sub 通知等操作只有在应用结束混合作业后才会执行。
注意事项
使用混合作业和作业触发器时,请考虑以下几点:
- 混合作业和混合作业触发器不支持过滤和采样。
- 作业和作业触发器不受服务等级目标 (SLO) 的约束,但您可以采取一些措施来缩短延迟时间。如需了解详情,请参阅作业延迟。
准备工作
在设置和使用混合作业或混合作业触发器之前,请确保您已完成以下操作:
创建新项目、启用结算功能和敏感数据保护
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection API.
配置数据源
在敏感数据保护检查数据之前,您必须先将数据发送到敏感数据保护。无论您使用什么方法配置混合作业或混合作业触发器,都必须设置外部来源以将数据发送到 DLP API。
如需了解混合检查请求所需的格式,请参阅混合内容项格式。如需了解可随请求中的数据包含的元数据类型,请参阅您可以提供的元数据类型。
创建混合作业或混合作业触发器
如需让敏感数据保护检查您向其发送的数据,您必须先设置混合作业或混合作业触发器。如需了解要创建哪种检查,请参阅本页面上的典型的混合检查场景。
控制台
在 Google Cloud 控制台中,前往创建作业或作业触发器页面:
以下部分介绍了如何填写创建作业或作业触发器页面中与混合检查操作相关的部分。
选择输入数据
在本部分中,您将指定供敏感数据保护检查的输入数据。
- 可选:在名称部分,通过在作业 ID 字段中输入一个值来命名作业。将此字段留空会导致敏感数据保护自动生成标识符。
- 可选:从资源位置菜单中,选择要存储混合作业或混合作业触发器的区域。如需了解详情,请参阅指定处理位置。
在存储类型部分,选择混合。
可选:在说明部分,描述您创建的混合作业或混合作业触发器。例如,您可以添加要检查的数据源的相关信息。
可选:对于必需标签,点击添加标签,然后输入您希望从
hybridInspect
请求中获得的标签。未指定此标签的hybridInspect
请求不会由此混合作业或混合作业触发器处理。您最多可以添加 10 个必需的标签。如需了解详情,请参阅本页面中的需要来自hybridInspect
请求的标签。可选:对于可选标签,输入要附加到发送到此作业或作业触发器的所有
hybridInspect
请求的结果中的任何键值对。您最多可以添加 10 个可选标签。如需了解详情,请参阅可选标签。可选:对于表格数据选项,如果您计划在
hybridInspect
请求中发送表格数据,请输入主键列的字段名称。如需了解详情,请参阅表格数据选项。点击继续。
配置检测
在本部分中,您可以指定敏感数据保护将检查输入数据的敏感数据类型。您可以选择以下选项:
- 模板:如果您已在当前项目中创建模板以用于定义敏感数据保护检测参数,请点击模板名称字段,然后从显示的列表中选择相应模板。
- InfoTypes:敏感数据保护会选择要检测的最常用内置 infoType。如需更改 infoType 或选择要使用的自定义 infoType,请点击管理 infoType。您还可以在检查规则集和置信度阈值部分中微调检测标准。如需了解详情,请参阅配置检测。
配置检测参数后,点击继续。
添加操作
您可在此部分指定将每次检查扫描的结果保存在何处,以及每当扫描完成时是否通过电子邮件或 Pub/Sub 通知消息接收通知。如果未将发现结果保存到 BigQuery,扫描结果将仅包含有关发现结果的数量和 infoType 的统计信息。
- 保存到 BigQuery:每次运行扫描时,敏感数据保护会将扫描发现结果保存到您在此处指定的 BigQuery 表格中。如果您未指定表 ID,BigQuery 将在首次运行扫描时为新表分配一个默认名称。如果您指定现有的表,敏感数据保护会将扫描发现结果附加到该表。
发布到 Pub/Sub:作业完成后,系统将发出 Pub/Sub 消息。
通过电子邮件发送通知:在任务完成后,系统会发送一封电子邮件。
发布到 Cloud Monitoring:作业完成后,其发现结果将发布到 Monitoring。
选择操作后,点击继续。
安排
您可在此部分指定是创建立即运行的一个作业,还是创建每当敏感数据保护收到正确路由且设置了格式的数据时都会运行的作业触发器。
执行下列其中一项操作:
如需立即运行混合式作业,请选择无(创建后立即运行一次性作业)。
如需配置作业以便从来源接收的数据触发作业,请选择创建一个触发器来定期运行作业。
混合作业会触发汇总 API 调用,因此您可以查看发现结果和一段时间内的趋势。
如需了解详情,请参阅混合作业和混合作业触发器的比较。
回顾
您可以在此处查看扫描的 JSON 摘要。请务必记下混合 ob 或 hybrid 作业触发器的名称;在将数据发送到敏感数据保护进行检查时,您需要用到此信息。
查看 JSON 摘要后,点击创建。
敏感数据保护会立即启动混合作业或混合作业触发器。
当您向此混合作业或混合作业触发器发送 hybridInspect
请求时,系统会启动检查扫描。
API
在 DLP API 中,作业由 DlpJobs
资源表示。如需创建混合作业,请调用 projects.locations.dlpJobs.create
方法。
在 DLP API 中,作业触发器用 JobTrigger
资源表示。如需创建混合作业触发器,请调用 projects.locations.jobTriggers.create
方法。
您创建的 DlpJobs
或 JobTrigger
对象必须具有以下设置:
- 在
inspectJob
字段中,设置InspectJobConfig
对象。 - 在
InspectJobConfig
对象的storageConfig
字段中,设置StorageConfig
对象。 - 在
StorageConfig
对象的hybridOptions
字段中,设置HybridOptions
对象。此对象包含您要检查的数据的相关元数据。 在
InspectJobConfig
对象的actions
字段中,添加您希望敏感数据保护在每个作业结束时执行的操作 (Action
)。不支持
publishSummaryToCscc
和publishFindingsToCloudDataCatalog
操作。如需详细了解操作,请参阅操作。通过执行以下任一或两项操作来指定要扫描的内容和扫描方式:
将
inspectTemplateName
字段设置为您要使用的检查模板(如果有)的完整资源名称。设置
inspectConfig
字段。
如果您同时设置了
inspectTemplateName
和inspectConfig
字段,则它们的设置会合并在一起。
JSON 示例简介
以下标签页包含 JSON 示例,您可以将这些示例发送给敏感数据保护,以创建混合作业或混合作业触发器。这些混合作业和混合作业触发器示例配置为执行以下操作:
- 处理任何带有
appointment-bookings-comments
标签的hybridInspect
请求。 - 扫描
hybridInspect
请求中的内容以获取电子邮件地址。 - 将
"env": "prod"
标签附加到发现结果。 - 对于表格数据,获取
booking_id
列(主键)中与敏感数据所在的单元格位于同一行的单元格的值。敏感数据保护会将此标识符附加到发现结果,以便您可以将发现结果追溯到其来自的特定行。 - 在作业停止时发送电子邮件。该电子邮件会发送给 IAM 项目所有者和技术重要联系人。
- 作业停止后,将发现结果发送到 Cloud Monitoring。
如需查看 JSON 示例,请参阅以下标签页。
混合作业
此标签页包含一个 JSON 示例,可用于创建混合作业。
如需创建混合作业,请向以下端点发送 POST
请求。
HTTP 方法和网址
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/dlpJobs
替换以下内容:
JSON 输入
{
"jobId": "postgresql-table-comments",
"inspectJob": {
"actions": [
{
"jobNotificationEmails": {}
},
{
"publishToStackdriver": {}
}
],
"inspectConfig": {
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"minLikelihood": "POSSIBLE",
"includeQuote": true
},
"storageConfig": {
"hybridOptions": {
"description": "Hybrid job for data from the comments field of a table that contains customer appointment bookings",
"requiredFindingLabelKeys": [
"appointment-bookings-comments"
],
"labels": {
"env": "prod"
},
"tableOptions": {
"identifyingFields": [
{
"name": "booking_id"
}
]
}
}
}
}
}
JSON 输出
{ "name": "projects/PROJECT_ID/locations/REGION/dlpJobs/i-postgresql-table-comments", "type": "INSPECT_JOB", "state": "ACTIVE", "inspectDetails": { "requestedOptions": { "snapshotInspectTemplate": {}, "jobConfig": { "storageConfig": { "hybridOptions": { "description": "Hybrid job for data from the comments field of a table that contains customer appointment bookings", "requiredFindingLabelKeys": [ "appointment-bookings-comments" ], "labels": { "env": "prod" }, "tableOptions": { "identifyingFields": [ { "name": "booking_id" } ] } } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "minLikelihood": "POSSIBLE", "limits": {}, "includeQuote": true }, "actions": [ { "jobNotificationEmails": {} }, { "publishToStackdriver": {} } ] } }, "result": { "hybridStats": {} } }, "createTime": "JOB_CREATION_DATETIME", "startTime": "JOB_START_DATETIME" }
敏感数据保护会创建混合作业并生成作业 ID。在此示例中,作业 ID 为 i-postgresql-table-comments
。记下作业 ID。
您需要在 hybridInspect
请求中用到它。
如需停止混合作业,您必须明确调用 projects.locations.dlpJobs.finish
方法。DLP API 不会自动停止混合作业。相比之下,DLP API 会在每天结束时自动停止混合作业触发器中的作业。
混合作业触发器
此标签页包含一个 JSON 示例,可用于创建混合作业触发器。
如需创建混合作业触发器,请向以下端点发送 POST
请求。
HTTP 方法和网址
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobTriggers
替换以下内容:
JSON 输入
{
"triggerId": "postgresql-table-comments",
"jobTrigger": {
"triggers": [
{
"manual": {}
}
],
"inspectJob": {
"actions": [
{
"jobNotificationEmails": {}
},
{
"publishToStackdriver": {}
}
],
"inspectConfig": {
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"minLikelihood": "POSSIBLE",
"limits": {},
"includeQuote": true
},
"storageConfig": {
"hybridOptions": {
"description": "Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings",
"requiredFindingLabelKeys": [
"appointment-bookings-comments"
],
"labels": {
"env": "prod"
},
"tableOptions": {
"identifyingFields": [
{
"name": "booking_id"
}
]
}
}
}
}
}
}
JSON 输出
{ "name": "projects/PROJECT_ID/locations/REGION/jobTriggers/postgresql-table-comments", "inspectJob": { "storageConfig": { "hybridOptions": { "description": "Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings", "requiredFindingLabelKeys": [ "appointment-bookings-comments" ], "labels": { "env": "prod" }, "tableOptions": { "identifyingFields": [ { "name": "booking_id" } ] } } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "minLikelihood": "POSSIBLE", "limits": {}, "includeQuote": true }, "actions": [ { "jobNotificationEmails": {} }, { "publishToStackdriver": {} } ] }, "triggers": [ { "manual": {} } ], "createTime": ""JOB_CREATION_DATETIME", "updateTime": "TRIGGER_UPDATE_DATETIME", "status": "HEALTHY" }
敏感数据保护会创建混合作业触发器。输出包含混合作业触发器的名称。在本示例中为 postgresql-table-comments
。记下名称。您的 hybridInspect
请求中需要用到它。
与混合作业不同,DLP API 会在每天结束时自动停止混合作业触发器中的作业。因此,您无需显式调用 projects.locations.dlpJobs.finish
方法。
创建混合作业或混合作业触发器时,您可以分别在以下 API 参考文档页面上使用 API Explorer:
在请求参数字段中,输入 projects/PROJECT_ID/locations/REGION
。然后,在请求正文字段中,粘贴您尝试创建的对象的示例 JSON。
如果请求成功(即使是在 API Explorer 中创建的请求),则会创建混合作业或混合作业触发器。
如需了解有关如何使用 JSON 将请求发送到 DLP API 的一般信息,请参阅 JSON 快速入门。
将数据发送到混合作业或混合作业触发器
如需检查数据,您必须以正确的格式向混合作业或混合作业触发器发送 hybridInspect
请求。
混合内容项格式设置
下面是一个简单的 hybridInspect
请求示例,该请求会发送到敏感数据保护,以便由混合作业或混合作业触发器进行处理。
请注意 JSON 对象的结构,包括 hybridItem
字段,该字段包含以下字段:
item
:包含要检查的实际内容。findingDetails
:包含要与内容关联的元数据。
{
"hybridItem": {
"item": {
"value": "My email is test@example.org"
},
"findingDetails": {
"containerDetails": {
"fullPath": "10.0.0.2:logs1:app1",
"relativePath": "app1",
"rootPath": "10.0.0.2:logs1",
"type": "logging_sys",
"version": "1.2"
},
"labels": {
"env": "prod",
"appointment-bookings-comments": ""
}
}
}
}
如需全面了解混合检查项的内容,请参阅 HybridContentItem
对象的 API 参考文档内容。
混合检查端点
如需使用混合作业或混合作业触发器检查数据,您必须向正确的端点发送 hybridInspect
请求。
混合作业的 HTTP 方法和网址
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/dlpJobs/JOB_ID:hybridInspect
如需详细了解此端点,请参阅 projects.locations.dlpJobs.hybridInspect
方法的 API 参考文档页面。
混合作业触发器的 HTTP 方法和网址
https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobTriggers/TRIGGER_NAME:hybridInspect
如需详细了解此端点,请参阅 projects.locations.jobTriggers.hybridInspect
方法的 API 参考文档页面。
替换以下内容:
- PROJECT_ID:您的项目标识符。
- REGION:您要存储
hybridInspect
请求的地理区域。此区域必须与混合作业的区域相同。 JOB_ID:您为混合作业指定的 ID,带有
i-
前缀。如需查找作业 ID,请在敏感数据保护中,依次点击检查 > 检查作业。
TRIGGER_NAME:您为混合作业触发器指定的名称。
如需查找作业触发器的名称,请在敏感数据保护中,点击检查 > 作业触发器。
需要 hybridInspect
个请求的标签
如果您想控制混合作业或混合作业触发器可以处理哪些 hybridInspect
请求,可以设置必需的标签。针对该混合作业或混合作业触发器的任何 hybridInspect
请求不包含这些必需标签,都将被拒绝。
如需设置必需的标签,请执行以下操作:
创建混合作业或混合作业触发器时,将
requiredFindingLabelKeys
字段设置为必需标签列表。以下示例将
appointment-bookings-comments
设置为混合作业或混合作业触发器中的必需标签。"hybridOptions": { ... "requiredFindingLabelKeys": [ "appointment-bookings-comments" ], "labels": { "env": "prod" }, ... }
在
hybridInspect
请求的labels
字段中,将每个必需的标签作为键值对中的键添加。对应的值可以为空字符串。以下示例在
hybridInspect
请求中设置了必需的标签appointment-bookings-comments
。{ "hybridItem": { "item": { "value": "My email is test@example.org" }, "findingDetails": { "containerDetails": {...}, "labels": { "appointment-bookings-comments": "" } } } }
如果您未在 hybridInspect
请求中添加所需的标签,则会收到如下错误:
{ "error": { "code": 400, "message": "Trigger required labels that were not included: [appointment-bookings-comments]", "status": "INVALID_ARGUMENT" } }
代码示例:创建混合作业触发器并向其发送数据
C#
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
典型的混合检查场景
以下部分介绍了混合检查的典型用途及其对应的工作流。
执行一次性扫描
作为季度数据库抽查工作的一部分,对 Google Cloud 之外的数据库执行一次性扫描。
使用 Google Cloud 控制台或 DLP API 创建混合作业。
通过调用
projects.locations.dlpJobs.hybridInspect
将数据发送到作业。如果您想检查更多数据,请根据需要重复执行此步骤。发送数据进行检查后,调用
projects.locations.dlpJobs.finish
方法。敏感数据保护会执行
projects.locations.dlpJobs.create
请求中指定的操作。
配置持续监控
监控敏感数据保护本身不支持的数据库每天添加的所有新内容。
使用 Google Cloud 控制台或 DLP API 创建混合作业触发器。
通过调用
projects.locations.jobTriggers.activate
方法来激活作业触发器。通过调用
projects.locations.jobTriggers.hybridInspect
将数据发送到作业触发器。如果您想检查更多数据,请根据需要重复执行此步骤。
在这种情况下,您无需调用 projects.locations.dlpJobs.finish
方法。敏感数据保护功能会自动对您发送的数据进行分区。只要作业触发器处于活动状态,敏感数据保护就会在每天结束时执行您在创建混合作业触发器时指定的操作。
扫描传入数据库的数据
扫描传入数据库的数据,同时控制数据的分区方式。 作业触发器中的每个作业都是一个分区。
使用 Google Cloud 控制台或 DLP API 创建混合作业触发器。
通过调用
projects.locations.jobTriggers.activate
方法来激活作业触发器。系统返回单个作业的作业 ID。下一步中会用到此作业 ID。
通过调用
projects.locations.dlpJobs.hybridInspect
将数据发送到作业。在这种情况下,您需要将数据发送到作业而不是作业触发器。通过此方法,您可以控制发送进行检查的数据的分区方式。如果要在当前分区中添加更多用于检查的数据,请重复此步骤。
将数据发送到作业后,调用
projects.locations.dlpJobs.finish
方法。敏感数据保护会执行
projects.locations.jobTriggers.create
请求中指定的操作。如果要为下一个分区创建另一个作业,请再次激活作业触发器,然后将数据发送到生成的作业。
监控来自代理的流量
监控来自两个自定义应用之间安装的代理的流量。
使用 Google Cloud 控制台或 DLP API 创建混合作业触发器。
通过调用
projects.locations.jobTriggers.activate
方法来激活作业触发器。通过调用
projects.locations.jobTriggers.hybridInspect
将数据发送到作业触发器。如果您想检查更多数据,请根据需要重复执行此步骤。您可以针对所有网络流量无限期地调用此请求。请务必在每个请求中添加元数据。
在这种情况下,您无需调用 projects.locations.dlpJobs.finish
方法。敏感数据保护功能会自动对您发送的数据进行分区。只要作业触发器处于活动状态,敏感数据保护就会在每天结束时执行您在创建混合作业触发器时指定的操作。
后续步骤
- 详细了解混合作业和混合作业触发器的工作原理。