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

在DigitalOcean云虚拟机部署应用时,如何安全保护API密钥?

DigitalOcean虚拟机API密钥安全防护方案

针对多人访问虚拟机导致.env密钥泄露的风险,以下是几个落地性强的防护方案:

1. 用DigitalOcean Secrets Manager替代本地.env文件

  • 把Stripe、Auth0、AWS等API密钥上传到DigitalOcean官方的Secrets Manager,彻底替换本地.env文件。
  • 启动应用时通过DO CLI或API拉取密钥并注入环境变量,示例命令:
    export STRIPE_KEY=$(doctl secrets retrieve STRIPE_KEY --format Value --no-header)
    export AUTH0_SECRET=$(doctl secrets retrieve AUTH0_SECRET --format Value --no-header)
    node app.js
    
  • 给团队成员分配精细化权限:比如仅运维负责人能修改密钥,普通成员无密钥查看权限,从根源减少接触密钥的人数。

2. 锁死虚拟机的访问权限

  • 彻底关闭密码登录,强制使用专属SSH密钥登录,每人用自己的密钥,绝对禁止共享。
  • 在DigitalOcean控制台的团队管理中,给不同成员分配最低必要权限:比如产品、测试人员仅能用普通用户登录虚拟机,无sudo权限;仅运维人员可获取root权限。
  • 给虚拟机控制台和SSH登录都开启2FA,就算密钥泄露,没有二次验证也无法登录。

3. 应用启动时动态注入密钥

  • 如果用systemd管理应用,直接在服务配置文件中从Secrets Manager拉取密钥,示例在/etc/systemd/system/app.service中添加:
    ExecStartPre=/bin/bash -c 'export STRIPE_KEY=$(doctl secrets retrieve STRIPE_KEY --format Value --no-header)'
    ExecStart=/usr/bin/node /path/to/app.js
    
    随后将该service文件权限设为600,仅root可读取。
  • 禁止在任何本地配置文件中硬编码密钥,所有敏感信息均从安全存储动态获取。

4. 监控+定期轮换密钥

  • 开启DigitalOcean的审计日志,追踪所有访问Secrets Manager和虚拟机的操作,一旦出现非授权密钥读取请求,立即告警。
  • 每隔3-6个月强制轮换所有API密钥,直接在Secrets Manager中更新即可,无需修改应用代码,即便之前存在泄露风险也能及时止损。

5. 彻底清理虚拟机里的敏感痕迹

  • 用shred -u .env彻底删除旧的.env文件,比普通rm更安全,防止数据被恢复。
  • 禁止在命令行直接输入密钥,避免被history记录,可使用read -s读取敏感内容或直接从Secrets Manager拉取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:36:22