一个python包,用于在django设置中包含加密的秘密。

django-secret-settings的Python项目详细描述


django机密设置

为您的django设置安全和方便的秘密管理!

构建状态代码覆盖率

目的和原理

django secret settings是一个python 3包,旨在增强结构的"典型"django settings包

settings/
├── __init__.py
├── development.py
├── production.py
├── ...
└── staging.py

其中,\u init\uuuu.py用于包含特定于环境的设置模块(例如,from.development import*)。 根据服务器特性(开发、测试、生产等)切换django设置在 这样的安排。此外,可以将相等的设置提取到导入任何 专用设置模块(如果适用)。这有助于按照既定的设计维护设置包 选择(特别是干燥原理)。

但是,为了避免任何秘密成为纯文本设置文件的一部分,一些自定义的附加部署 必须使用钩子在最晚可能的时间添加这些秘密。根据实现的解决方案,此步骤 可能相当复杂,因此部署过程容易出错。另一方面,更简单的解决方案 (例如,单独部署设置模块,甚至是整个包),往往会让开发人员很难做到 访问源存储库以获得可用设置的概述,更不用说添加新值了。

这就是django secret settings出现的地方:而不是强制将所有机密保留在版本控制之外或 单独的子模块(两者都是可能的),它允许秘密作为rsa加密的json文件存储在 存储库本身,每个环境一个"秘密存储":对于每种服务器性质,例如,暂存,目录是 放在secrets文件夹中。此文件夹包含多个json编码的机密文件,例如,所有django的django 配置值和电子邮件用于邮件服务器的用户名、密码和其他机密设置。在这个例子中 如上所述,目录结构类似于

settings/
├── __init__.py
├── development.py
├── production.py
├── secrets
│   ├── staging.pem
│   ├── production
│   │   ├── django
│   │   ├── email
│   │   └── public-key.pem
│   ├── ...
│   └── staging
│       ├── django
│       ├── email
│       └── public-key.pem
├── ...
└── staging.py

这样,每个环境只剩下一个秘密:解密 各种rsa加密文件,这是版本控制中唯一未保存的数量。因此,这 其余的秘密仍有待部署-但单独部署一个文件似乎是可行的。此外, 根据环境更改设置仍然很简单,因为django secret settings取决于 要加载的私钥文件(例如staging.pem)(在本例中为staging.py)。最后,添加新的 对于每个有权访问源代码存储库的开发人员来说,安全的秘密是可能的:只需将 一个有效的json字符串中的秘密,并使用每个 秘密商店!

要求

生产

django secret settings在涉及到产品依赖性时,打算是极简的,但却固执己见:

开发

除了上面列出的需求之外,开发所需的其他依赖项在 需求文件。他们可以, 当然,安装时请使用pip

pip install -r requirements-dev.txt

安装

它和运行一样简单

pip install django-secret-settings

快速启动

虽然安全性是django secret settings的主要设计标准之一,但是加密的设置和使用 配置值仍然很简单:

  1. 按如下所示重写设置/uu init.py

    fromdjango_secret_settings.autoloadimport*
  2. 根据上述架构添加具有公钥和机密文件的环境文件夹。秘密档案 包含rsa加密的json数据,例如,加密的django文件看起来像:

    {"SECRET_KEY":"l#!6p7)-4xhy25@pu5$y$%k&7#8a(#1^89=^m*=e69xl**&!11"}

    使用相应的公钥进行加密。

  3. 调整您的专用设置以使用秘密存储

    fromdjango_secret_settings.autoloadimportsecret_store# SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY=secret_store.get('django','SECRET_KEY')# Other settings omitted for brevity...
  4. 还要调整部署以添加指定要使用的设置的私钥文件。或者,您需要添加 .gitignore文件到您的设置包,以确保这些机密文件从未存储在版本控制中。

  5. < > >

    教程

    有关django secret settings背后的思想及其用法的更详细介绍,请参见 教程

    接下来的事情

    最好的还在后头,我相信!你为什么不看看我们的 浏览所有打开和关闭的问题?或者如果你是 对计划成为下一个版本一部分的内容感兴趣,为什么不浏览我们的 里程碑

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
并行处理java。util。同时发生的叉子在游泳池里。常见的并行性准则,用于选择正确的并行度大小   java如何将空白字符追加到指定长度?   安卓应用程序中出现错误,SSLHandshakeException,找不到证书路径的信任锚点   java如何使用JUnit Mockito验证检查方法是否未被调用   java如何使用不同的@RequestMapping解析多个控制器中的静态页面   Selenium中的javascript需要验证搜索结果   访问数据库SQLiteopenHelper方法时java应用程序崩溃(nullpointerexception)   在二叉树中验证最小堆时出现java空指针异常   Java 7的SSL连接失败   java用RestEasyWebTarget替换ProxyFactory不起作用   在Java应用程序中单击“否”按钮后,数组程序冻结(无响应)   数组中的前缀Java初学者前进和   Java HTML解析器,包括脚本标记和LineNumberReader   在java中为长类型数字加前导零   正则表达式无法映射正则表达式java。lang.IllegalArgumentException:模式段中捕获组的数量