Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

webserver部署时管理敏感密码信息



主要以django为例(虽然也在做其他语言的web server),记录一下几种管理敏感信息比如账户密码等的方式。毕竟始终要连接数据库啊、连接第三方的授权验证等,密码信息难以避免,但除了本地调试时,不能将这些敏感信息以明文方式提交版本管理也不能暴露给外界。

  1. 部署时,将敏感信息存入特定文件里,不做版本管理不提交,放到server目录去,由其他程序读取。这种方式比较粗糙,但还是有用的。虽然不能追溯敏感信息的文件来源和内容,但是还是能看到明文信息。可以考虑将文件内容做一次加密。比如可以安装python-dotenv和存储在.env文件中,该文件在.gitignore标明不提交。加密可以用cryptography。
  2. 借助其他CI/CD工具平台。比如使用了gitlab,用了它的runner来运行,以及做CI/CD, 此时可以在项目仓库settings - CI/CD - Variables添加环境变量,然后在.gitlab-ci.yml文件中可以在build或deploy阶段时将变量信息存入,镜像启动时再读取配置信息。这种方式会安全一些。
  3. 将密码信息存储到类似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())

 

下一篇:  使用SetForegroundWindow遇到报错的解决方式
上一篇:  Django定时任务

共有0条评论

添加评论

暂无评论