webserver部署时管理敏感密码信息
2025年2月11日 - 由Bo 0 评论 141 阅读
主要以django为例(虽然也在做其他语言的web server),记录一下几种管理敏感信息比如账户密码等的方式。毕竟始终要连接数据库啊、连接第三方的授权验证等,密码信息难以避免,但除了本地调试时,不能将这些敏感信息以明文方式提交版本管理也不能暴露给外界。
- 部署时,将敏感信息存入特定文件里,不做版本管理不提交,放到server目录去,由其他程序读取。这种方式比较粗糙,但还是有用的。虽然不能追溯敏感信息的文件来源和内容,但是还是能看到明文信息。可以考虑将文件内容做一次加密。比如可以安装python-dotenv和存储在.env文件中,该文件在.gitignore标明不提交。加密可以用cryptography。
- 借助其他CI/CD工具平台。比如使用了gitlab,用了它的runner来运行,以及做CI/CD, 此时可以在项目仓库settings - CI/CD - Variables添加环境变量,然后在.gitlab-ci.yml文件中可以在build或deploy阶段时将变量信息存入,镜像启动时再读取配置信息。这种方式会安全一些。
- 将密码信息存储到类似Vault的server上,然后在部署的机器上添加环境变量,比如vault_token的值,以此来请求vault服务来获取需要的密码信息。
如果用了cryptography
from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
u1 = f.encrypt"root".encode())
print(f.decrypt(u1).decode())
上一篇:
Django定时任务