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

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

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 项目。当然,如果你有更好方法可以后台给小闫留言,不胜感激。

目录
打赏
0
0
0
0
6
分享
相关文章
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
409 0
利用环境变量管理敏感信息
【10月更文挑战第16天】在软件开发中,环境变量是管理敏感信息如API密钥、数据库密码等的安全方式,避免了将这些信息硬编码在源代码中。本文介绍了环境变量的概念、优势及如何在应用中实施,包括本地开发、CI/CD流程和云服务中的应用,以及实战技巧和最佳实践。
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
1141 85
人工智能在医学领域的应用
人工智能在医学领域的应用广泛,涵盖医学影像分析、医疗数据分析与预测、临床决策支持、药物研发、自然语言处理及智能健康管理等方面。它能提高诊断准确性,预测疾病风险与进展,优化治疗方案,加速药物研发,提升手术安全性,并实现个性化健康管理,有效推动了医疗科技的进步。
ly~
442 3
如何经济高效使用云存储网关对接OSS存储
存储网关是一款可以为OSS存储提供文件访问接口的产品,从而用户可以像使用NAS一样在Windows/Linux操作系统里面直接挂载OSS进行使用。众所周知,OSS存储具有多种存储类型。那么对于所有的存储类型,云存储网关是否都适用呢?本文将围绕这一话题,展开一些探讨。
333 0
Django(五):如何在Django中通过API提供数据库数据给前端
Django(五):如何在Django中通过API提供数据库数据给前端
338 9
转行做 IT 多数在 30 岁+、43%程序员每天一半时间不在编码,最新开发者生态系统现状报告发布!...
为了洞察开发者及其技术的最新趋势,行业中领头的 Java IDE IntelliJ IDEA、Kotlin 编程语言背后的软件工具开发公司 JetBrains 在调研了来自全球 26,348 位开发者后,最新发布了《2023 开发者生态系统现状》(https://www.jetbrains.com/zh-cn/lp/devecosystem-2023/)。
从 Google play 商店直接下载 apk 安装包
从 Google play 商店直接下载 apk 安装包
712 0
An动画基础之元件的图形动画与按钮动画
An动画基础之元件的图形动画与按钮动画
480 0
An动画基础之元件的图形动画与按钮动画

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等