Django机密管理工具,使用AWS机密管理器

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


Django AWS秘书经理

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

要求

  • Python>;=3.6
  • Django公司

设置模块所需的设置

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

AWS SecretsManager的秘密值设置

SecretsManager的秘密值使用纯文本格式的JSON格式。
下面是一个用于配置的示例机密值,Secret(对应于设置模块中的AWS_SECRETS\umanager\usecrets\uname)命名为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 libraryfromaws_secretsimportSECRETS# 2. Enter the settings for Django AWS SecretsManagerAWS_SECRETS_MANAGER_SECRETS_NAME='sample-project-secret'AWS_SECRETS_MANAGER_PROFILE='sample-project-secretsmanager'AWS_SECRETS_MANAGER_SECRETS_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_SECRETS_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 Spring框架服务单元测试   在Java中遍历hashmaps的hashmap以检索字符串值   如何使用CodeQL检查Java注释是否具有特定属性?   java为什么在Spring Boot中访问此资源而不是登录弹出窗口需要始终获得完全身份验证   处理将多集计数转换为列表的过程   java另一个线性布局,没有出现按钮   eclipse Java映像加载未显示在jar中   java Junit类无法加载基本测试类ApplicationContext   java如何在main中使用my getvalues()方法打印列表   java Sonar,S128:切换案例应该以无条件的“中断”语句结束,而不是继续   java从socket读取字符串错误连接重置错误   java使用新数据刷新任意图表饼图   java通过异步运行lambda访问方法参数   java错误的结果一旦我处理try and catch