我有一个应用程序,用户可以在其中输入要在 sql server 数据库中执行的 sql 语句。这些语句只能返回数据,不能执行任何 DML 或 DDL 操作。目前输入被验证只允许编写 SELECT 语句。但现在要求允许执行存储过程,但只允许那些只读取数据的过程。也将有助于列出这些 SP 以显示一种智能感知。
我想创建一个只有 db_datareader 权限的用户并以此用户身份执行语句。但是要执行存储过程,我必须向用户授予 Execute 权限,并且因为Ownership Chaining,可能不会检查权限。我还没有想出如何解决这个问题。
我还认为只允许执行在只有读取权限的特定数据库模式中创建的存储过程。同样,我可以通过这种方式轻松列出 SP。我不知道这是否可能。