Azure OpenAI Proxy API 密钥与安全管理最佳实践:Token 注入、环境变量配置完整清单
2026/8/24 9:15:38 网站建设 项目流程

Azure OpenAI Proxy API 密钥与安全管理最佳实践:Token 注入、环境变量配置完整清单

【免费下载链接】azure-openai-proxyA proxy for Azure OpenAI API that can convert an OpenAI request into an Azure OpenAI request.项目地址: https://gitcode.com/gh_mirrors/azur/azure-openai-proxy

本文为新手完整讲解azure-openai-proxy(Azure OpenAI Proxy)的 API 密钥管理与安全最佳实践:从 6 个环境变量的配置清单、Token 注入的两种机制,到生产环境安全自查清单,一篇讲透,帮你安全地用好这个 OpenAI 请求转 Azure 请求的代理工具。

30 秒了解:azure-openai-proxy 是什么?

azure-openai-proxy 是一个用 Go 语言编写的 API 代理,能把标准的 OpenAI 请求(/v1/chat/completions/v1/completions/v1/embeddings)转换成 Azure OpenAI 请求,让各类开源 ChatGPT 项目直接把 Azure 当作后端使用。

它由AZURE_OPENAI_PROXY_MODE环境变量控制两种运行模式(路由逻辑见main.go):

  • azure(默认,反向代理):充当 OpenAI API 网关,客户端按 OpenAI 格式请求代理,代理负责转发到 Azure
  • openai(正向代理):请求直接发往 OpenAI 官方接口,代理只做透传,适合解决部分地区无法直连 OpenAI 的问题

两种模式默认都监听0.0.0.0:8080

Azure OpenAI Proxy 环境变量配置完整清单

环境变量作用默认值是否必填
AZURE_OPENAI_PROXY_ADDRESS服务监听地址0.0.0.0:8080
AZURE_OPENAI_PROXY_MODE代理模式:azureopenaiazure
AZURE_OPENAI_ENDPOINTAzure 资源地址,形如https://{custom}.openai.azure.com✅ 是(azure 模式)
AZURE_OPENAI_APIVERSIONAzure API 版本2023-03-15-preview
AZURE_OPENAI_MODEL_MAPPER模型名 → 部署名的映射,逗号分隔,如gpt-3.5-turbo=gpt-35-turbo内置两条常见映射
AZURE_OPENAI_TOKEN固定 Azure API 密钥,设置后忽略客户端请求头中的密钥

💡 这些变量都在启动时一次性读取:监听地址与代理模式在main.goinit()中加载,Endpoint、API 版本、模型映射与 Token 则在pkg/azure/proxy.go中加载,修改后需重启进程生效。

Token 注入的两种机制 🔑

理解密钥是如何进入最终请求的,是做好安全管理的前提。

机制一:请求头 Bearer 携带密钥

客户端像调用 OpenAI 一样,在请求头里带上Authorization: Bearer <你的Azure密钥>。代理从该头中提取密钥,替换为 Azure 要求的api-key头,并删除原始Authorization头(改写逻辑见pkg/azure/proxy.go)。

这种方式下密钥由每个客户端各自保管,适合本地开发和调试。

机制二:AZURE_OPENAI_TOKEN 环境变量统一托管

只要设置了AZURE_OPENAI_TOKEN,代理会直接忽略客户端传来的Authorization,统一使用环境变量中的密钥发起请求。

好处很直接:

  • 密钥只存在代理服务器一处,无需分发给任何客户端
  • 客户端可随意更换占位值,轮换密钥时只改一处配置

API 密钥安全管理的 6 条最佳实践 🛡️

1. 密钥绝不写进代码仓库

任何 API 密钥都不应硬编码在源码或提交到版本库中。本项目的设计就是围绕环境变量展开的——请始终用进程环境注入密钥。

2. 生产环境优先用 AZURE_OPENAI_TOKEN 统一注入

团队共享的代理服务,建议一律采用环境变量注入密钥,减少密钥副本数量。但要注意:能访问到代理的人就等同于持有了密钥,所以必须配合网络隔离(见第 3 条),不要裸奔在公网。

3. 给 0.0.0.0:8080 加上网关与 HTTPS

服务默认监听所有网卡,且项目未内置 TLS 支持(Dockerfile中仅EXPOSE 8080)。正式使用前建议:

  • 在代理前架设 Nginx 等反向代理,终结 HTTPS 并做访问控制
  • 防火墙只放行内网或指定来源到 8080 端口
  • 正向代理模式下,将HTTPS_PROXY指向你的 HTTPS 网关,而非 HTTP 地址

4. 留意启动日志会打印 Endpoint

服务启动时会把 Azure Endpoint、API 版本、模型映射等配置写入日志(pkg/azure/proxy.go中可见相关输出)。Token 本身不会被打印,但请求日志包含完整转发 URL。请妥善管理日志权限,避免配置信息随日志扩散。

5. Docker 部署时通过 --env 或密钥管理方案注入

docker run -d -p 8080:8080 --name azure-openai-proxy \ --env AZURE_OPENAI_ENDPOINT=https://{your-resource}.openai.azure.com \ --env AZURE_OPENAI_TOKEN={your-azure-api-key} \ ishadows/azure-openai-proxy:latest

生产环境建议把密钥放入 CI/CD 的 Secrets 或容器平台的密钥管理功能中,而不是明文写进 compose 文件或脚本。

6. 正向代理模式(oai 模式)下密钥仍由客户端保管

AZURE_OPENAI_PROXY_MODE=openai时,代理只做透传(逻辑见pkg/openai/proxy.go),不需要任何 Azure 环境变量,密钥始终留在客户端。这种方式代理侧零密钥、天然更安全,但客户端依旧要避免把密钥写死在代码里。

不同场景的配置速查表

场景推荐做法
本地开发 / 调试请求头 Bearer 传密钥,不设置AZURE_OPENAI_TOKEN
团队内部服务AZURE_OPENAI_TOKEN环境变量注入 + 限制 8080 端口来源
对外提供访问Nginx 终结 HTTPS + Token 环境变量注入 + 网关层鉴权
解决 OpenAI 直连受限设为openai模式,无需任何 Azure 配置

配置问题自查清单 ✅

  • 返回 401 或密钥无效:确认AZURE_OPENAI_ENDPOINT是完整 URL,且用的是 Azure 的 api-key 而非 OpenAI 密钥
  • 模型找不到 / 部署名报错:检查AZURE_OPENAI_MODEL_MAPPER是否配置了模型名=部署名的映射
  • 改配置不生效:环境变量只在启动时读取,改完记得重启
  • 想换监听地址:用AZURE_OPENAI_PROXY_ADDRESS指定,例如127.0.0.1:8080
  • 本地源码构建:clone 仓库后执行go build即可,依赖版本见go.mod
git clone https://gitcode.com/gh_mirrors/azur/azure-openai-proxy

掌握这套「环境变量清单 + Token 双机制 + 网络隔离」的组合拳,你就能让 azure-openai-proxy 在享受便捷的同时,把 API 密钥的安全风险降到最低。

【免费下载链接】azure-openai-proxyA proxy for Azure OpenAI API that can convert an OpenAI request into an Azure OpenAI request.项目地址: https://gitcode.com/gh_mirrors/azur/azure-openai-proxy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询