检查点
Create a Cloud Storage bucket.
/ 25
Create a Keyring and Crypto key.
/ 25
Encrypt Your Data with the Cloud KMS key and upload it on the storage bucket.
/ 25
Encrypt multiple files using KMS API and upload to cloud storage.
/ 25
Cloud KMS 使用入门
GSP079
概览
在本实验中,您将学习如何使用 Google Cloud 安全和隐私 API 的一些高级功能,包括:
- 设置安全的 Cloud Storage 存储桶
- 使用密钥管理服务管理密钥和已加密数据
- 查看 Cloud Storage 审核日志
您将使用安然语料库 (Enron Corpus) 中的节选数据,对其进行加密,并将其加载到 Cloud Storage 中。
学习内容
- 如何使用 Cloud Key Management Service (KMS) 加密数据并管理加密密钥。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
任务 1. 创建 Cloud Storage 存储桶
要存储本实验的数据,您需要创建自己的 Cloud Storage 存储桶。
- 为您的 Cloud Storage 存储桶选择一个名称,例如
-enron_corpus。要详细了解如何为存储桶命名,请参阅 Cloud Storage 存储桶命名准则。在 Cloud Shell 中运行以下命令,以便将一个变量设置为存储桶名称:
- 现在运行以下命令,以创建存储桶:
运行此命令也应有助于验证 gsutil
命令行客户端设置是否正确、身份验证是否正常、是否拥有正在操作的云项目的写入权限。
- 创建存储桶后,继续下一步,即下载安然语料库。
点击检查我的进度以验证是否完成了以下目标:
任务 2. 查看数据
安然语料库是一个大型数据库,包含安然公司 (Enron Corporation) 158 名员工生成的 60 多万封电子邮件。这些数据已被复制到 Cloud Storage 存储桶 gs://enron_emails/
。
- 运行以下命令,在本地下载一份源文件,以便查看其具体内容:
- 现在,
tail
下载后的文件,查证电子邮件文本是否存在:
您应该会看到下面的输出内容:
这时应该会显示一份纯文本邮件文件的内容。您要找到两类文件:纯文本邮件文件和图片文件。如果您有兴趣,可以使用同样的方法查看其他文件的内容。
任务 3. 启用 Cloud KMS
Cloud KMS 是 Google Cloud 上的一项加密密钥管理服务。使用 KMS 之前,您需要在项目中对其进行启用。在本实验中,为您预配的 KMS 应已启用。您可以使用 gcloud
CLI 命令之一来确保这一点。
- 在 Cloud Shell 会话中运行以下命令:
您应该不会收到任何输出内容。现在,您的项目中已启用 Cloud KMS!
任务 4. 创建密钥环和 Cryptokey
要加密数据,您需要创建一个密钥环和一个 CryptoKey。密钥环用于将密钥分组。密钥可以按环境(例如测试、预演和生产环境)或其他概念进行分组。在本实验中,您的密钥环称为 test
,CryptoKey 称为 qwiklab
。
- 在 Cloud Shell 中运行以下命令,以设置环境变量:
- 执行
gcloud
命令,创建密钥环。在本实验中,您将使用全局位置,但也可以设置为特定区域:
- 接下来,使用新密钥环来创建一个名为
qwiklab
的 CryptoKey:
您应该不会看到任何输出内容。这样您就创建了密钥环和 CryptoKey!
- 前往导航菜单 > 安全性 > 密钥管理,通过控制台打开密钥管理。
通过密钥管理网页界面,您可以查看和管理自己的 CryptoKey 和密钥环。您将在日后管理权限时使用此界面。
点击检查我的进度以验证是否完成了以下目标:
任务 5. 加密您的数据
接下来,尝试加密一些数据!
- 将您之前查看的电子邮件内容,通过运行以下命令进行
base64
编码:
使用加密端点,您可以将要加密的 base64 编码文本发送到指定密钥。
- 运行以下命令:
encrypt
操作每次也都会返回一个不同的结果。
响应将是一个 JSON 载荷,其中包含属性 ciphertext
中的已加密文本。
- 数据加密后,您可以将其保存到文件中并上传到 Cloud Storage 存储桶。要从 JSON 响应中抓取已加密文本并将其保存到文件中,可使用命令行实用程序 jq.上一次调用的响应可以传输到 jq,而 jq 可以解析
1.encrypted
文件的ciphertext
属性。运行以下命令:
- 要验证已加密数据能否解密,调用
decrypt
端点来验证解密后的文本与原始电子邮件是否一致。已加密数据中包含用于对其进行加密的 CryptoKey 版本的信息,因此不会向解密端点提供具体版本。运行以下命令:
- 在验证文本已成功加密后,可以将已加密文件上传到 Cloud Storage 存储桶。
点击检查我的进度以验证是否完成了以下目标:
任务 6. 配置 IAM 权限
在 KMS 中需要重点关注两大权限。其一是允许用户或服务账号管理 KMS 资源的权限,另一个是允许用户或服务账号使用密钥加密和解密数据的权限。
管理密钥的权限是 cloudkms.admin
,拥有此权限的任何人都可以创建密钥环,还可以创建、修改、停用和销毁 CryptoKey。加密和解密的权限是 cloudkms.cryptoKeyEncrypterDecrypter
,它用于调用加密和解密 API 端点。
在本练习中,您将使用当前授权用户来分配 IAM 权限。
- 要获取当前授权用户,运行以下命令:
- 接下来,为此用户分配管理 KMS 资源的权限。运行以下
gcloud
命令,分配 IAM 权限以管理刚刚创建的密钥环:
由于 CryptoKey 属于密钥环,而密钥环属于项目,因此,在该层次结构中的上一级拥有特定角色或权限的用户会继承对子资源的相同权限。例如,拥有一个项目 Owner 角色的用户也是该项目中所有密钥环和 CryptoKey 的 Owner。同样,如果用户被授予针对密钥环的 cloudkms.admin
角色,则其对该密钥环中的 CryptoKey 也拥有相关权限。
如果没有 cloudkms.cryptoKeyEncrypterDecrypter
权限,授权用户将无法使用密钥来加密和解密数据。
- 运行以下
gcloud
命令,为所创建的密钥环下的任何 CryptoKey 分配 IAM 权限,从而加密和解密数据:
现在,您可以在密钥管理的“加密密钥”部分查看已分配权限。
- 勾选密钥环名称 (
test
) 旁边的复选框,然后点击右侧信息面板中的主账号。
这将打开一个菜单,在其中可以看到您刚刚添加的密钥环的账号和权限。
任务 7. 使用命令行备份数据
了解如何加密单个文件并获得相关权限之后,您可以运行一个脚本来备份一个目录中的所有文件。在本例中,复制 allen-p 的所有电子邮件,对其进行加密,然后将其上传到 Cloud Storage 存储桶。
- 首先,将 allen-p 的所有电子邮件复制到当前工作目录中:
- 现在,请将以下代码复制并粘贴到 Cloud Shell 中,以便加密 allen-p 目录中的所有文件并将其备份到 Cloud Storage 存储桶:
该脚本会轮询给定目录中的所有文件,使用 KMS API 对其进行加密,然后将其上传到 Cloud Storage。
点击检查我的进度以验证是否完成了以下目标:
脚本执行完成后,当您在控制台的左侧菜单中点击 Storage 时,能查看到已加密的文件。
- 要找到文件,前往导航菜单 > Cloud Storage > 存储桶 > YOUR_BUCKET > allen-p > 收件箱。您应会看到类似下图的界面:
任务 8. 查看 Cloud Audit Logs
Google Cloud Audit Logging 包括两个日志流:管理员活动和数据访问权限,它们是 Google Cloud 服务生成的,可帮助您回答“哪些用户何时在何处对您的 Google Cloud 项目执行过哪些操作”的问题。
- 要查看 KMS 中任何资源的活动,请前往导航菜单 > Cloud 概览 > 活动标签页。此操作会将您转到 Cloud 活动界面,然后点击查看 Log Explorer,选择 Cloud KMS 密钥环作为
资源类型
,您应该会看到对密钥环进行的创建和所有修改操作。
现在,您已经使用 KMS 和 Cloud Storage 加密和上传了数据!
本实验的内容
- 使用 IAM 管理 KMS 权限。
- 使用 KMS 加密数据。
- 使用 Cloud Storage 存储已加密数据。
- 使用 Cloud Audit Logs 查看 CryptoKey 和密钥环的所有活动。
任务 9. 知识测验
测试一下您对 Cloud KMS 的了解程度吧。
恭喜!
您学习了如何使用 Cloud Key Management Service (KMS) 加密数据并管理加密密钥。
后续步骤/了解详情
上次更新手册的时间:2024 年 4 月 15 日
上次测试实验的时间:2023 年 8 月 31 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。