Имеет ли SQL Сервер права доступа на чтение для входа в систему на уровне сервера?
Да, но это не для ЛЮБОГО входа в систему, это на детальном уровне для каждого входа в систему: https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-server-principal-permissions-transact-sql
USE master;
GRANT VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
GO
Недостатком является то, что вы должны предоставлять определение представления для каждого входа в систему и каждый раз, когда создается новый вход в систему. Для новых входов в систему можно создать триггер DDL сервера, который предоставит разрешение VIEW DEFINITION для вновь созданного имени входа для вашего имени входа (или лучше создать для этого пользовательскую роль сервера)
CREATE TRIGGER ddl_trig_for_create_login
ON ALL SERVER
FOR CREATE_LOGIN
AS
BEGIN
declare @newlogin sysname = quotename(EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','sysname'));
declare @sql nvarchar(200) = 'GRANT VIEW DEFINITION ON LOGIN::'+ @newlogin +' TO public'; --<-- public just for testing.. change public to a custom server role
exec(@sql);
END
GO
Другой вариант (не проверен, но по логике это должно работать) было бы создать логин из сертификата или асимметричного ключа c, добавить логин cert / asym в роль securityadmin и затем подписать свой скрипт (тот, который читает логины) ключом cert / asym.