Почему вход в базу данных SQL Azure имеет право выбирать таблицы БД без привязки пользователя к БД? - PullRequest
0 голосов
/ 18 февраля 2019

В DB1 есть несколько таблиц.Я создал Login MyLogin в Master DB, не создавая пользователя для этого (или я создал, но удалил).Но теперь, по крайней мере, я проверил, что нет пользователя с таким же SID с MyLogin.Почему я все еще могу иметь привилегию для поиска в таблицах?

select * from sys.sysusers;   -- Check in DB1 
select * from sys.sql_logins; -- Check in Master DB    

1 Ответ

0 голосов
/ 18 февраля 2019

Перед тем, как создать логин, нам нужно проверить, существует ли логин.Демонстрационный код:

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 для баз данных .

Я думаю, поэтому у вас все еще может быть привилегия для поиска в таблицах.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...