SaaS平台-每个用户或一个主帐户都有不同的数据库用户


SaaS Platform - Different database user for each user or one master account

我正在开发一个SaaS平台;使用PHP编写并使用MySQL数据库(使用PHP-PDO类)。

该应用程序已经可以使用了,我决定为每个实例使用一个单独的数据库。

使用多个数据库的原因之一是确保客户端数据是分离的(希望是安全的)。这也允许我们轻松地将他们的实例转移到内部部署版本中。

我总是担心安全问题。我想确保这个系统在投入使用之前尽可能安全。

目前我们使用的是单一MySQL用户名&可以访问每个数据库(在特定MySQL服务器场上)的密码。

理论上,如果存在安全漏洞,攻击者可能能够访问不同的数据库(在PDO/数据库连接后,用户名和密码将被取消设置,但他们可能能够运行诸如"使用数据库B"之类的查询)。

这是我应该关心的事情吗?例如,简单使用数据库分区的SaaS平台已经不那么安全了,因为一个简单的SQL错误可能会暴露客户端数据。

我已经开始研究使用不同的数据库用户名&密码,但它确实增加了SaaS平台的复杂性,保持简单总是一个好主意。

谢谢!


我决定为每个实例使用不同的用户名和密码。

这是另一层安全,不会造成伤害。

理论上,如果存在安全漏洞,那么攻击者可能能够访问不同的数据库(用户名和密码未设置在建立PDO/数据库连接之后,但他们可能能够运行诸如"use databaseB"之类的查询)。

这是我应该关心的事情吗?例如SaaS仅仅使用数据库分区的平台已经不那么安全了因为一个简单的SQL错误可能会暴露客户端数据。

1) 如果您的安全性很好,那么他们手动编写查询应该非常困难(如果不是不可能的话)
2) 你刚才提出的问题是为什么我主张DB之间使用不同的用户/密码
3) 我鼓励多个DB连接的另一个原因。。。我为一家大约有10名员工的公司制作制造控制软件。没过多久,数据库就变得庞大起来。多个数据库将使大小控制在1以内。
4) 如果我只使用一个数据库,我会更担心客户通过权限问题这样简单的问题意外访问另一家公司的信息。

我仍然有一个关于数据库分区的问题(我还没有研究/测试)。。。我对如何处理到1个数据库的数百个连接有很好的理解。当你只处理几个到一百个数据库的连接时,会发生什么?