如何解决如何隐藏访问不同服务器上的数据库的多用户python脚本的凭据?
我正在使用psycopg2访问单独服务器上的PostgreSQL数据库,并使用SQL结果创建CSV文件。我想创建一种方法,让我的员工可以在同一网络上使用脚本运行这些报告,而不必授予他们访问用于登录PSQL DB的凭据的权限。后来有好几项Google搜索结果,但我仍然想知道实现此目标的最佳方法是什么。我对Python环境之外的方法持开放态度。在这种情况下隐藏凭据的最安全方法是什么?
解决方法
由于您只想与同事共享脚本,所以您可以做的是加密凭据并将其保存到文本文件中,该文件将随脚本一起提供。然后,在您的脚本中,您将读取该文本文件,以解密加密的凭证并用于连接到数据库。对于您的用例“ ... {without giving them access to the credentials used to log in to the PSQL DB
”来说,这应该足够了
请尝试执行以下步骤:
- 安装fernet加密库:pip3安装加密
2)加密您的密码并将加密的字符串保存在“ .ini”文件中:
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"MyPassword&#)__")
.ini文件的内容(对于上面的示例):
[DEFAULT]
password = AAAAABfPGwDK7-5uz_YxUtkfWohehtg53lgvMX5NbC4lgU_trZGI9gGioqdLKUVp6ZaAQdVKurirQ-dQ5MsAPNk87wsA74Tng==
- 读取加密文件并解密以用作密码
from configparser import ConfigParser
from cryptography.fernet import Fernet
config = ConfigParser()
config.read('src/params.ini')
encrypted = config.get('DEFAULT','password')
plain_text = cipher_suite.decrypt(encrypted)
print(plain_text.decode("utf-8"))
请记住,尽管这一选择很简单,它将满足您的要求,我们还有许多其他选择(更安全的选择)可以满足您的需求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。