Skip to main content
 首页 » 编程设计

python之如何更好地存储我的服务器凭据以用于 Python 部署脚本

2025年05月04日6TianFang

基本上有一堆服务器部署脚本引用服务器凭证(例如用户名、密码)。目前,凭据存储在它们自己名为 server_info 的 python 模块内的 servers 字典中:

servers = { 
        'dev_server':{'server':'localhost', 'port':'80', 'username':'*********','password' : '*******'}, 
        'staging_server':{'server':'www.google.com', 'port':'80', 'username':'********','password' : '***********'}, 
    } 

部署脚本导入此模块并按键引用凭据:

from server_info import servers  
 
server_creds = servers['dev_server'] 
update_server(server_creds['username'], server_creds['password'], server_creds['port']) 
 
server_creds = servers['staging_server'] 
update_server(server_creds['username'], server_creds['password'], server_creds['port']) 

单独的模块阻止在部署脚本中使用纯文本凭据,但在 server_info 模块中仍然存在纯文本。

如有任何关于如何更好地存储此敏感信息的建议,我们将不胜感激。欢迎所有想法,但寻找与平台无关的解决方案。

请您参考如下方法:

(可逆地)以某种方式对其进行编码,使其不再是明文...一些简单的示例是 rot13、base64、ceasar 密码,请记住,这些实际上是编码而不是加密,任何有足够倾向的人这样做会破坏它们....即使您使用实际加密,您也需要将 key 以明文形式存储在某处(尽管用户可以将 key 作为“通用”密码或其他内容输入)

通常是像

这样简单的事情
 old_data = open("server_info.py").read() 
 open("server_info_encoded.py","w").write(base64.b64encode(old_data)) 

然后在某个时候你将它拉入解码并将其解释为 json 字典

server_info = json.loads(base64.b64decode(open("server_info_encoded.py").read()))