use*_*136 4 sql-server permissions role sql-server-2012
我有一个使用 SQL Server 身份验证的 SQL Server 默认实例和两个用户 User1 和 User2。
User1 具有公共服务器角色,而 User2 具有公共服务器角色 + sysadmin 服务器角色。
我创建了一个数据库 sptest1。在该数据库中,我创建了一个存储过程,sp_viewtbl并创建了一个架构。使用模式我已禁用为 User1 执行存储过程并且它可以工作。
如何拒绝具有 sysadmin 服务器角色的 User2 执行存储过程?
假设我创建了 User3 并授予了 sysadmin 和 public 权限。那么如何防止新用户执行相同的存储过程呢?sp_viewtbl即使他们具有系统管理员权限,我也必须防止其他人登录。
Ton*_*kle 14
不能拒绝 sysadmin 角色的成员对 SQL Server 中的任何内容的权限。DENY (Transact-SQL)的文档指出:
...除了 DENY 不适用于对象所有者或 sysadmin 固定服务器角色的成员。
因此,为了防止系统管理员运行存储过程,您需要将代码放入存储过程以检查用户是否为系统管理员,如果是则返回错误。但是,系统管理员可以通过以下方式轻松解决此问题:
如果您的目标是防止 sysadmin 用户看到敏感数据,那么实现的方法是使用Always Encrypted。这使用只有应用程序可以访问的密钥对数据进行加密和解密。如果系统管理员读取该表,他们只会看到加密的数据。
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |