生产环境隐藏敏感配置信息方案

简介: 项目上线时需要切换生产环境配置信息,这些信息可以直接被保存在项目中吗?如果保存下来,不小心提交到仓库或被破解查看,生产环境岂不是裸奔?那么该如何解决?

1.演示环境

本文以 Flask 项目为例说明,简单环境信息:

1) Flask + Flask-RESTful

2) CentOS

2.方案

一般配置信息都保存在指定目录下,分为测试、开发以及生产。其中测试与开发配置文件的保留,问题不大,关键就是生产环境配置信息如何处理。

1) 可以在 .gitignore 文件中添加忽略文件,使其不被提交到仓库。

虽然不在仓库内,但是配置文件仍然在项目中

2) 可以通过添加环境变量的方式解决。推荐指数5颗星 ~

3.方案实施

可以保留项目中开发(测试)环境配置文件,将需要修改的数据库配置项等单独在生产环境配置文件中重写,并配置环境变量(生产配置文件路径)。然后在项目加载默认配置信息后,通过环境变量引入生产配置信息,从而覆盖掉无用配置,隐藏敏感信息。这样我们的生产信息既不在仓库内,也不在项目中,而是在服务器某个角落。项目中的配置信息都是本地配置项,被人知道也无妨,保留后还能造成迷惑。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

3.1 在服务器任意目录下存放生产环境配置信息

生产配置文件 app_deploy.py 中既可以保存 MySQLRedisElasticsearch 数据库集群信息,还可以保存私钥等敏感信息。

比如我们将其存放在如下路径:


/root/config/app_deploy.py

3.2 配置环境变量

在部署项目的 shell 脚本中添加如下信息:


export TOUTIAO_APP_SETTING=/root/config/app_deploy.py

3.3 设置常量保存环境变量名

在项目如下文件中:


.../common/utils/constants.py

添加常量信息:


GLOBAL_SETTING_ENV_NAME = 'TOUTIAO_APP_SETTING'

3.4 在项目初始化文件中加载环境变量

from flask import Flask
def create_flask_app(config, enable_config_file=False):
    """
    创建 Flask 应用
    :param config: 配置信息对象
    :param enable_config_file: 是否允许运行环境中的配置文件覆盖已加载的配置信息
    :return: Flask 应用
    """
    app = Flask(__name__)
    app.config.from_object(config)
    if enable_config_file:
        from utils import constants
        app.config.from_envvar(constants.GLOBAL_SETTING_ENV_NAME, silent=True)
    return app

以上只是本人在实际项目中的一个小应用,可以类比去设置 Django 项目。当然,如果你有更好方法可以后台给小闫留言,不胜感激。

相关文章
|
域名解析 Kubernetes Java
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
4302 1
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
|
6月前
|
存储 监控 安全
内网屏幕监控软件的数据存储与管理:使用SQLite数据库保存监控记录和配置信息
在当今数字化时代,安全和监控在企业和组织中变得至关重要。内网屏幕监控软件作为一种关键工具,帮助组织监视员工的活动并确保信息安全。这种软件不仅需要高效地记录和管理监控数据,还需要能够方便地进行配置和调整。本文将讨论如何使用SQLite数据库来保存监控记录和配置信息,并介绍如何通过自动化机制将监控到的数据提交到指定网站。
232 2
|
4月前
|
缓存 监控 NoSQL
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
|
6月前
|
存储 监控 安全
设置云存储环境:步骤与考虑因素
【5月更文挑战第31天】在数字化时代,云存储成为企业和个人的关键需求。设置云存储涉及确定存储需求(如数据类型、量、访问频率),选择可靠的服务提供商(考虑信誉、安全、性能和价格),配置环境(创建账号、设置权限、选择存储区),制定备份和恢复策略,确保数据安全(如加密、双因素认证)以及成本管理。持续监控和维护也是必不可少的,以适应技术发展并保持高效、安全的云存储环境。
80 0
|
6月前
|
弹性计算 运维 Ubuntu
自动检测并处理系统更新
【4月更文挑战第30天】
123 0
|
前端开发
案例04-生产环境App打包未关联云空间导致用户不能自动升级
案例04-生产环境App打包未关联云空间导致用户不能自动升级
案例04-生产环境App打包未关联云空间导致用户不能自动升级
漏刻有时基础环境状态4个指标选项的更改说明
漏刻有时基础环境状态4个指标选项的更改说明
50 0
|
调度 计算机视觉 异构计算
可用的SRIO RapidIO (SRIO)验证平台
目前具备SRIO接口的硬件不多,推荐广州星嵌电子科技有限公司开发的DSP+FPGA+RAM开发板: http://web.xines.cn/pingguban/28.html ,也可用于评估EMIF等接口。
可用的SRIO RapidIO (SRIO)验证平台
|
存储 安全 文件存储
善用“忽略删除”确保文件网关数据安全
作为用户本地存储和阿里云存储的桥梁,混合云网关将用户本地有限的存储容量,扩充到了云上的海量存储。文件网关为用户提供了拥有海量存储的共享文件系统。除了基本的文件存储功能,文件网关还提供了一些有意思的小功能。“忽略删除”就是其中一个。
951 0
善用“忽略删除”确保文件网关数据安全