本指南将详细介绍如何在 Cloud Storage、Datastore 模式 (Datastore) 下的 Firestore 或 BigQuery 中检查数据,以及如何将检查结果发送到 Security Command Center。
对于 BigQuery 数据,您还可以执行性能分析,这与检查操作不同。您还可以将数据分析文件发送到 Security Command Center。如需了解详情,请参阅将数据分析文件发布到 Security Command Center。
概览
您可以通过 Security Command Center 收集有关安全威胁的数据、识别安全威胁并采取相应措施,以避免造成业务损害或损失。借助 Security Command Center,您可以从单个集中式信息中心执行多项与安全相关的操作。
敏感数据保护已与 Security Command Center 深度集成。当您使用敏感数据保护操作检查 Google Cloud Storage 存储区中是否存在敏感数据时,它可以将结果直接发送到 Security Command Center 信息中心。它们显示在其他安全指标旁边。
通过执行本指南中的步骤,您将完成以下操作:
- 启用 Security Command Center 和敏感数据保护。
- 设置敏感数据保护以检查 Google Cloud 存储区,包括 Cloud Storage 存储桶、BigQuery 表或 Datastore 种类。
- 配置敏感数据保护扫描,以将检查作业结果发送到 Security Command Center。
如需详细了解 Security Command Center,请参阅 Security Command Center 文档。
如果您想将发现扫描(而非检查作业)的结果发送到 Security Command Center,请改为参阅对组织、文件夹或项目进行分析的文档。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Sensitive Data Protection
- Cloud Storage
- BigQuery
- Datastore
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
您必须先完成以下操作,才能将敏感数据保护扫描结果发送到 Security Command Center:
- 第 1 步:设置 Google Cloud 存储区。
- 第 2 步:设置 Identity and Access Management (IAM) 角色。
- 第 3 步:启用 Security Command Center。
- 第 4 步:启用敏感数据保护。
- 第 5 步:将敏感数据保护功能作为 Security Command Center 的安全来源启用。
设置这些组件的步骤将在以下几个部分中介绍。
第 1 步:设置 Google Cloud 存储区
选择是要扫描您自己的 Google Cloud 存储区还是示例存储区。本主题针对这两种场景提供了说明。
扫描您自己的数据
如果要扫描您自己现有的 Cloud Storage 存储分区、BigQuery 表格或 Datastore 种类,请先打开存储区所在的项目。在后续步骤中,您将为此项目及其组织启用 Security Command Center 和敏感数据保护。
打开要使用的项目后,继续执行第 2 步以设置一些 IAM 角色。
扫描样本数据
如果要扫描测试数据集,请先确保您已设置结算账号,然后创建一个新项目。要完成此步骤,您必须拥有 IAM 的 Project Creator 角色。详细了解 IAM 角色。
- 如果您尚未配置结算,请设置结算账号。
- 前往 Google Cloud 控制台中的新建项目页面。
- 在结算账号下拉列表中,选择项目的结算账号。
- 在组织下拉列表中,选择要在其中创建项目的组织。
- 在位置下拉列表中,选择要在其中创建项目的组织或文件夹。
接下来,下载并存储样本数据:
- 前往 GitHub 上的 Cloud Run functions 教程存储库。
- 点击克隆或下载,然后点击下载 ZIP。
- 解压缩下载的 ZIP 文件。
- 前往 Google Cloud 控制台中的 Storage 浏览器页面。
- 点击创建存储分区。
- 在创建存储分区页面上,为存储分区指定唯一的名称,然后点击创建。
- 在存储分区详细信息页面上,点击上传文件夹。
- 转到您解压缩的
dlp-cloud-functions-tutorials-master
文件夹,将其打开,然后选择sample_data
文件夹。点击上传按钮将该文件夹的内容上传到 Cloud Storage。
请记下您为 Cloud Storage 存储分区指定的名称,以备后用。文件上传完成后,您可以继续下一步操作。
第 2 步:设置 IAM 角色
如需使用敏感数据保护将扫描结果发送到 Security Command Center,您需要 Security Center Admin 和 Sensitive Data Protection Jobs Editor IAM 角色。本部分介绍如何添加这些角色。要完成此部分,您必须拥有 Organization Administrator IAM 角色。
转到 IAM 页面。
- 在按主账号查看标签页中,找到您的 Google 账号,然后点击 edit修改主账号。
添加 Security Center Admin 和 Sensitive Data Protection Jobs Editor 角色:
- 在修改权限面板中,点击添加其他角色。
- 在选择角色列表中,搜索并选择 Security Center Admin。
- 点击添加其他角色。
- 在选择角色列表中,搜索并选择 DLP Jobs Editor。
- 点击保存。
您现在拥有组织的 Sensitive Data Protection Jobs Editor 和 Security Center Admin 角色。拥有了这些角色后,您便能够完成本主题其余部分的任务。
第 3 步:启用 Security Command Center
前往 Google Cloud 控制台中的 Security Command Center 页面。
在组织下拉列表中,选择要为其启用敏感数据保护的组织,然后点击选择。
在显示的启用资源发现页面上,选择当前和未来的所有项目,然后点击启用。随即将显示一条消息,说明 Sensitive Data Protection 正在启动资源发现进程。
资源发现完成后,敏感数据保护将显示您支持的 Google Cloud 资源。资源发现过程可能需要几分钟时间,您可能需要刷新页面才能显示发现的资源。
如需详细了解如何启用 Security Command Center,请参阅 Security Command Center 文档。
第 4 步:启用敏感数据保护
为要扫描的项目启用敏感数据保护。该项目必须位于您已为其启用 Security Command Center 的同一组织内。如需使用 Google Cloud 控制台启用 Sensitive Data Protection,请执行以下操作:
- 在 Google Cloud 控制台中,前往启用对 API 的访问权限页面。
- 在工具栏上,选择本指南第 1 步中的项目。项目必须包含要扫描的 Cloud Storage 存储分区、BigQuery 表格或 Datastore 种类。
- 点击下一步。
- 点击启用。
您的项目现已启用敏感数据保护功能。
第 5 步:将敏感数据保护作为 Security Command Center 的集成服务启用
如需在 Security Command Center 中查看敏感数据保护扫描结果,请将敏感数据保护作为集成服务启用。如需了解详情,请参阅 Security Command Center 文档中的添加 Google Cloud 集成服务。
敏感数据保护的发现结果会显示在 Security Command Center 的发现结果页面上。
配置并运行 Sensitive Data Protection 检查扫描
在本部分中,您将配置并运行敏感数据保护检查作业。
您在此配置的检查作业会指示敏感数据保护扫描存储在 Cloud Storage 中的样本数据或存储在 Cloud Storage、Datastore 或 BigQuery 中的您自己的数据。您指定的作业配置也是您指示敏感数据保护将其扫描结果保存到 Security Command Center 的位置。
第 1 步:记下您的项目标识符
- 前往 Google Cloud 控制台。
- 点击选择。
- 在请选择:下拉列表中,选择您已为其启用 Security Command Center 的组织。
- 在 ID 下方,复制您要扫描的数据所在项目的项目 ID。
- 在名称下方,点击项目以将其选中。
第 2 步:打开 APIs Explorer 并配置作业
- 点击以下按钮,在
dlpJobs.create
方法的参考页面上转到 API Explorer: - 在父级框中,输入以下内容,其中 PROJECT_ID 是您在第 1 步中记下的项目 ID:
projects/PROJECT_ID
根据您使用的是 Cloud Storage 存储分区中的样本数据,还是存储在 Cloud Storage、Datastore 或 BigQuery 中的您自己的数据,将请求正文字段的内容替换为下面对应的 JSON。
样本数据
如果您创建了 Cloud Storage 存储桶来存储样本数据,请复制以下 JSON,然后将其粘贴到请求正文字段中。将 BUCKET_NAME
替换为您为 Cloud Storage 存储分区指定的名称:
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://BUCKET_NAME/**"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
Cloud Storage 数据
如需扫描您自己的 Cloud Storage 存储分区,请复制以下 JSON 并将其粘贴到请求正文字段中。
将 PATH_NAME
替换为您要扫描的位置的路径。如需以递归方式扫描,请用两个星号结束路径,例如 gs://path_to_files/**
。如需扫描某个特定目录(不扫描更深层次的目录),请用一个星号结束路径,例如 gs://path_to_files/*
。
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://PATH_NAME"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
如需详细了解可用的扫描选项,请参阅检查存储空间和数据库中是否存在敏感数据。
Datastore 数据
如需扫描保存在 Datastore 中的您自己的数据,请复制以下 JSON 并将其粘贴到请求正文字段中。
将 DATASTORE_KIND
替换为 Datastore 种类的名称。您也可以分别用命名空间和项目标识符替换 NAMESPACE_ID
和 PROJECT_ID
,或者如果需要,可以彻底移除 "partitionID"
。
{
"inspectJob":{
"storageConfig":{
"datastoreOptions":{
"kind":{
"name":"DATASTORE_KIND"
},
"partitionId":{
"namespaceId":"NAMESPACE_ID",
"projectId":"PROJECT_ID"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
如需详细了解可用的扫描选项,请参阅检查存储空间和数据库中是否存在敏感数据。
BigQuery 数据
如需扫描您自己的 BigQuery 表格,请复制以下 JSON 并将其粘贴到请求正文字段中。
将 PROJECT_ID
、BIGQUERY_DATASET_NAME
和 BIGQUERY_TABLE_NAME
分别替换为项目 ID、BigQuery 数据集和表格名称。
{
"inspectJob":
{
"storageConfig":
{
"bigQueryOptions":
{
"tableReference":
{
"projectId": "PROJECT_ID",
"datasetId": "BIGQUERY_DATASET_NAME",
"tableId": "BIGQUERY_TABLE_NAME"
}
}
},
"inspectConfig":
{
"infoTypes":
[
{
"name": "EMAIL_ADDRESS"
},
{
"name": "PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name": "PHONE_NUMBER"
}
],
"includeQuote": true,
"minLikelihood": "UNLIKELY",
"limits":
{
"maxFindingsPerRequest": 100
}
},
"actions":
[
{
"publishSummaryToCscc":
{
}
}
]
}
}
如需详细了解可用的扫描选项,请参阅检查存储空间和数据库中是否存在敏感数据。
第 3 步:执行启动检查作业的请求
按照上述步骤配置作业后,点击执行以发送请求。如果请求成功,请求下方将显示包含成功代码和 JSON 对象的响应,该对象表明您创建的敏感数据保护作业的状态。
查看 Sensitive Data Protection 检查扫描的状态
扫描请求响应中包含检查扫描作业的 ID("name"
键)和当前状态("state"
键)。在您提交请求后,作业的状态为 "PENDING"
。
提交扫描请求后,系统会立即开始扫描内容。
如需查看检查作业的状态,请执行以下操作:
- 点击以下按钮,在
dlpJobs.get
方法的参考页面上转到 API Explorer: - 在名称框中,输入扫描请求的 JSON 响应中的作业名称,其格式如下:
作业 ID 的格式为projects/PROJECT_ID/dlpJobs/JOB_ID
i-1234567890123456789
。 - 如需提交请求,请点击执行。
如果响应 JSON 对象的 "state"
键指示作业为 "DONE"
,则表示检查作业已完成。
如需查看响应 JSON 的其余部分,请向下滚动页面。在 "result"
> "infoTypeStats"
下,列出的每种信息类型都应有相应的 "count"
。如果没有,请确保您输入的 JSON 准确无误,且数据的路径或位置正确无误。
检查作业完成后,您可以继续转到本指南的下一部分,在 Security Command Center 里查看扫描结果。
代码示例:检查 Cloud Storage 存储桶
此示例演示了如何使用 DLP API 创建检查作业,以检查 Cloud Storage 存储桶并将发现结果发送到 Security Command Center。
C#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
代码示例:检查 BigQuery 表
此示例演示了如何使用 DLP API 创建检查作业,以检查 BigQuery 表并将发现结果发送到 Security Command Center。
C#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
代码示例:检查 Datastore 种类
此示例演示了如何使用 DLP API 创建用于检查 Datastore 种类并将发现结果发送到 Security Command Center 的检查作业。
C#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在 Security Command Center 中查看敏感数据保护扫描结果
由于您已指示敏感数据保护将其检查作业结果发送到 Security Command Center,因此您现在可以在 Security Command Center 中查看检查作业的结果:
- 在 Google Cloud 控制台中,转到 Security Command Center 发现结果页面。
- 选择您为其启用了 Security Command Center 的组织。
在查询编辑器字段中,输入以下内容,以查询敏感数据保护功能的发现。
state="ACTIVE" AND NOT mute="MUTED" AND (parent_display_name="Sensitive Data Protection" OR parent_display_name="Cloud Data Loss Prevention")
如需详细了解查询编辑器,请参阅在 Google Cloud 控制台中修改发现结果查询。
如果敏感数据保护发送了任何发现结果,这些结果会显示在发现结果列表中。该列表包含敏感数据保护功能的所有发现结果,其中可能包括检查作业和发现(数据分析)操作的发现结果。
本指南中提供的说明仅会开启 Sensitive Data Protection 的部分内置检测器。
- 如需详细了解敏感数据保护功能可以检测的其他信息,请参阅 InfoType 参考。
- 如需了解如何配置自定义 infoType 检测器,请参阅创建自定义 infoType 检测器。
清理
为避免因本主题中使用的资源导致您的 Google Cloud 账号产生费用,请执行以下操作:
删除项目
为避免支付费用,最简单的方法是按照本主题中提供的说明删除您创建的项目。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
如果使用此方法删除项目,会一同删除您创建的敏感数据保护作业和 Cloud Storage 存储桶,不用再执行以下部分中的操作说明。
删除敏感数据保护作业
如果您扫描的是自己的数据,则只需删除您创建的检查作业:
- 点击以下按钮,在
dlpJobs.delete
方法的参考页面上转到 API Explorer: - 在名称框中,输入扫描请求的 JSON 响应中的作业名称,其格式如下:
作业 ID 的格式为projects/PROJECT_ID/dlpJobs/JOB_ID
i-1234567890123456789
。
如果您创建了其他检查作业,或者想要确保已成功删除作业,可以列出现有的所有作业:
- 点击以下按钮,在
dlpJobs.list
方法的参考页面上转到 API Explorer: - 在父级框中,按以下格式输入项目标识符:
projects/PROJECT_ID
- 点击执行。
如果响应中未列出任何作业,则表明您已删除所有作业。如果响应中列出了作业,请对这些作业重复删除步骤。
删除 Cloud Storage 存储分区
如果您创建了一个新的 Cloud Storage 存储分区来保存样本数据,请删除该存储分区:
- 打开 Cloud Storage 浏览器。
- 在 Cloud Storage 浏览器中,选中您创建的存储分区名称旁边的复选框,然后点击删除。
后续步骤
- 详细了解 Sensitive Data Protection 中的
publishSummaryToCscc
操作。 - 详细了解如何使用敏感数据保护扫描存储库中是否存在敏感数据。
- 了解如何使用 Security Command Center。