入门 Eva J Patel(freeCodeCamp) 2026-09-10 16:14:02 · 1 阅读

第22章 环境变量、密钥与 API Key 管理

AI 应用通常依赖外部服务,而这些服务往往需要 API key。

例如:

API_KEY
DATABASE_URL
MODEL_ENDPOINT

这些值可能非常敏感。

切勿将它们当作普通源代码处理。

危险的做法

不要这样做:

API_KEY = "123456789-secret"

如果仓库是公开的,凭证就已经泄露了。即使之后删掉这行代码,密钥仍可能残留在仓库历史或其他副本中。

环境变量

更好的做法是:

import os

api_key = os.getenv("API_KEY")

代码从环境中读取值,密钥本身不会保存在源文件里。

.env 文件

本地开发时,可以使用 .env 文件。

例如:

API_KEY=your-secret-key

然后用 python-dotenv 之类的包来加载它。

from dotenv import load_dotenv
import os

load_dotenv()

api_key = os.getenv("API_KEY")

切勿提交 .env

将它加入 .gitignore

.env

这样可以防止 Git 追踪本地的密钥文件。

环境变量与密钥

这两个概念关系密切。

环境变量是提供给应用的配置值;密钥则是必须加以保护的敏感配置值。

举例:

PORT=7860

属于配置。

API_KEY=...

属于敏感信息。

校验必需的密钥

如果应用缺少某个密钥就无法运行,就应当校验它的存在。

api_key = os.getenv("API_KEY")

if not api_key:
    raise RuntimeError(
        "API_KEY is not configured."
    )

这样能在启动时给出明确的错误提示,避免后续出现难以排查的故障。

不要打印密钥

要避免:

print(api_key)

尤其是在日志中。

日志可能被存储或泄露。

密钥轮换

如果不小心发布了密钥,光删除代码是不够的。

你应该立即吊销或轮换该凭证。

要假定已发布的密钥已经泄露。

部署环境中的密钥

托管平台通常都提供安全的配置机制。

对于 Hugging Face Spaces,应使用平台自带的密钥管理功能来配置敏感信息,而不是直接提交到代码仓库。

多环境配置

本地环境和生产环境可以使用不同的凭证。

例如:

Development API key
Production API key

这种分离很有用,可以避免开发测试意外消耗生产环境的资源。

不要把密钥写进前端代码

如果你开发的是浏览器端应用,交付给浏览器的任何内容都应视为对用户可见。

API 密钥不应内嵌在客户端 JavaScript 中,敏感凭证应保存在服务端。

动手试一试

创建一个简单的 Gradio 应用,从环境变量中读取:

MY_APP_NAME

然后再添加一个变量:

API_KEY

但不要显示它的值,而是显示:

API key configured: Yes

或者:

API key configured: No

这样可以在不暴露凭证的前提下练习密钥处理。

要点总结

  • 绝不把 API 密钥硬编码到源代码中。

  • 用环境变量管理配置。

  • 本地开发可适当使用 .env 文件,但绝不能提交到仓库。

  • 生产环境的密钥使用托管平台的密钥管理工具存储。

  • 不要打印密钥。

  • 凭证一旦意外泄露,立即轮换。

  • 切勿认为客户端代码可以安全地存放机密凭据。

评论 (0)