保护您的 OpenAI API 密钥 | Zuplo 博客

作者:API传播员 · 2025-11-05 · 阅读时间:5分钟
本文详细介绍了如何使用Zuplo网关保护OpenAI API密钥,包括创建网关、设置策略、实施多层防护措施如身份验证转换、CORS和IP速率限制,以及支持事件流功能,确保密钥安全并防止滥用。

保护您的 OpenAI API 密钥

随着 OpenAI 的流行,越来越多的开发者开始在应用程序和 SaaS(软件即服务)产品中集成这项技术。然而,随着需求的增加,保护 OpenAI API 密钥免受滥用变得尤为重要。本文将介绍如何通过 Zuplo 网关保护您的 API 密钥,并实施多层防护措施。


使用 Zuplo 网关保护 API 密钥

Zuplo 网关提供了一个安全的环境来存储您的 API 密钥,并通过多层防护机制防止密钥被滥用。

通过 Zuplo,您可以轻松地实现身份验证转换,改变客户端使用的身份验证方法。例如,您可以要求客户使用以下方式进行身份验证:

  • 每个客户使用一个专属的 API 密钥(与您的 OpenAI 密钥不同),以便识别每位客户。
  • 匿名访问:确保请求来自正确的来源,并通过 CORS 和 IP 速率限制等机制进行保护。

创建 Zuplo 网关以保护 OpenAI API 密钥

以下是创建一个简单 Zuplo 网关的步骤,该网关可以在不直接暴露 API 密钥的情况下调用 OpenAI API:

1. 创建新项目并添加路由

  • 总结我的OpenAI完成情况
  • 路径/v1/my补全
  • 方法POST
  • CORS:无 CORS
  • 处理程序URL 重写https://api.openai.com/v1/completions

2. 添加策略设置请求头

在调用 OpenAI 时,需要设置 authorization 标头。具体步骤如下:

  1. 打开 政策 部分,点击 添加政策
  2. 选择 添加或设置请求标头 策略。
  3. 配置策略以从环境变量中读取 API 密钥,例如 OPEN_AI_API_Key

保存更改后,您可以使用以下方式测试:

  • 删除 curl 命令中的授权头。
  • 将请求 URL 替换为您的项目 URL。

Zuplo 会在请求离开时自动添加 API 密钥,从而保护您的密钥安全。


保护 Zuplo 的其他方法

为了进一步增强安全性,您可以选择以下方法:

  1. 用户登录:要求用户通过 Auth0 等服务登录,并在 Zuplo 中使用 Auth0 JWT。
  2. API 密钥服务:使用 Zuplo 的 API 密钥服务为每位用户颁发独立的 API 密钥。
  3. 匿名主机:允许匿名访问,但需添加额外的安全措施,例如指定特定的来源和使用自定义 CORS 策略。

此外,建议添加基于用户或 IP 的速率限制,尤其是在匿名访问的情况下。


使用 Zuplo 支持 OpenAI 的事件流

OpenAI 支持事件流功能,这在 Zuplo 中可以轻松实现。您只需在 OpenAI 的 POST 请求中添加 stream:true 属性即可。

在浏览器中支持 EventSource

如果需要在浏览器中支持 EventSource,可以通过以下步骤实现:

  1. 接收 EventSource 创建的 GET 请求。
  2. 将 GET 请求转换为 POST 请求。
  3. 在 Zuplo 中添加适当的标头和请求正文。

创建新路由

  • 总结我的浏览器事件源OpenAI完成
  • 路径/v1/my浏览器补全
  • CORS:允许所有
  • 处理程序URL 重写https://api.openai.com/v1/completions

配置策略

  1. 重用之前设置授权密钥的策略。
  2. 添加 更改方法策略,将请求方法更新为 POST
  3. 添加 Set Header 策略,将 content-type 标头设置为 application/json
  4. 添加 Set Body 策略,配置请求正文。


自定义策略实现动态请求

您还可以根据 EventSource 的查询字符串动态生成 POST 请求的正文。通过自定义策略读取查询字符串值,并根据这些值设置请求正文。例如:

// 自定义入站策略代码示例
module.exports = async function (context, request) {
  const query = new URLSearchParams(request.query);
  const dynamicValue = query.get('key');
  request.body = JSON.stringify({ key: dynamicValue });
  return request;
};

通过这种方式,您可以灵活地根据需求调整请求内容。


总结

通过 Zuplo 网关,您可以有效保护 OpenAI API 密钥,避免密钥被滥用。同时,Zuplo 提供了多种安全策略和灵活配置选项,能够满足不同场景下的需求。无论是通过身份验证、速率限制还是事件流支持,Zuplo 都能为您的应用提供强大的安全保障。

原文链接: https://zuplo.com/blog/2023/02/27/protect-open-ai-api-keys