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



>情况

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

我的问题

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

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

问题是任何人都可以简单地阅读py脚本并找出我的用户名和密码是什么。

什么不是一个选项

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

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

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

一个想法是从配置文件1中读取用户名和密码,例如

[topsecret]
user = foo
password = bar

通过这种方式,您可以与任何人共享代码,并且他们只有在拥有有效的配置文件时才能执行代码。

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

最新更新