liq*_*TAR 0 sql-server stored-procedures permissions
目标:想要创建一个所谓的“SQL 语句层”来检查/过滤所有传入的查询。如果传入的查询无效,则应拒绝。
用例:限制数据库访问并避免不可恢复的查询。在多个应用程序中没有关于相同“触发器或过程”(集中式)的重复代码。
迄今为止的研究:
描述:我站在一个新项目前,我们想限制和最小化对数据库的访问。例如:开发者可以DROP
在应用层内部创建一个查询,但是数据库会拒绝这个查询,因为DROP
查询是不允许的。
几年前我与 Laravel 一起工作,并在应用程序层内完成了大部分“程序和触发器”工作,例如控制器,而不是使用 Mutator 或 Accessor。现在我们希望将其减少到尽可能低的级别,以避免在不同的应用程序中出现像 Mutator 和 Accessor 这样的重复代码。
问题:Grants 和存储过程是唯一的方法吗?如果不是,是哪些?
我不太确定将内置特权系统与存储过程中的部分或全部 SQL 代码的封装结合使用是否是唯一的方法,但它肯定是限制对数据库访问的明智方法。当然,您可以自由介绍自己的系统,但根据我目前所学到的知识,没有必要重新发明轮子。
花点时间决定您可能需要哪些不同级别的访问权限,并相应地创建数据库角色,根据角色定义为不同的对象授予不同类型的权限。创建用户帐户并将其分配给角色。让您的应用程序提供一个请求登录凭据的对话框,并使用它们来调用需要执行的任何 SQL 指令,无论是存储过程调用还是临时查询。该指令将根据在服务器级别决定的权限执行或不执行。
同样,这是管理数据库访问的常用方法。不寻常的情况很可能需要不寻常的方法,但如果不使用内置安全性的原因是,例如,仅仅是因为它使开发人员的生活更轻松,我的建议是重新考虑。