arrow_back

借助 Gemini 制定安全决策

登录 加入
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

借助 Gemini 制定安全决策

Lab 45 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

概览

Gemini for Google Cloud 是一款始终在线的 AI 协作工具,可为各种技能水平的用户提供帮助。在本实验中,您将学习如何使用 Security Command Center 的 Gemini 功能找出并修复 Google Cloud 环境中的安全配置错误。

注意:Duet AI 已更名为 Gemini,这是我们的新一代模型。此实验已更新,以反映此变化。在按照实验说明操作时,界面或文档中任何提到 Duet AI 的地方都应视为指的是 Gemini。 注意:作为一项尚处于早期发展阶段的技术,Gemini 可能会生成看似合理但实际上不正确的输出。我们建议您先验证 Gemini 的所有输出,然后再使用。如需了解详情,请参阅适用于 Google Cloud 的 Gemini 和 Responsible AI

目标

在本实验中,您将学习如何执行以下任务:

  • 在 Google Cloud 项目中启用 Gemini
  • 将示例工作负载部署到 Google Cloud 环境中
  • 使用 Gemini 找出安全配置错误
  • 使用 Gemini 修复安全配置错误

场景

为了改善安全状况,在您监控基础设施的过程中,Gemini 能帮您确定实施哪些基础设施或配置变更可防止将来出现问题。

在这个例子中,假设您是一家电子商务公司的安全工程师,该公司会定期部署托管式 Kubernetes 集群。您需要找到一种方式来查看是否存在任何配置错误,还需要获得一些简短的说明来帮助解决云环境中的这些问题。

设置和要求

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 请使用无痕式窗口登录 Qwiklabs。

  2. 留意实验的访问时限(例如 1:15:00)并确保能在相应时间段内完成实验。
    系统不提供暂停功能。如有需要,您可以重新开始实验,不过必须从头开始。

  3. 准备就绪时,点击开始实验

  4. 请记好您的实验凭据(用户名密码)。您需要使用这组凭据来登录 Google Cloud 控制台。

  5. 点击打开 Google 控制台

  6. 点击使用其他帐号,然后将实验的凭据复制并粘贴到相应提示框中。
    如果您使用其他凭据,将会收到错误消息或产生费用

  7. 接受条款并跳过恢复资源页面。

任务 1. 启用 Gemini

首先要在 Google Cloud 项目中启用 Gemini,并为 Google Cloud Qwiklabs 用户账号配置必要的权限。

  1. 点击 Google Cloud 控制台工具栏右上角的 Cloud Shell 图标 (Cloud Shell 图标)。

  2. 如需设置项目 ID 和区域环境变量,请运行以下命令:

PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|lab region}}} echo "PROJECT_ID=${PROJECT_ID}" echo "REGION=${REGION}"
  1. 如需将已登录的 Google 用户账号存储到环境变量中,请运行以下命令:
USER=$(gcloud config get-value account 2> /dev/null) echo "USER=${USER}"
  1. 在系统提示时点击授权

  2. 为 Gemini 启用 Cloud AI Companion API:

gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID}
  1. 如需使用 Gemini,请为您的 Google Cloud Qwiklabs 用户账号授予必要的 IAM 角色:
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer

添加这些角色后,用户即可开始使用 Gemini 助手。

点击检查我的进度以验证您已完成的任务。 启用 Gemini

任务 2:创建 GKE 集群并部署 Web 应用

现在,您将创建一个运行少量微服务的 Google Kubernetes Engine (GKE) 集群。

  1. 运行以下命令,创建一个名为 test 的 GKE 集群:
gcloud container clusters create test --region={{{project_0.default_region|lab region}}} --num-nodes=1

这应该需要几分钟才能完成。完成后,您应该会看到与以下内容类似的结果:

Creating cluster test in {{{project_0.default_region|lab region}}}... Cluster is being health-checked (master is healthy)...done. Created [https://container.googleapis.com/v1/projects/agmsb-gke-lab/zones/us-central1/clusters/test]. To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1/test?project=agmsb-gke-lab kubeconfig entry generated for test. NAME: test LOCATION: {{{project_0.default_region|lab region}}} MASTER_VERSION: 1.27.3-gke.100 MASTER_IP: 34.66.224.143 MACHINE_TYPE: e2-medium NODE_VERSION: 1.27.3-gke.100 NUM_NODES: 3 STATUS: RUNNING
  1. 现在,克隆一个包含 Web 应用代码的仓库:
git clone https://github.com/GoogleCloudPlatform/microservices-demo && cd microservices-demo
  1. 使用 kubectl 将一组微服务部署到 GKE 集群:
kubectl apply -f ./release/kubernetes-manifests.yaml
  1. 几分钟后,运行以下命令来获取公共 IP 地址,以便在浏览器中访问相应的 Web 应用:
kubectl get service frontend-external | awk '{print $4}'
  1. 从上述命令的输出中复制 IP 地址,并将其粘贴到新的浏览器标签页中。

您应该会看到一个与下面类似的 Web 应用:

Web 应用

点击检查我的进度以验证您已完成的任务。 创建 GKE 集群并部署 Web 应用

任务 3. 使用 Gemini 找出安全配置错误

现在,您已经有了一个运行电子商务应用的 GKE 集群,您将确定在哪些方面可以利用 Gemini 来改善安全状况。

  1. 返回 Google Cloud 控制台中的标签页。

  2. 刷新 Google Cloud 控制台页面。

  3. 最小化 Cloud Shell 窗格。

  4. 点击 Google Cloud 控制台工具栏右上角的 Gemini 图标 (Gemini 图标)。

  5. 点击开始聊天

  6. 输入以下提示:

对于 GKE 集群中运行的一组微服务,Google Cloud 中的哪些服务可以帮我确定需要改进的安全领域?

Gemini 的回复应该与下面的示例类似:

对于 GKE 集群中运行的一组微服务,Google Cloud 中有多项服务可以帮您确定需要改进的安全领域。其中包括:

  • Security Command Center 可帮助您识别整个 Google Cloud 环境(包括 GKE 集群)中的安全风险并确定其优先级。
  • Cloud Asset Inventory 可以帮助您跟踪和管理 Google Cloud 资源,包括 GKE 集群。
  • Cloud Logging 可帮助您收集和分析 GKE 集群的日志。
  • Cloud Monitoring 可帮助您监控 GKE 集群的性能和健康状况。
Google Cloud 中有很多服务都能帮助您提高微服务的安全性,这些只是其中一小部分。使用这些服务可以帮助您保护数据,防止遭到未经授权的访问,还可以逐步改善安全状况。

在这种情况下,您决定从 Security Command Center 入手。

  1. 打开导航菜单并选择安全 > 风险概览.

面对多张讨论漏洞的可视化图表,您希望 Gemini 帮助您快速了解 Security Command Center 内的漏洞分类。

  1. 输入以下提示:
Security Command Center 是如何定义漏洞的?

Gemini 的回复应该类似于以下内容:

Security Command Center 将漏洞定义为软件程序中的缺陷或弱点,攻击者可利用漏洞来访问或破坏您的 Google Cloud 环境。

资料来源:https://cloud.google.com/security-command-center/docs/finding-classes
  1. 点击文档链接可查看详细的发现结果类别。

  2. 读完相关信息后,关闭标签页并返回 Google Cloud 控制台。

  3. 点击 Google Cloud 控制台边栏中的发现结果

  4. 如需查看 GKE 集群的发现结果,请找到“快速过滤条件”部分,选中“资源类型”下的 Google 容器集群

您应该会看到一些严重级别为“中”的发现结果。

  1. 点击集群 Secret 加密已停用发现结果。

在这个发现结果面板的顶部,您会看到一个标题为“AI 生成的摘要”的部分,其中有一条 Gemini 生成的摘要,内容与下面类似:

Security Command Center 中的 Security Health Analytics 服务在名为 testgoogle.container.Cluster 内发现了类型为 CLUSTER_SECRETS_ENCRYPTION_DISABLED,严重级别为 MEDIUM 的发现结果…

这一发现结果表明集群没有启用应用层 Secret 加密。这意味着敏感数据,例如用户定义的 Secret 和集群操作所需的 Secret(如服务账号密钥),都以明文形式存储在 etcd 中。这存在安全风险,因为获得 etcd 访问权限的攻击者可以读取这些 Secret。

为修复这一发现结果,您需要为集群启用应用层 Secret 加密。为此,您可以进入 Google Kubernetes Engine (GKE) 控制台,点击安全标签页。在“应用层 Secret 加密”下,点击修改应用层 Secret 加密。选中“启用应用层 Secret 加密”复选框,然后选择一个数据库加密密钥。点击保存更改

Gemini 的这份摘要对发现结果的简短描述进行了扩充,更详细地说明了以明文存储 Secret 所存在的问题,并介绍了您可以采取的相应补救措施。

  1. 退出此信息面板。

  2. 接下来,点击权限过高的账号发现结果,查看 Gemini 提供的摘要,内容与下面类似:

Security Command Center 中的 Security Health Analytics 服务在名为 testgoogle.container.Cluster 内发现了类型为 OVER_PRIVILEGED_ACCOUNT,严重级别为 MEDIUM 的发现结果…

造成这一发现结果的原因是,GKE 节点使用了 Compute Engine 默认服务账号,该账号在默认情况下具有广泛的访问权限,这对运行 Kubernetes Engine 集群来说可能权限过高。

这一发现结果表明存在风险,因为 Compute Engine 默认服务账号可以访问项目中的所有资源,包括 GKE 集群。一旦攻击者获得了该服务账号的访问权限,就可以访问相应项目中的所有资源…

此摘要提供了来自 Google 的具体文档,介绍了如何通过为 GKE 集群创建最小权限服务账号来修复该发现结果。

  1. 退出此信息面板。

  2. 最后,点击主节点授权网络已停用发现结果。Gemini 应在面板中提供类似以下内容的回复:

Security Command Center 中的 Security Health Analytics 服务在名为 testgoogle.container.Cluster 内发现了类型为 MASTER_AUTHORIZED_NETWORKS_DISABLED,严重级别为 MEDIUM 的发现结果…

控制平面授权网络通过阻止指定的 IP 地址访问集群的控制平面,来提高容器集群的安全性。

为修复这一发现结果,请前往 Kubernetes 集群并点击修改。如果最近更改了集群配置,修改按钮可能会被停用。如果您无法修改集群设置,请等待几分钟,然后重试。在“控制平面授权网络”下拉列表中,选择已启用。点击添加授权网络。指定您要使用的授权网络。点击保存
  1. 退出此信息面板。

至此,您已经了解了您环境中的一些安全配置错误。接下来,您将利用 Gemini 的建议来修复错误。

任务 4. 修复安全配置错误

现在,您有机会分析多个领域,开始改进 GKE 集群的安全性。接下来,您将使用 Security Command Center 中 Gemini 提供的说明,修复“主节点授权网络已停用”这一发现结果。

  1. 打开导航菜单,依次选择 Kubernetes Engine > 集群

  2. 点击之前创建的集群名称(“test”)。

  3. 向下滚动到网络部分。

  4. 点击控制平面授权网络旁边的铅笔图标。

  5. 选中启用控制平面授权的网络旁边的复选框。

  6. 选中允许通过 Google Cloud 公共 IP 地址访问下方的复选框。

  7. 点击保存更改

  8. 点击边栏中的集群

您会看到集群正在更新,“状态”部分有一个旋转轮图标。

  1. 在控制平面的网络政策更新期间,从 Google Cloud 控制台工具栏打开 Gemini。

  2. 输入以下提示:

控制平面授权网络如何在 GKE 中运行?

Gemini 的回复应该类似于以下内容:

控制平面授权网络允许您限制对 GKE 集群控制平面的访问权限。默认情况下,控制平面可从任何地址访问。不过,您可以添加一个或多个授权网络,以仅允许访问这些网络。

如需添加授权网络,请访问 Google Cloud 控制台中的 Google Kubernetes Engine 页面。点击要修改的集群的名称。在“网络”下的“控制平面授权网络”字段中,点击“修改控制平面授权网络”…

更新后的控制平面政策可能需要几分钟才能生效。

  1. 一旦在集群旁边的状态列中看到绿色对勾标记,即表示已成功更新集群配置。

点击检查我的进度以验证您已完成的任务。 修复安全配置错误

结束实验

完成实验后,请点击结束实验。Qwiklabs 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交

星级的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。