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-项目:生产“。在
- 按冒号分隔JSON对象的键。
- 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
然后在设置模块的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的设置模块中使用秘密
- 首先,导入库的SECRETS实例。在
- 输入Django AWS SecretsManager的设置
- 把秘密当字典来获取你想要的秘密
遵循以下示例的形式
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
- 项目
标签: