如何部署Streamlit应用并向终端用户隐藏私有API密钥?
部署Streamlit应用时隐藏API密钥的可行方案
本地部署场景
- 使用环境变量:在本地终端临时设置环境变量,Windows执行
set API_KEY=你的私有密钥,Linux/macOS执行export API_KEY=你的私有密钥,代码中通过os.getenv("API_KEY")读取密钥。同时创建.env文件存储密钥(格式为API_KEY=你的私有密钥),并将.env加入.gitignore,防止提交到代码仓库。 - Streamlit本地Secrets文件:在项目根目录创建
.streamlit/secrets.toml文件,写入API_KEY = "你的私有密钥",同样将.streamlit/目录加入.gitignore,代码中用st.secrets["API_KEY"]读取密钥。
云平台部署场景(Heroku、AWS、GCP等)
- 平台内置Secrets管理工具:
- Heroku:在控制台的应用设置中添加Config Vars,键为
API_KEY,值为你的私有密钥,代码中通过os.getenv("API_KEY")读取。 - AWS/GCP:使用各自的Secrets Manager服务存储密钥,部署时配置应用从服务中拉取密钥,或通过平台的环境变量注入功能传递密钥。
- Heroku:在控制台的应用设置中添加Config Vars,键为
- Streamlit Community Cloud:直接在应用的设置页面添加Secrets,代码中用
st.secrets["API_KEY"]读取,密钥不会暴露在代码或仓库中。
通用安全原则
- 绝对不要将API密钥硬编码到代码中,也不要提交到Git等版本控制系统。
- 避免在应用日志、输出内容中打印密钥,防止意外泄露。
- 给API密钥配置最小权限,仅赋予应用所需的访问权限,降低泄露后的风险。
内容的提问来源于stack exchange,提问作者Dsto4
相关产品推荐
相关产品推荐

