保护您的Gemini和Google API密钥

TL;DR · AI 摘要
本文提供了保护Google Gemini和API密钥的三个关键步骤:生成受限密钥、设置应用限制和安全存储,以防止密钥泄露和滥用。
核心要点
- 创建API密钥时必须限制API访问和服务,避免无限制密钥(默认无限制需手动配置)
- 为不同应用类型(如网站、iOS、Android)分别创建专用密钥,防止跨平台滥用
- 使用密钥时需存储在独立项目中,并通过gcloud CLI或控制台进行严格权限管理
结构提纲
按章节快速跳转。
- §引言
说明API密钥的重要性及泄露风险,强调安全配置的必要性
指导在Google Cloud控制台或CLI创建密钥,并强调必须限制API和服务范围
详细说明如何通过控制台或CLI设置API访问白名单,避免无限制密钥
介绍针对网站、IP、移动应用等不同场景设置访问限制的具体方法
强调密钥应存储在独立项目中,禁止与个人身份绑定,并建议监控机制
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- API密钥安全防护
- 密钥生成
- 限制API服务范围
- 独立项目隔离
- 访问控制
- 应用类型限制
- 网络地址白名单
- 存储与监控
- 禁止明文存储
- 使用监控仪表盘
金句 / Highlights
值得收藏与分享的关键句。
不要创建无限制的API密钥,否则会被攻击者滥用所有服务(默认创建的密钥无限制需手动配置)
为每个应用类型创建专用密钥:网站需URL白名单,移动应用需Bundle ID和证书指纹验证
密钥泄露后影响范围(blast radius)与限制配置成反比:限制越细粒度,损失越可控
如今,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 与服务" 菜单下的 凭证页面进行操作。

或者使用 gcloud services api-keys create 命令。无论通过何种界面,您需要完成以下操作:
- 在专用于此目的的独立项目中创建密钥。
- 限制新 API 密钥的 API 访问范围和客户端应用。
这些步骤可缩小密钥的潜在影响范围,并在出现问题时简化故障排查。
API 限制
API 限制定义了密钥可访问的服务范围。切勿创建无限制密钥,因为被盗密钥将允许攻击者以您的名义访问所有可用服务。
始终将密钥的用途限制为特定服务列表,以减少密钥泄露或暴露后的潜在损害(即影响范围)。注意通过间接 UI 创建密钥时的限制。例如,Firebase 创建的 API 密钥仅限于 24 个 API(如 Datastore、Firestore、Cloud SQL Admin 等),而您可能并不需要全部。

当为 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 Run 或 GKE 环境。如需进一步提升保护,可在代码中直接读取密钥。参考文档示例。
如果你在外部应用程序中使用API密钥 如果应用程序要求你手动输入密钥,请额外检查该应用程序如何管理你的密钥。你需要了解密钥的存储方式以及它在请求中的使用方式。对于Web应用程序,可以通过浏览器开发者工具检查应用流量,确保密钥从未通过未加密的通信通道发送。例如,Google AI Studio使用加密本地存储并通过TLS加密通道传输密钥。
当出现问题时
如果你怀疑密钥泄露该怎么办? 处理方式与丢失信用卡类似。第一步——删除密钥。你可以在Cloud控制台或通过gcloud services api-keys delete命令完成此操作。如果发现是误报,30天内可通过undelete恢复密钥。
如果不知道哪个密钥泄露了? 此时需要分两步调查:
- 查找组织或项目中的所有API密钥
- 检查该密钥允许访问的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调用,可有效防止未经授权的访问。这些安全实践不仅能保护开发环境免受劫持,还能避免因意外账单产生的财务风险。
其他推荐操作:
- 了解更多API内容:查阅管理API密钥的最佳实践,并实践搜索和使用Google API。
- 观看教程:观看Google Cloud Tech的使用Secret Manager安全管理Cloud Run密钥视频,了解安全存储方案的实际应用。
- 动手实践 Codelab: 通过尝试 Secret Manager 的 Python 或 Spring Boot Codelab,在引导式环境中练习安全获取凭据。
深入文档学习: 了解如何通过 选择指标、创建图表 和 设置告警 来监控您的 API 使用情况。
发布于