Что касается влияния на производительность, я не знаю ни одного для этого или любого другого разрешения.
Что касается:
Что они могут сделать, что им может быть запрещено
Проще говоря, они могут видеть вещи, которые, возможно, они не должны видеть. И не думайте об этом с точки зрения просто SQL Server. Это конкретное разрешение также управляет DMV, такими как sys.dm_os_sys_info и многими другими, которые предоставляют информацию о хост-машине (оборудование, службы и т. Д.). Вы не всегда знаете, какая информация может быть использована против вас. И даже если вы согласны с тем, что кто-то теперь видит все, что разрешено этим разрешением, иногда DMV добавляются в Пакеты обновлений / Накопительные обновления, и поэтому, возможно, появляется новая информация, о которой вы не знаете.
Я не могу найти какое-либо руководство о том, как оценить, ДОЛЖНО ли это быть предоставлено или нет.
Поскольку вы уже упоминали о предоставлении людям минимальных необходимых разрешений, на самом деле все сводится к следующему: нужно ли кому-то это разрешение для специального использования? То есть кому-то нужна гибкость, чтобы придумывать свои собственные запросы? Будет ли работать создание одной или нескольких хранимых процедур и / или TVF с несколькими операторами? Если это так, то вам не нужно предоставлять разрешения какому-либо пользователю (который затем свободен от всего, что разрешено этим разрешением), и вместо этого вы предоставляете разрешения для кода (который выполняет только то, для чего он предназначен). Подписание модуля - это то, как вы выполняете это. Общая концепция:
- Создайте хранимую процедуру (ы) и / или TVF (ы) с несколькими утверждениями для выполнения желаемого действия.
- Предоставление
EXECUTEэтих модулей любому пользователю и / или ролям, необходимым для выполнения этих действий.
- Создать сертификат
- Подпишите модуль (и), используя этот сертификат (используя
ADD SIGNATURE)
- Скопируйте сертификат в
[master]базу данных (т.е. создайте сертификат, [master]используя открытый ключ сертификата, используемого для подписи модуля (ей).
- Создать логин из сертификата, скопированного в
[master]
- Предоставьте любые разрешения уровня экземпляра, необходимые для этого входа в систему на основе сертификатов (что может включать добавление его к ролям уровня экземпляра).
Для некоторых примеров, пожалуйста, смотрите:
sys.dm_db_missing_index_details), и они хотят знать, каковы именно риски, связанные с этим.