MS SQL Разрешения системного логина - PullRequest
0 голосов
/ 08 апреля 2020

Я пытался простым запросом перечислить Windows Группы и их логины. Как вы можете видеть ниже, у моего второго принципала, похоже, нет соответствующего имени входа.

Однако, когда sys_admin запускает точно такой же код, он получает «MyLogin2Name» вместо того NULL, который я вижу.

Кто-нибудь знает, что здесь происходит? Это заставляет нас обоих чесать наши головы! : (

USE myDB;
SELECT 
p.principal_id, p.[name], sl.[name]
FROM sys.database_principals p
LEFT OUTER JOIN sys.syslogins sl
ON p.sid = sl.sid
WHERE p.[type] in ('G');

enter image description here

1 Ответ

1 голос
/ 08 апреля 2020

когда sys_admin запускает точно такой же код, он получает «MyLogin2Name»

Право, что системный администратор может видеть все логины. Обычный пользователь не может. Это поведение описано в sys.server_principals, который является устаревшим представлением для входов в систему:

Разрешения

Любой вход в систему может видеть свое собственное имя входа, системные входы и фиксированные роли сервера. Для просмотра других входов в систему требуется ALTER ANY LOGIN или разрешение на вход в систему. Для просмотра пользовательских серверных ролей требуется ALTER ANY SERVER ROLE или членство в роли.

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или на которых он находился. предоставил некоторое разрешение. Для получения дополнительной информации см. Конфигурация видимости метаданных.

sys.server_principals

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