Если у вас есть сложный запрос с подзапросами, объединениями и т. д., применяется ли безопасность на уровне строк во время выполнения SQL или к конечному набору результатов?
Когда безопасность на уровне строк обеспечивается SQL Server?
Ответы (1)
При доступе к данным оценивается безопасность на уровне строк (RLS). См. Система базы данных применяет ограничения доступа каждый раз, когда делается попытка доступа к данным с любого уровня.
Логика ограничения доступа расположена на уровне базы данных, а не отдельно от данных на другом уровне приложений. Система базы данных применяет ограничения доступа каждый раз при попытке доступа к данным с любого уровня. Это делает вашу систему безопасности более надежной и надежной за счет уменьшения площади поверхности вашей системы безопасности.
Согласно http://sharewithpals.com/articles/637dd719/Steps-to-configure-row-level-security-in-SQL-Server-2016:
При выполнении оператора select строки фильтруются на основе контекста выполнения запроса.
Согласно https://www.sqlshack.com/introduction-to-row-level-security-in-sql-server/
Безопасность на уровне строк в SQL Server используется для ограничения пользователей на уровне базы данных, а не для обработки ограничений на уровне приложения. Этот контроль доступа применяется базой данных каждый раз, когда выполняется запрос к таблице, независимо от уровня приложения.
То есть не только на окончательный набор результатов?
@thebluephantom правильно, а не только в окончательном наборе результатов. Так получилось, что
select
будет применять/соблюдать RLS, и ваши окончательные результаты будут отражать это.