我们有一个休息api,需要与Mongodb(现在是postgres)交谈,现在在api的property / config文件中我们正在硬编码数据库密码。我们使用JDBC连接到postgres,我们需要决定是否使用相同的JDBC或Mongoclient连接到MongoDB。
所以问题是
以上哪一个是避免安全威胁的最佳方式......我们在AWS中同时拥有api和数据库......
答案 0 :(得分:1)
无法单独加密Mongo密码,您需要使用SSL加密整个连接。
如果您要管理自己的mongodb实例,则需要查看此文档:https://docs.mongodb.org/manual/tutorial/configure-ssl/
如果您正在招聘一些mongodb提供商(例如mongolab),他们通常会提供一种在您的连接中启用SSL的方法(但他们通常会将此功能限制为付费方案)。
存储数据库密码的常用方法是通过环境变量。这样您就不会将这些值保存到git中,您可以直接在服务器上配置这些值。
要在UNIX中配置环境变量,您需要像这样导出:
export MONGODB_DB_URL_ADMIN=mongodb://myuser:mypassword@ds01345.mongolab.com:35123/my_database_name
并在代码中使用它(NodeJS + mongoose示例):
var mongoDbURL = process.env.MONGODB_DB_URL_ADMIN || "mongodb://127.0.0.1/myLocalDB";
var db = mongoose.createConnection(mongoDbURL);
db.model("MyModel", mySchema, "myCollectionName");
如果您使用的是PaaS(如Heroku),它们通常会提供一种使用其界面设置环境变量的方法。这样,在您使用的每个实例中都会配置此变量。如果要设置自己的Linux实例,则需要将这些值放在启动脚本(.bashrc)或其他方法(例如/ etc / environment)下
答案 1 :(得分:0)
您可以使用SSL连接,因为您在AWS上托管。
Normally MongoDB does not have SSL support,但如果您使用企业版MongoDB,则会包含SSL支持。
Per Amazon's MongoDB Security Architecture White Paper,AWS确实使用MongoDB Enterprise,这意味着它支持SSL。
答案 2 :(得分:0)
到目前为止,其他回应似乎已经过时了。按照all versions of MongoDB support TLS 1.1,4.0版本,仅企业版支持“ FIPS模式”。