我可以将SQL用户限制为仅存储过程吗?
在过去,我不得不允许访问一些程序,我会给登录公共权利和数据库映射。这将让他们登录,但不做任何事情。然后我给每个存储过程选择权。我很确定我不必做任何事情。
如果你有大量的存储过程,那么本文将帮助你创建这个特定角色/模式。
http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html
我有从其他来源的反馈,SQL注入可能与此解决方案的问题。我可以避免这个问题吗? –
这是关于执行权。与sql注入无关。这个话题在很多其他地方都有详细讨论,并且关于你如何开发你的存储过程,而不是你如何赋予它们执行权限。 –
你需要从所有组中删除该用户就用GRANT你希望他们有存储过程。
-- Syntax for SQL Server and Azure SQL Database
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ (column [ ,...n ]) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ WITH GRANT OPTION ] [ AS principal ]
他为什么要将他们从“群体”中删除?他可能应该创建一个特定的**角色**。 –
我发现这是删除所有权利的最快方法。从其他来源,SQL注入也许不是整齐,虽然 –
我已经得到的反馈可能是该解决方案的问题。我可以避免这个问题吗? –
是的,这是可能的。只能授予程序权限。 – jarlh
是的,只授予您希望他们使用的程序的执行权限。 –
之类的东西的权限等都是**高度依赖**在其RDBMS这是出于。请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。已添加标签 –