对数据库连接应用最小权限

时间:2011-07-25 18:41:50

标签: mysql security database-permissions

我注意到大多数FOSS应用程序(例如Wordpress)只使用一组已授予所有权限的数据库凭据。这似乎违反了最小特权原则。

在编写这样的应用程序时,最好使用多个帐户,例如,一个帐户只用于SELECT查询,另一个帐户用于UPDATE等?

3 个答案:

答案 0 :(得分:2)

肯定违反了最小特权原则。我们回到definition

  在信息安全,计算机科学等领域,   最小特权原则,也称为最小原则   特权或最小特权,要求特定   计算环境的抽象层,每个模块(例如   基于我们的层的过程,用户或程序   考虑)必须能够只访问这些信息和   为合法目的所必需的资源。

在Wordpress示例中,公共用户使用SQL帐户从数据库中检索数据,该帐户还可以更改或删除该数据。此用户的“最小权限”不包括访问更改该数据是否直接在存储过程的表上。这绝对不符合“仅访问其合法目的所必需的此类信息和资源”

SQL环境中的风险主要是SQL注入。一个小缺陷,如果公共账户有权造成损害,那么你最终会遇到各种各样的问题。是的,输入应该被验证,是的查询应该参数化,但这是一个额外的防御层,为您提供额外的保险。

我在OWASP Top 10 for .NET developers part 1: Injection专门讨论了这个问题。

答案 1 :(得分:1)

我想如果只是为了维护问题会更糟。一个用户意味着凭证是一个地方,并且可以在一个地方为每个服务器更新凭证。此外,大多数框架都假设有一个凭据设置来统治所有框架,虽然允许两个+并不太难,但它更令人讨厌。

如果你有一个只有select的权限的用户,你可以获得一些好处,你不必担心SQL注入(肯定不是Bobby Tables级别),但即便如此也是如此保证,所以你必须要清理你的数据输入(他们仍然可以根据选择......进行注射攻击。)。

答案 2 :(得分:0)

最佳做法是为存储过程而不是在表级别授予权限。