Django SecretsManager是Django的自定义秘密管理器

django-secrets-manager的Python项目详细描述


Django秘书经理

Django SecretsManager是一个帮助您通过变量服务管理Django使用的机密值的包。在

要求

  • Python>;=3.6
  • Django公司

设置模块所需的设置

  • AWS_SECRETS_MANAGER_SECRET_NAME(或AWS_SECRET_名称)
    • 要使用的SecretsManager的机密名称
  • AWS_SECRETS_MANAGER_SECRET_部分(或AWS_SECRET_部分)
    • 按冒号分隔JSON对象的键。
      在下面的示例中,“production”项表示为”sample-项目:生产“。在
  • AWS_SECRETS_MANAGER_REGION_NAME(或AWS_REGION_名称)
    • ^要使用的SecretsManager服务的{a1} 前2-ap

AWS SecretsManager的秘密值设置

SecretsManager的秘密值使用纯文本格式的JSON格式。
下面是一个用于配置的示例机密值,Secret(对应于设置模块中的AWS_SECRETS_MANAGER_Secret_NAME)命名为sample project Secret

{"sample-project(Recommend the name of django project)":{"base(If the settings module is a package, submodule names are recommended)":{"SECRET_KEY":"DjangoSecretKey"},"dev":{"AWS_S3_BUCKET_NAME":"sample-s3-dev"},"production":{"AWS_S3_BUCKET_NAME":"sample-s3-production"}}}

为Django设置要使用的AWS凭据

Django使用两种方法访问AWS上的SecretsManager。第一个使用主文件夹中的~/.aws/credentials配置文件,第二个使用环境变量。在

1。使用AWS凭证配置文件

Recommended for use in development environments

将具有SecretsManagerReadWrite权限的IAM用户的配置文件设置为~/.aws/credentials。以下示例使用配置文件名sample project secretsmanager

^{pr2}$

然后在设置模块的AWS_SECRETS_MANAGER_profile中输入配置文件名称。在

# settings.pyAWS_SECRETS_MANAGER_PROFILE='sample-project-secrets-manager'

2。使用环境变量

It is recommended to use in distribution or CI / CD environment.

如果在环境变量中设置以下值,则内容将用于使用SecretsManager服务。在

  • AWS_SECRETS_MANAGER_ACCESS_KEY_ID(或AWS_ACCESS_KEY_ID)
  • AWS_SECRETS_MANAGER_SECRET_ACCESS_KEY(或AWS_SECRET_ACCESS_KEY)

在Django的设置模块中使用秘密

  1. 首先,导入库的SECRETS实例。在
  2. 输入Django AWS SecretsManager的设置
  3. 把秘密当字典来获取你想要的秘密

遵循以下示例的形式

By separating the settings module into packages, it is assumed that there are base and dev submodules.

settings/
    __init__.py
    base.py
    dev.py
## settings/base.py# 1. Import the SECRETS instance of the libraryfromdjango_secretsimportSECRETS# 2. Enter the settings for Django AWS SecretsManagerAWS_SECRETS_MANAGER_SECRET_NAME='sample-project-secret'AWS_SECRETS_MANAGER_PROFILE='sample-project-secretsmanager'AWS_SECRETS_MANAGER_SECRET_SECTION='sample-project:base'AWS_SECRETS_MANAGER_REGION_NAME='ap-northeast-2'# 3. Use SECRETS as a dictionary to get the secrets you wantSECRET_KEY=SECRETS['SECRET_KEY']SECRET_KEY=SECRETS.get('SECRET_KEY')
## settings/dev.py# The SECRETS instance is already imported from the base module.from.baseimport*# Use a different secrets sectionAWS_SECRETS_MANAGER_SECRET_SECTION='sample-project:dev'# Use SECRETS as a dictionary to get the secrets you wantAWS_STORAGE_BUCKET_NAME=SECRETS['AWS_STORAGE_BUCKET_NAME']AWS_STORAGE_BUCKET_NAME=SECRETS.get('AWS_STORAGE_BUCKET_NAME','default')

贡献

作为一个开源项目,我们欢迎大家的贡献。
代码位于GitHub

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

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误