Webapp:Mysql:行级安全性。赞成/反对?有更好的方法吗?

Webapp:Mysql:行级安全性。赞成/反对?有更好的方法吗?,mysql,database-design,database-schema,row-level-security,disk-io,Mysql,Database Design,Database Schema,Row Level Security,Disk Io,我试图在使用MySQL开发的webapp上模拟行级安全性 使用此方法:创建一个包含所需表的数据库,在该数据库中,所有用户的数据都将通过对表列的适当索引进行存储 根据用户id为特定用户创建mysql“视图” 为了实现行级安全,我还必须为每个用户创建mysql帐户,并设置对视图的“授予”权限 对于web界面,将使用基于PHP的MVC框架 但是,根据我的研究: 1] 每个用户拥有单独的mysql帐户“会降低Web应用程序的安全性”。 2] 每个用户拥有单独的mysql帐户“增加了磁盘I/O”。 问题:

我试图在使用MySQL开发的webapp上模拟行级安全性

使用此方法:创建一个包含所需表的数据库,在该数据库中,所有用户的数据都将通过对表列的适当索引进行存储

根据用户id为特定用户创建mysql“视图”

为了实现行级安全,我还必须为每个用户创建mysql帐户,并设置对视图的“授予”权限

对于web界面,将使用基于PHP的MVC框架

但是,根据我的研究:

1]
每个用户拥有单独的mysql帐户“会降低Web应用程序的安全性”。

2]
每个用户拥有单独的mysql帐户“增加了磁盘I/O”。

问题:
1]
如何为每个webapp用户创建mysql用户,从而降低webapp的安全性?

2]
磁盘I/O是否显著增加?

3]
在MySQL中实现行级安全性有更好的方法吗?

4]
通过上述方法实现行级安全性的优点/缺点是什么?

我为什么要考虑行级安全性?
我需要行级别的安全性,因为有多个用户共享的行&有一个或两个所有者。只有这些所有者才能删除/修改它们。

我的意见:

1]如何为每个webapp用户创建mysql用户,从而降低webapp的安全性?

您的数据库有多个入口点。它不同于将用户信息存储在
users
表中,然后使用所有用户都使用的受适当限制的mysql帐户(作为web应用程序配置文件的一部分)

2]磁盘I/O是否显著增加?

不知道如何正确回答这个问题,因为您可能读过的文章是关于开发人员/数据库管理员/etc使用的多个sql帐户,他们直接访问您的数据库

3]有没有更好的方法在MySQL中实现行级安全性?

在MySQL的实现中,有了SQL函数和视图,也许您可以尝试控制访问,而不是从SQL帐户级别,而是通过表数据控制用户访问

4]通过上述方法实现行级安全性的优点/缺点是什么?

拥有多个帐户的后果之一是维护帐户

使用视图、函数和存储过程将是一种很好的方法,有助于控制允许访问者查看的数据量或数据类型,因此这是一种专业方法

再说一次,这些只是我的观点;我可能误解了几个部分,也可能对其他部分有误解。:)

我的意见:

1]如何为每个webapp用户创建mysql用户,从而降低webapp的安全性?

您的数据库有多个入口点。它不同于将用户信息存储在
users
表中,然后使用所有用户都使用的受适当限制的mysql帐户(作为web应用程序配置文件的一部分)

2]磁盘I/O是否显著增加?

不知道如何正确回答这个问题,因为您可能读过的文章是关于开发人员/数据库管理员/etc使用的多个sql帐户,他们直接访问您的数据库

3]有没有更好的方法在MySQL中实现行级安全性?

在MySQL的实现中,有了SQL函数和视图,也许您可以尝试控制访问,而不是从SQL帐户级别,而是通过表数据控制用户访问

4]通过上述方法实现行级安全性的优点/缺点是什么?

拥有多个帐户的后果之一是维护帐户

使用视图、函数和存储过程将是一种很好的方法,有助于控制允许访问者查看的数据量或数据类型,因此这是一种专业方法


再说一次,这些只是我的观点;我可能误解了几个部分,也可能对其他部分有误解。:)

问题3的答案:


更简单的方法可能是使用单独的表。在性能方面也可能更好。您希望将数据保留在同一个表中的原因是什么?据我所知,用户之间不共享任何行。

问题3的答案:


更简单的方法可能是使用单独的表。在性能方面也可能更好。您希望将数据保留在同一个表中的原因是什么?据我所知,用户之间不共享任何行。

感谢您的回复:不确定如何正确回答此问题,因为您可能读过的文章是关于直接访问您的数据库的开发人员/数据库管理员/etc使用的多个sql帐户的。。谢谢你指出这一点。。这篇文章是关于使用触发器和自动日志的。使用触发器时,磁盘i/o会增加。你的第一点和第三点是我最初的实施想法。有什么参考资料我可以参考吗?另外,我不小心按了enter键而不是之前的shift enter键谢谢你的回答:不知道如何正确回答这个问题,因为你可能读过的文章是关于直接访问你的数据库的开发人员/数据库管理员/etc使用的多个sql帐户。。谢谢你指出这一点。。这篇文章是关于使用触发器和自动日志的。使用触发器时,磁盘i/o会增加。你的第一点和第三点是我最初的实施想法。有什么参考资料我可以参考吗?另外,我无意中按了enter键而不是shift键enter键。以前,用户之间将共享路径。这就是我考虑行级安全性的原因。我应该早一点提到这一点。A.