T
traeai
登录
返回首页
Google Cloud Blog

保护您的Gemini和Google API密钥

8.5Score
保护您的Gemini和Google API密钥

TL;DR · AI 摘要

本文提供了保护Google Gemini和API密钥的三个关键步骤:生成受限密钥、设置应用限制和安全存储,以防止密钥泄露和滥用。

核心要点

  • 创建API密钥时必须限制API访问和服务,避免无限制密钥(默认无限制需手动配置)
  • 为不同应用类型(如网站、iOS、Android)分别创建专用密钥,防止跨平台滥用
  • 使用密钥时需存储在独立项目中,并通过gcloud CLI或控制台进行严格权限管理

结构提纲

按章节快速跳转。

  1. 说明API密钥的重要性及泄露风险,强调安全配置的必要性

  2. 指导在Google Cloud控制台或CLI创建密钥,并强调必须限制API和服务范围

  3. 详细说明如何通过控制台或CLI设置API访问白名单,避免无限制密钥

  4. 介绍针对网站、IP、移动应用等不同场景设置访问限制的具体方法

  5. 强调密钥应存储在独立项目中,禁止与个人身份绑定,并建议监控机制

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • API密钥安全防护
    • 密钥生成
      • 限制API服务范围
      • 独立项目隔离
    • 访问控制
      • 应用类型限制
      • 网络地址白名单
    • 存储与监控
      • 禁止明文存储
      • 使用监控仪表盘

金句 / Highlights

值得收藏与分享的关键句。

  • 不要创建无限制的API密钥,否则会被攻击者滥用所有服务(默认创建的密钥无限制需手动配置)

    API Restrictions章节

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 为每个应用类型创建专用密钥:网站需URL白名单,移动应用需Bundle ID和证书指纹验证

    Application Restrictions章节

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 密钥泄露后影响范围(blast radius)与限制配置成反比:限制越细粒度,损失越可控

    Step 1章节

    ⬇︎ 下载 PNG𝕏 分享到 X
#API安全#Google Cloud#Gemini#密钥管理
打开原文

如今,AI 服务高度依赖 API 密钥。用户通过提供 API 密钥来运行 AI 代理,这些密钥代表付费代币、订阅或付费账户。虽然 API 密钥易于使用,但同样容易被不安全地使用。一旦密钥被盗用,攻击者将利用其访问权限对您的环境进行滥用或恶意操作。

在看到 r/googlecloud 论坛中有人请求教程以保护自身安全的讨论后,我决定撰写这篇博文。本文将介绍几个简单步骤,帮助您降低风险并提升 Google 创建的 API 密钥的安全性

您使用 Google API 密钥访问 Gemini 和其他 Google AI 产品以及 Google Cloud API。实际上,Gemini API 密钥本质上是 Google 标准 API 密钥。虽然本文聚焦于 Google API 密钥的安全性,但部分建议同样适用于其他平台的 API 密钥和产品令牌。

第一步:生成新 API 密钥

无论从何处开始操作,最终都需要在 Google Cloud 项目中创建新 API 密钥。您可能通过 Cloud 控制台的 "API 与服务" 菜单下的 凭证页面进行操作。

图片 1: https://storage.googleapis.com/gweb-cloudblog-publish/images/api_services_credentials.max-1000x1000.png

或者使用 gcloud services api-keys create 命令。无论通过何种界面,您需要完成以下操作:

  • 在专用于此目的的独立项目中创建密钥。
  • 限制新 API 密钥的 API 访问范围和客户端应用。

这些步骤可缩小密钥的潜在影响范围,并在出现问题时简化故障排查

API 限制

API 限制定义了密钥可访问的服务范围。切勿创建无限制密钥,因为被盗密钥将允许攻击者以您的名义访问所有可用服务。

始终将密钥的用途限制为特定服务列表,以减少密钥泄露或暴露后的潜在损害(即影响范围)。注意通过间接 UI 创建密钥时的限制。例如,Firebase 创建的 API 密钥仅限于 24 个 API(如 Datastore、Firestore、Cloud SQL Admin 等),而您可能并不需要全部。

图片 2: https://storage.googleapis.com/gweb-cloudblog-publish/images/api_key_restrictions.max-800x800.png

当为 AI Studio 创建 API 密钥时,应将其限制为仅“Gemini API”。

注意事项:

  • 新密钥默认无任何限制。
  • 若在选择 API 时未找到目标服务,可能是因为该 API 未在当前 Google Cloud 项目中启用。请前往控制台的 API 库启用所需 API。
  • 您可通过 Cloud 控制台或 gcloud CLI 完成所有操作。其他界面(如 Firebase)可能无法提供完整的 API 密钥参数控制。

应用限制

类似 API 限制对服务范围的约束,应用限制可限定哪些应用可使用密钥。例如,若为 Google AI Studio 创建的 API 密钥设置应用限制为网址 "https://aistudio.google.com/",则可防止自动化脚本通过 Gemini 消耗大量代币。

您可以设置以下一种或多种限制类型:

  • 网站/网页应用:通过 URL 列表
  • 服务:通过 IPv4/IPv6 地址或子网掩码列表
  • iOS 应用:通过 Bundle IDs 列表
  • Android 应用:通过包名与证书指纹对列表

注意:密钥只能限制为一种应用类型。建议为每种应用类型创建专用密钥。这有助于监控密钥使用情况并调查潜在泄露问题。

第二步:存储 API 密钥

需要再次强调,API 密钥与您的身份无关。任何人都可以使用它。因此,安全存储密钥与第一步的使用限制同样重要。

基本原则:绝不要将密钥存储在容易暴露的位置

若在应用中使用 API 密钥,请将其存入 Secret Manager 或类似密钥管理服务。Secret Manager 可轻松将 API 密钥注入 Cloud RunGKE 环境。如需进一步提升保护,可在代码中直接读取密钥。参考文档示例

如果你在外部应用程序中使用API密钥 如果应用程序要求你手动输入密钥,请额外检查该应用程序如何管理你的密钥。你需要了解密钥的存储方式以及它在请求中的使用方式。对于Web应用程序,可以通过浏览器开发者工具检查应用流量,确保密钥从未通过未加密的通信通道发送。例如,Google AI Studio使用加密本地存储并通过TLS加密通道传输密钥。

当出现问题时

如果你怀疑密钥泄露该怎么办? 处理方式与丢失信用卡类似。第一步——删除密钥。你可以在Cloud控制台或通过gcloud services api-keys delete命令完成此操作。如果发现是误报,30天内可通过undelete恢复密钥。

如果不知道哪个密钥泄露了? 此时需要分两步调查:

  1. 查找组织或项目中的所有API密钥
  2. 检查该密钥允许访问的API的调用图

查找所有API密钥

有多种方法可以定位你的API密钥资源。你可以在Cloud控制台的资产清单中过滤仪表板的资源类型,查看apikeys.Key。若未看到该资源类型,点击“View more…”展开列表。注意,列表会显示已删除的API密钥。

若偏好命令行且已知具体项目,可使用gcloud services api-keys list命令

要查看组织内所有活跃密钥,需使用gcloud asset search-all-resources命令,并通过查询JSON输出过滤已删除密钥:

查看API调用情况

可通过Cloud Monitoring的指标serviceruntime.googleapis.com/api/request_count追踪API密钥的使用情况。该指标显示不同服务的调用次数。要查看特定API密钥的请求次数,需使用指标标签credential_id并按API密钥的唯一ID过滤。可通过Metric explorer查看指标数据,或使用Monitoring API结合以下PromQL表达式:

还可通过service_name标签使用API名称(如mapstools.googleapis.com)进一步过滤该指标。

要获取API密钥ID,可使用以下方法之一:

  • 通过Cloud控制台:打开凭证页面,选择目标API密钥。浏览器地址栏会显示类似https://console.cloud.google.com/apis/credentials/key/[KEY_ID]?project=[PROJECT_ID]的URL。复制[KEY_ID]部分。
  • 通过gcloud CLI:运行gcloud services api-keys list --format='value(displayName,uid)'命令,根据显示名称找到密钥,复制对应的UID。

API调用异常激增通常表明密钥已被泄露并被恶意方使用。

第3步:API密钥管理规范

无论你是工程师、有经验的云用户,还是刚开始实验,保持良好的API密钥管理习惯都能有效避免环境被劫持。

如果你已使用Google API密钥,请立即执行以下操作:

  • 查找所有拥有的API密钥
  • 删除不再使用或无法识别的密钥(30天内可恢复)
  • 将密钥限制为仅允许访问所需的API。尽可能缩小可调用API的客户端范围
  • 如果管理Google Cloud项目或组织,建议设置apikeys.googleapis.com/Key组织策略以最小化密钥管理复杂度
  • 定期轮换(刷新)API密钥,用新创建的(具有相同限制条件)密钥替换旧密钥。但需提前更新所有使用现有密钥的位置,避免意外中断应用或突然失去访问权限

总结

保护API密钥是用户的职责。通过实施严格的API和应用限制、使用安全存储方案以及主动监控API调用,可有效防止未经授权的访问。这些安全实践不仅能保护开发环境免受劫持,还能避免因意外账单产生的财务风险。

其他推荐操作:

  • 动手实践 Codelab: 通过尝试 Secret Manager 的 PythonSpring Boot Codelab,在引导式环境中练习安全获取凭据。

深入文档学习: 了解如何通过 选择指标创建图表设置告警 来监控您的 API 使用情况。

发布于

AI 可能会生成不准确的信息,请核实重要内容