DBO*_*BOn 3 security sql-server permissions logins sql-server-2014
我不确定这是否是一个奇怪的问题,所以请让我知道我在下面描述的内容是否可行。
我们有一个服务器,它是由其他人配置的,我们没有人“添加到其中”。
截至目前,我只sa
登录了所述服务器。
我正在通过
SQLCMD -E -S ".\SQLServer"
Run Code Online (Sandbox Code Playgroud)
然后通过
SELECT name FROM sys.syslogins
Run Code Online (Sandbox Code Playgroud)
输出是
sa
Run Code Online (Sandbox Code Playgroud)
我只想对表运行 SELECT 语句以查看值。
题
有什么我可以做的吗?
我曾尝试 DB 更改和可信赖,但由于我根本不是会员,因此我的访问被拒绝。
我只需要运行 SELECT 语句。
我只想对表运行 SELECT 语句以查看值。
题
有什么我可以做的吗?
要查找您对该对象的权限,您可以使用函数sys.fn_my_permissions
只需运行此查询即可找出您对该表的权限:
use your_db;
select *
from sys.fn_my_permissions ('your_table_name', 'object')
Run Code Online (Sandbox Code Playgroud)
如果您SELECT
对该对象没有权限,也许至少您SELECT
对它的列的子集有权限。
在任何情况下,您都可以通过以下方式检查您的数据库权限:
use your_db;
select *
from sys.fn_my_permissions (null, 'database')
Run Code Online (Sandbox Code Playgroud)
如果您很幸运并CONTROL
在其中看到了许可,则有可能重新授予您缺失的许可。
甚至可能是这种情况:你是db_owner
这个数据库的,但是有人DENY
在这个表上显式地使用了你的用户。
有些db_owners低估了存在的力量db_owner
,所以不要一开始就放弃
SELECT 权限被拒绝...
并继续探索您在服务器和感兴趣的数据库中拥有哪些权限。
首先,检查您的服务器级别权限,如下所示:
select *
from sys.fn_my_permissions(null, 'server');
Run Code Online (Sandbox Code Playgroud)
我认为您在服务器级别没有什么有趣的,至少从您所说的来看,您似乎缺乏VIEW ANY DEFINITION
许可,当然您不是sysadmin
。
然后像这样检查您的数据库角色:
select *
from sys. user_token;
Run Code Online (Sandbox Code Playgroud)
这不仅为roles
您提供了您所属的成员,而且还为您提供了users
可以访问此数据库的所有信息。如果您是映射到此数据库的许多 Windows 组的成员的 Windows 登录名,它会很有用,因为 simpleselect user
将返回您的 win 帐户(我们Windows Authentication
现在正在讨论)。
我想这就是我在你的情况下能给你的建议。探索您拥有哪些权限,您是哪些角色的成员,然后可能会获得对您表的访问权限
第二补充部分
现在我想给出我的版本,即OP 只能看到sa
登录,而他不是sa
,而在以 Windows 主体身份登录时看不到任何其他登录
是的,兼容性视图syslogins
确实没有显示所有安全主体:至少它没有显示固定的服务器角色。但它与 Windows 主体没有问题,我也在 SQL Server 2014 上控制它。
那么OP怎么可能只sa
在查询syslogins
以Windows主体身份登录时才能看到呢?为什么他看不到自己的win登录,无论是win帐户还是win组,BUILTIN\Users或像这样的东西?
简单的答案可能是 OP 搞错了,确实看到了另一个登录信息,但告诉我们他只看到了 sa
我可以给出的另一个也是唯一的答案是: 根本没有映射到此服务器的 WIN USER
这种情况只能在版本重现2005/2008/2008 R2
通过授予CONNECT SQL
给public
角色
因此,这里的情景:我们是在SQL Server 2008 R2
和某人授予CONNECT SQL
对public
服务器角色。
那么,在这种情况下,ALL THE ACTIVE DIRECTORY 可以登录到 SQL Server,而根本不需要相应的登录!
在图中,Windows 主体hp2\Mary
已成功登录到我的本地实例(实例不必是本地的,它只是我笔记本上的一个复制),根本没有任何相应的登录。
玛丽是不是成员BUILTIN\Administrators
(也许有人甚至更好的丢弃登录都拥有素净摄制),她看到的登录是什么只sa
。
和执行OP的代码,她只得到了sa
以及
只是为了证明没有假货,并且我的本地 2008 R2 实例充满了登录信息,并且不仅sa
我附上了带有 2 个 SSMS 的笔记本的整个屏幕截图,第一个在系统管理员 Anna 下启动,另一个在没有权限的情况下登录,甚至没有映射:玛丽
更新 我想出了另一种可能导致 OP 看到的情况:
CONTAINED DATABASE
Run Code Online (Sandbox Code Playgroud)
从 2012 年开始,数据库可以配置为CONTAINED
.
在这种情况下,数据库而不是服务器可以对用户进行身份验证。用户将只看到创建它的数据库和(惊讶!)syslogins
视图,在我看来,它应该根本无法访问user
,仍然显示sa
主体。当然,它没有显示用户的成功登录,因为它根本不存在
归档时间: |
|
查看次数: |
1548 次 |
最近记录: |