You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Heroku托管的数据库添加身份验证以保障数据安全

Heroku Hobby层级数据库添加访问鉴权的可行方案

首先明确:Hobby层级的Heroku数据库默认不提供原生的API密钥访问控制能力,但你可以通过以下几种低成本方案实现需求,大部分场景下无需升级付费套餐:

方案1:后端服务层添加API密钥校验(最推荐,零额外成本)

所有数据库请求统一经过你的后端服务转发,不要直接暴露数据库公网访问地址,在服务层做鉴权逻辑即可:

  • 在Heroku应用控制台的「Settings」-「Config Vars」中添加环境变量,键名可设为ALLOWED_API_KEYS,值为你生成的随机32位以上字符串作为API密钥,多个密钥用英文逗号分隔
  • 后端代码新增全局拦截逻辑,所有接口请求首先校验请求头X-API-Key携带的密钥是否在允许的列表中,校验通过才执行后续数据库操作,否则直接返回401未授权响应
  • 示例核心逻辑(Node.js):
const allowedApiKeys = process.env.ALLOWED_API_KEYS.split(',');
// 全局拦截器
app.use((req, res, next) => {
  const requestKey = req.headers['x-api-key'];
  if (!requestKey || !allowedApiKeys.includes(requestKey)) {
    return res.status(401).json({ error: '无效的API密钥' });
  }
  next();
});

方案2:关闭数据库公网访问,仅允许自有后端访问

如果不需要对外直接开放数据库连接,直接关闭公网权限即可从根源避免公开访问问题:

  • 安装Heroku CLI后,执行命令heroku pg:access:deny public --app <你的Heroku应用名>
  • 操作完成后,只有同账号下部署的Heroku应用可以通过内部网络访问数据库,所有外部直接连接数据库的请求都会被拦截,所有数据操作只能通过你的后端服务触发,天然避免未授权访问

方案3:升级付费套餐实现更精细化管控

如果需要直接对外开放数据库访问能力,可以升级到Heroku Postgres的Basic及以上付费层级,支持IP白名单配置,仅允许你指定的IP地址段连接数据库,也可以配合第三方鉴权中间件实现更复杂的访问控制。

注意事项

  • 所有敏感信息(数据库连接串、API密钥等)不要硬编码在代码仓库中,统一存储在Heroku Config Vars环境变量中,避免泄露
  • API密钥建议使用密码生成工具生成随机无规律字符串,不要使用简单易猜的内容

内容的提问来源于stack exchange,提问作者Tino90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:09:00