GSP864

概览
Cloud Data Loss Prevention (DLP) API 是 Sensitive Data Protection 的一部分。Sensitive Data Protection 是一项全托管式服务,旨在帮助发现、分类和保护敏感信息。
您可以使用 DLP API 以多种方式对数据进行分类,包括数据类型、敏感度级别和类别。
DLP API 可通过多种方式保护敏感数据,包括:
-
隐去:从文档或文件中隐去敏感数据。
-
遮盖:使用占位符(例如
*)遮盖敏感数据。
-
标记化:用唯一标识符替换敏感数据。
-
加密:加密敏感数据。
在本实验中,您将了解 DLP API 的基本功能,并尝试使用多种方法通过该 API 来保护数据。
学习内容
在本实验中,您将使用 DLP API 完成以下任务:
- 检查字符串和文件,找出匹配的信息类型
- 了解去标识化方法,并对数据进行去标识化处理
- 隐去字符串和图片中的信息类型
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
设置区域
为项目设置区域:
gcloud config set compute/region {{{project_0.default_region | Region}}}
任务 1. 克隆代码库并启用 API
- 在 Cloud Shell 中,运行以下命令来下载 Cloud Data Loss Prevention Node.js 客户端代码库:
git clone https://github.com/googleapis/synthtool
- 下载项目代码后,切换到
samples 目录并安装所需的 Node.js 软件包:
cd synthtool/tests/fixtures/nodejs-dlp/samples/ && npm install
注意:忽略任何警告消息。
- 使用以下
gcloud 命令设置项目,确保您使用的是正确的项目:
export PROJECT_ID={{{project_0.project_id | "filled in at lab start"}}}
gcloud config set project $PROJECT_ID
启用 API
以下是启用项目所需的 API:
-
DLP API — 提供用于检测、风险分析和去标识化文本、图像及 Google Cloud 存储库中对隐私信息敏感片段的方法。
-
Cloud Key Management Service (KMS) API — Google Cloud KMS 允许管理加密密钥并使用这些密钥执行加密操作。
- 使用以下
gcloud 命令启用所需的 API:
gcloud services enable dlp.googleapis.com cloudkms.googleapis.com \
--project $PROJECT_ID
点击检查我的进度以验证是否完成了以下目标:
启用 API
任务 2. 检查字符串和文件
在上一步下载的项目中,目录“samples”包含多个 JavaScript 文件,这些文件使用了 DLP API 的不同功能。文件 inspectString.js 用于检查提供的字符串中是否存在敏感信息类型。
- 提供字符串选项以及一个包含潜在敏感信息的示例字符串:
node inspectString.js $PROJECT_ID "My email address is jenny@somedomain.com and you can call me at 555-867-5309" > inspected-string.txt
输出会显示每个匹配的信息类型的发现结果,包括:
-
InfoType:为该字符串片段检测到的信息类型。查看完整的信息类型列表。默认情况下,inspectString.js 仅检查以下信息类型:CREDIT_CARD_NUMBER、PHONE_NUMBER、PERSON_NAME 和 EMAIL_ADDRESS。
-
Likelihood:根据匹配项的可能性进行分类。Likelihood 取值范围为 VERY_UNLIKELY 到 VERY_LIKELY。
使用以下命令检查输出:
cat inspected-string.txt
上述请求的发现结果如下:
Findings:
Info type: PERSON_NAME
Likelihood: POSSIBLE
Info type: EMAIL_ADDRESS
Likelihood: LIKELY
Info type: PHONE_NUMBER
Likelihood: VERY_LIKELY
- 同样,您也可以检查文件中的信息类型。运行以下命令,查看示例文件
accounts.txt:
cat resources/accounts.txt
该文件包含以下文本:
My credit card number is 1234 5678 9012 3456, and my CVV is 789.
- 使用
inspectFile.js 文件检查提供的文件中是否存在敏感信息类型:
node inspectFile.js $PROJECT_ID resources/accounts.txt > inspected-file.txt
使用以下命令检查输出:
cat inspected-file.txt
结果:
Findings:
Info type: CREDIT_CARD_NUMBER
Likelihood: VERY_LIKELY
下面是使用 API 检查字符串输入的异步函数:
async function inspectString(
ProjectId,
string,
minLikelihood,
maxFindings,
infoTypes,
customInfoTypes,
includeQuote
) {
...
}
为上述参数提供的参数值用于构建请求对象。然后,该请求被传递给 inspectContent 函数,以获取生成输出的响应:
// Construct item to inspect
const item = {value: string};
// Construct request
const request = {
parent: `projects/${projectId}/locations/global`,
inspectConfig: {
infoTypes: infoTypes,
customInfoTypes: customInfoTypes,
minLikelihood: minLikelihood,
includeQuote: includeQuote,
limits: {
maxFindingsPerRequest: maxFindings,
},
},
item: item,
};
// Run request
const [response] = await dlp.inspectContent(request);
将输出上传到 Cloud Storage
运行以下命令,将响应上传到 Cloud Storage 进行活动跟踪验证:
gsutil cp inspected-string.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp inspected-file.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
点击检查我的进度以验证是否完成了以下目标:
检查字符串和文件
任务 3. 去标识化
除了检查和检测敏感数据之外,您还可以使用 Sensitive Data Protection 通过 DLP API 执行去标识化操作。去标识化是从数据中移除标识信息的过程。该 API 会按信息类型检测敏感数据,然后使用去标识化转换对数据进行遮盖、删除或以其他方式隐匿。
- 运行以下命令,使用
deidentifyWithMask.js 以遮盖方式进行去标识化:
node deidentifyWithMask.js $PROJECT_ID "My order number is F12312399. Email me at anthony@somedomain.com" > de-identify-output.txt
使用以下命令检查输出:
cat de-identify-output.txt
遮盖时,API 会将匹配的信息类型字符替换为其他字符,默认为“*”。输出示例:
My order number is F12312399. Email me at *****************************
请注意,字符串中的邮箱被混淆了,而随机订单号依然保持完整。(自定义信息类型可用,但不在本实验范围内)。
查看使用 DLP API 以遮盖方式去标识化的函数。同样,这些参数用于构建请求对象。这次请求被传递给 deidentifyContent 函数:
async function deidentifyWithMask() {
const request = {
parent: `projects/${projectId}/locations/global`,
deidentifyConfig: {
infoTypeTransformations: {
transformations: [
{
primitiveTransformation: {
characterMaskConfig: {
maskingCharacter: maskingCharacter,
numberToMask: numberToMask,
},
},
},
],
},
},
item: item,
};
// Run deidentification request
const [response] = await dlp.deidentifyContent(request);
将输出上传到 Cloud Storage
运行以下命令,将响应上传到 Cloud Storage 进行活动跟踪验证:
gsutil cp de-identify-output.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
点击检查我的进度以验证是否完成了以下目标:
去标识化
任务 4. 隐去字符串和图片中的敏感信息
混淆敏感信息的另一种方法是隐去。隐去会将匹配项替换为与之匹配的 infoType。
- 使用
redactText.js 从示例输入中隐去文本:
node redactText.js $PROJECT_ID "Please refund the purchase to my credit card 4012888888881881" CREDIT_CARD_NUMBER > redacted-string.txt
使用以下命令检查输出:
cat redacted-string.txt
输出将示例信用卡号替换为信息类型 CREDIT_CARD_NUMBER:
Please refund the purchase on my credit card [CREDIT_CARD_NUMBER]
如果您想隐藏敏感信息,但同时仍能识别被移除的信息类型,那么该方法会很有用。DLP API 同样可以隐去包含文本的图片中的信息。查看示例图片(位于 samples/resources 目录):

- 如需从上面的图片中隐去电话号码,请运行以下命令:
node redactImage.js $PROJECT_ID resources/test.png "" PHONE_NUMBER ./redacted-phone.png
基于命令,系统会生成一张名为 redacted-phone.png 的新图片,其中请求隐去的信息已被涂黑。如需验证,请使用 Cloud Shell 代码编辑器打开 samples/redacted-phone.png 文件:
注意:在 Cloud Shell 代码编辑器中,使用左侧的“资源管理器”窗格,前往 synthtool > tests > fixtures > nodejs-dlp > samples > redacted-phone.png

- 再次尝试从图片中隐去邮箱:
node redactImage.js $PROJECT_ID resources/test.png "" EMAIL_ADDRESS ./redacted-email.png
基于命令,系统会生成一张名为 redacted-email.png 的新图片,其中请求隐去的信息已被涂黑。如需验证,请在 Cloud Shell 代码编辑器中打开 samples/redacted-email.png 文件:

以下函数用于隐去字符串中的敏感信息:
async function redactText(
callingProjectId,
string,
minLikelihood,
infoTypes
) {
...}
以下请求被传递给 deidentifyContent 函数:
const request = {
parent: `projects/${projectId}/locations/global`,
item: {
value: string,
},
deidentifyConfig: {
infoTypeTransformations: {
transformations: [replaceWithInfoTypeTransformation],
},
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
};
const [response] = await dlp.deidentifyContent(request);
同样,以下函数用于隐去图片中的敏感信息:
async function redactImage(
callingProjectId,
filepath,
minLikelihood,
infoTypes,
outputPath
) {
...}
以下请求被传递给 redactImage 函数:
// Construct image redaction request
const request = {
parent: `projects/${projectId}/locations/global`,
byteItem: {
type: fileTypeConstant,
data: fileBytes,
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
imageRedactionConfigs: imageRedactionConfigs,
};
将输出上传到 Cloud Storage
运行以下命令,将响应上传到 Cloud Storage 进行活动跟踪验证:
gsutil cp redacted-string.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp redacted-phone.png gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp redacted-email.png gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
点击检查我的进度以验证是否完成了以下目标:
隐去字符串和图片中的敏感信息
恭喜!
Cloud Data Loss Prevention(DLP)API 是一款功能强大的工具,提供了一个用于敏感数据检查、分类和去标识化的强大平台。您使用 DLP API 检查了字符串和文件中的多种信息类型,并从字符串和图片中隐去了敏感数据。
后续步骤/了解详情
请务必参阅以下文档,进一步练习使用 DLP API:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 4 月 22 日
上次测试实验的时间:2025 年 4 月 22 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。