Какое разрешение может предоставить право на просмотр всех разрешений в данной базе данных?
В моем текущем контексте группа поддержки программного обеспечения должна иметь возможность исследовать причину проблем с разрешениями, не имея возможности изменять разрешение самостоятельно. Я хочу, чтобы они могли просматривать разрешения для каждого входа / пользователя / ролей в базу данных. Если это невозможно на уровне базы данных, будет работать уровень сервера.
Согласно документации для документации для DMV sys.database_permissions:
Любой пользователь может видеть свои собственные разрешения. Чтобы увидеть разрешения для других пользователей, требуется ПРОСМОТР ОПРЕДЕЛЕНИЯ, ИЗМЕНИТЬ ЛЮБОГО ПОЛЬЗОВАТЕЛЯ или любое разрешение для пользователя. Чтобы увидеть определяемые пользователем роли, требуется ALTER ANY ROLE или членство в роли (например, public).
И, согласно документации для разрешений для пользователей, вы можете предоставить определение представления для пользователя.
Если вы используете что-то удаленно сложное со своими разрешениями, я скажу по опыту, что возможность выдавать себя за пользователя безмерно полезно при устранении таких проблем (поскольку вы можете вызывать такие вещи, как fn_my_permissions
, sys.login_token и sys.user_token).
Это было бы получено ПОСМОТРЕТЬ ОПРЕДЕЛЕНИЕ разрешения.
Однако вы, вероятно, не хотите разрешать им доступ к вашим серверам баз данных.
Альтернативный способ - запросить разрешения в вашей базе данных и предоставить им выходные данные.
Это можно сделать с помощью DMV или SQL-запросов. Есть несколько примеров в этот пост на StackOverflow.