Vec*_*ato 2 sql-server sql-server-2017
我有一个关于将 SQL Server 2017 设置为服务的最佳方式的问题。
我有客户将 SQL Server 数据库作为服务购买,就好像它是 Azure 或 AWS 实例一样,他们无法访问服务器。他们在实例中只有用户名和密码,我需要向这些用户隐藏可通过 SQL Server Management Studio 或 T-SQL 命令访问的服务器配置,例如分配给实例的内存、CPU 数量等.
在 SQL Server 2016 中,我通过删除 master..xp_msver 视图的权限来完成此操作。例如,如果没有此权限,他们将无法查看实例属性(在 SSMS 中右键单击服务器)和 Facets 表单中的一些数据。即使没有此权限,他们也可以登录并在其数据库中执行所需的一切操作。
但在 SQL Server 2017 中,这不再有效,如果我拒绝此视图的权限,则无法再登录 SQL Server。
我知道将标准 SQL Server 用作服务可能不正确,也许它还没有为此做好准备,但是有正确的方法吗?或者可以使用哪些替代方案?
我花了很多时间在 Google 上试图寻找替代方案,但是对于 SQL Server 2017,我没有找到任何隐藏服务器设置的东西。
注意:我的用户使用 SQL Server Management Studio...
撤销一个视图从来都不是保护您的实例的好方法。执行此操作的最直接方法是使用户成为其数据库的所有者,但对该实例没有其他权限,甚至无法列出其他数据库。例如:
use master
create database a
create login a_user with password='P@sssword*****'
alter authorization on database::a to a_user
revoke view any database to public
Run Code Online (Sandbox Code Playgroud)
现在 a_user 将能够连接(使用 SSMS 或其他方式)并且只会看到一个数据库。