如何避免将用户名和密码存储为连接字符串的一部分

时间:2018-10-25 20:52:06

标签: python mongodb pymongo

情况

我的团队使用NFS。我写了一个连接数据库的python脚本。人们执行我的python脚本,并在我们的后端mongodb数据库中基于一些与他们的userid关联的值,脚本对该用户执行某些操作

我的问题

我有一个像这样的mongodb连接字符串

database_client = MongoClient("mongodb://<myusername>:<mypassword>@serverip:port/DBName")

问题在于,任何人都可以简单地阅读py脚本并弄清楚我的用户名和密码是什么。

没有什么选择

不允许制作Python脚本和不透明的可执行文件。更不用说它不能保护我的凭据不泄漏给在同一代码库上工作的其他有轨电车成员。也不会使数据库世界可编辑/可读。所有编辑数据库的请求都必须通过授权帐户,并且只能通过脚本提供的API。

有没有办法做到这一点/我应该怎么做?

编辑:我正在使用Heroku。我在公司防火墙后面,mongoDB服务器是公司网络上具有IP的机器

1 个答案:

答案 0 :(得分:0)

一个想法是从配置文件 1

中读取用户名和密码
[topsecret]
user = foo
password = bar

这样,您可以与任何人共享代码,并且只有拥有有效的配置文件,他们才能执行代码。

1 您可以使用configparser模块https://docs.python.org/3.4/library/configparser.html来解析上述配置文件。