限制对存储过程的SQL Server授权-仅调用

为了保持数据库的数据完整性,我试图取消对所有未调用存储过程的查询的授权。但是我不希望直接从SQL Server运行的查询被阻止,因为那样我将无法对数据库进行任何更改(如果数据库无法区分“内部”查询和“外部”查询,也许查询会在特定授权下被允许)。我该怎么做?

conandx 回答:限制对存储过程的SQL Server授权-仅调用

您需要在数据库中创建一个自定义应用程序角色,该角色只能执行那些存储过程-但没有任何直接读取或更新数据的权限。

我通常采用的最简单的方法是:

  • 创建自定义数据库角色db_executor,其作用与db_datareader
  • 类似
  • 授予该角色执行当前和将来所有存储过程的权限
  • 创建仅具有此角色的用户-这些用户可以连接到您的数据库,并且他们只能执行存储过程-其他没什么

第1步-创建新角色

CREATE ROLE [db_executor]

第2步-授予权限

GRANT EXECUTE TO db_executor;

这将授予在该数据库中执行任何存储过程的权限-很棒的事情是:这不仅适用于运行此程序时存在的存储过程-这将还包括您将来可能创建的任何存储过程

第3步-将用户添加到该角色

您当然可以在GUI中执行此操作-或使用以下T-SQL:

ALTER ROLE [db_executor] ADD MEMBER [your-user-name-here]
本文链接:https://www.f2er.com/3134023.html

大家都在问