为什么在Azure中登录SQL DB有权在不将用户链接到数据库的情况下选择数据库表?

问题描述 投票:0回答:1

DB1中有一些表。我在主数据库中创建了登录MyLogin而没有为此创建用户(或者我已创建但已删除)。但现在,至少我检查过没有与MyLogin具有相同SID的用户。为什么我仍然有权搜索表格?

select * from sys.sysusers;   -- Check in DB1 
select * from sys.sql_logins; -- Check in Master DB    
login azure-sql-database privileges
1个回答
1
投票

在我们创建登录之前,我们需要检查登录是否存在。演示代码:

DROP LOGIN TestLogin;  
GO  

CREATE LOGIN TestLogin   
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;  

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';  
GO  

参考:CREATE LOGIN (Transact-SQL)

创建登录后,登录可以连接到SQL数据库,但只具有授予公共角色的权限。

但是当你表演ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [MyLogin],然后ALTER AUTHORIZATION ON DATABASE ::[DB1] TO [ServerAdmin]。这意味着将SQL数据库的所有者更改为MyLogin。

请参阅:ALTER AUTHORIZATION for databases

我认为这就是为什么你仍然有权搜索表格。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.