在Linux系统的情况下,是否有任何安全问题让具有标准权限的MySQL用户(即非root用户)连接到数据库,而不需要本地主机的密码?
我认为,即使对于本地主机强制实施密码也可以增加一层保护,因为如果SSH访问本身已经受到威胁,那么数据库访问将不会受到影响。 考虑到,不允许密码连接到MySQL,而不是SSH和MySQL的密码相同?
我不知道是否要考虑,但我们也使用phpMyAdmin让用户pipe理自己的数据库。
我问,因为我有点不喜欢必须将我们的数据库密码未encryption在我们的应用程序的源文件或configuration文件,他们可以很容易地无意中泄漏。 由于我们的服务器被configuration为以应用程序所属的Linux用户身份运行我们的应用程序,因此我考虑不允许本地主机的密码作为简单的解决scheme。
那么,这是一个非常糟糕的主意吗?
我认为,即使对本地主机强制执行密码也可以增加一层保护,因为如果SSH访问本身已经被入侵,那么数据库访问将不会被破坏
“纵深防御”的一般原则是倾向于对使用无帐号密码的用户非常谨慎。 密码是authentication机制的很大一部分; 没有密码的帐户设置类似于没有翻转开关的锁。 我在这里同意你的意见。
考虑到,不允许密码连接到MySQL,而不是SSH和MySQL的密码相同?
这实际上是一个关于密码重用的问题。 表面上,任何密码重用都被认为是坏事(TM)。 这个机制只能工作,因为密码是一个只有你自己知道的秘密…而且你使用秘密的频率越高,保密的可能性就越小。 然而,在现实世界中,我们必须重新使用密码,要么通过在多个帐户中重复使用相同的密码,要么使用一个主密码来保护唯一密码列表。 这个问题的答案真的取决于你的环境和威胁模型。
正如@boris quiroz所指出的,什么样的服务器是? 谁需要访问它? 在其他地方密码可能被重复使用(即仅用于SSH还是用于核导弹控制面板?对于前者,重新使用密码可能会很好,但对于后者)。 如果密码被盗,你会失去什么东西?(即,单个篮子里有多less个鸡蛋)? 那么,与无密码帐户相比,数据隐藏在数据库中的价格是多less? 然后logging这个过程以及你决定的原因。 如果将来有一个问题,你可以certificate你的select是正确的。
这里没有硬性规定。 您只需要考虑威胁模型(我保护什么和从谁),并决定这些好处是否大于成本。 安全总是一种妥协,所以要确保你尽可能多的购买你放弃的东西(比如在pipe理开销方面)。
就我个人而言,我倾向于在SSH和MySQL帐户上使用密码,最好是不同的密码,但是在我看来,即使在这里重复使用也没有什么好处。 (除非你有很多的用户帐户,这是一个完全不同的问题)。
有时候,在安全方面,你必须是偏执的:-)
在这种情况下,即使对于本地用户,我的build议总是使用密码,但是您必须评估所有情况:
它是什么样的服务器? 生产? 发展? testing? 还是只是沙箱? 如果是沙箱,并且没有关键数据,则不要担心本地用户的密码(假设您已经有了一个ssh访问策略)。 但是,如果不是你的沙箱,我的build议是每个人都使用密码。
有时简单的解决scheme是可以的,但它们可能会危及数据的安全性。
一般来说,我认为这是一个坏主意。 如果应用程序A受到攻击,攻击者可能只能访问该用户,并且该应用程序所属的文件,但是如果您不使用数据库密码,他将能够访问应用程序B和C等的数据库也有可能被阻止。
有时它可以帮助你解决与外部安全无关的问题。 仅仅通过帮助防止简单的,本地的,愚蠢的事故使得它值得。 不过,我可以使用强密码启用它。
当然,如果应用程序遭到劫持,那么只需要一点点更难以远程请求数据库以获得完整的数据库转储。 这“只是一点点” 可以有所作为。