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

如何为运行在EC2上的Python Flask应用安全存储密钥?

EC2 Flask应用Stripe密钥管理优化方案
  • 方案1:使用AWS Systems Manager Parameter Store(安全性最高,推荐生产环境使用)
    这是AWS原生提供的配置与密钥管理服务,支持加密存储、细粒度权限控制,完全无需手动登录EC2实例设置环境变量,还支持密钥无缝轮换。
    操作流程:
  1. 进入AWS控制台Systems Manager的Parameter Store页面,将3个Stripe密钥分别创建为SecureString类型的参数,默认使用AWS KMS加密即可
  2. 为EC2实例绑定的IAM角色添加对应3个参数的ssm:GetParameter权限
  3. 代码侧安装boto3依赖,直接从Parameter Store拉取配置即可,示例代码:
import boto3
import os

ssm_client = boto3.client('ssm', region_name='你的EC2实例所属区域')

def get_secure_param(param_name):
    return ssm_client.get_parameter(Name=param_name, WithDecryption=True)['Parameter']['Value']

stripe_keys = {
    "secret_key": get_secure_param("/prod/stripe/secret_key"),
    "publishable_key": get_secure_param("/prod/stripe/publishable_key"),
    "webhook_secret": get_secure_param("/prod/stripe/webhook_secret"),
}

后续密钥更新只需在Parameter Store修改即可,无需改动EC2实例内的任何配置。

  • 方案2:使用.env文件配合python-dotenv(小型项目最简方案)
    无需每次手动执行export命令,仅需一次性配置.env文件即可:
  1. 项目中安装python-dotenv依赖
  2. 在项目根目录创建.env文件,写入对应密钥配置:
STRIPE_SECRET_KEY=你的Stripe私有密钥
STRIPE_PUBLISHABLE_KEY=你的Stripe公开密钥
STRIPE_WEBHOOK_KEY=你的Stripe Webhook密钥
  1. 将.env文件添加到.gitignore规则中,避免密钥意外提交到代码仓库
  2. 在Flask启动代码的最开头添加环境变量加载逻辑:
from dotenv import load_dotenv
load_dotenv()

原有读取os.environ的代码无需任何改动,部署时只要将.env文件传到EC2的项目根目录即可生效。

  • 方案3:在systemd服务配置中定义环境变量
    如果你使用systemd管理Flask应用进程,可以直接在服务配置中固定环境变量:
  1. 编辑Flask服务对应的.service文件(默认存放在/etc/systemd/system/目录下)
  2. 在[Service]段落添加如下配置:
Environment="STRIPE_SECRET_KEY=你的Stripe私有密钥"
Environment="STRIPE_PUBLISHABLE_KEY=你的Stripe公开密钥"
Environment="STRIPE_WEBHOOK_KEY=你的Stripe Webhook密钥"
  1. 执行systemctl daemon-reload重载配置,再重启Flask服务即可生效,无需手动登录实例导出环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:15:03