如何使用python-dotenv解决代码与敏感信息的分离

如何使用python-dotenv解决代码与敏感信息的分离

目录

python-dotenv

flask配置最佳实践

总结

“12-Factor” 是构建SaaS服务的一种方法论,这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

其中有一条很重要的原则是关于配置的, 12-Factor 要求代码和配置严格分离。

为什么要这么做?

如果你的代码放在Github等外部网络,哪一天要是代码不小心泄露了,你的各种密码,密钥,等配置全都暴露于公网中,这是一件非常可怕的事。

判断一个应用是否正确的将配置与代码分离开了,一个简单方法是你的代码是否可以立刻开源,而不用担心有任何敏感信息暴露。

将应用的配置存储于环境变量中是一种常规做法,例如在命令行中加入:

export PASSWORD=123456

windows

set PASSWORD=123456

业务代码中,通过环境变量来加载。

import os env = os.environ.get("PASSWORD") print(env)

这样做就不会将敏感信息暴露于业务代码中了,同时也可以最大程度让开发人员接触正式环境的敏感信息。

不过,问题来了,将敏感信息设置成环境变量,如果这样的信息非常多,挨个设置也太麻烦了。

你一定希望可以将这些敏感信息单独放在一个文件中,始终与代码分开管理

例如,我们在一个flask项目中,敏感信息我们专门放在一个叫.flaskenv 的文件中

.flaskenv 文件

FLASK_DEBUG=1 FLASK_ENV=local AAA=1234

可是这些配置如何加载到环境变量中去?

python-dotenv

python-dotenv 就是专门干这事的,他能将配置文件的配置信息自动加入到环境变量。

安装 python-dotenv

pip install python-dotenv

加载配置文件

from dotenv import load_dotenv # 加载文件 load_dotenv(".flaskenv") import os flask_env = os.environ.get("FLASK_ENV") print(flask_env) # local

加载文件后,就可以通过os.environ从环境变量中读取内容。

flask配置最佳实践

在flask中,python-dotenv 可以无缝接入项目中,只要你的项目中存在 .env 或者 .flaskenv 文件,他就会提示你是否安装 python-dotenv

$ flask run * Tip: There are .env files present. Do "pip install python-dotenv" to use them.

安装完后python-dotenv后,就会自动加载里面的配置文件到环境变量中。

# config.py class LocalConfig(BaseConfig): ENV = "development" FLASK_DEBUG = 1 # 通过变量环境来加载数据库配置 SQLALCHEMY_DATABASE_URI = os.getenv("SQLALCHEMY_DATABASE_URI") # app.py def create_app(): app = Flask(__name__) app.config.from_object(LocalConfig) # view.py def hello(): # 加载环境变量 os.environ.get("AAA")

你不需要自己去加载配置文件,因为flask-cli 帮你做了这个事,但是生产环境我们通常会基于gunicorn来部署我们的应用,这时候就没法自动加载了。你需要在生成app实例前显式加载配置文件。

#run.py from app import create_app from dotenv import load_dotenv load_dotenv('.flaskenv') app = create_app() 总结

到此这篇关于如何使用python-dotenv解决代码与敏感信息的分离的文章就介绍到这了,更多相关python-dotenv代码与敏感信息分离内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565