【发布时间】:2021-10-12 17:14:07
【问题描述】:
如果您有一个包含子查询、连接等的复杂查询,行级安全性是在 SQL 执行期间应用还是在最终结果集上应用?
【问题讨论】:
标签: sql-server row-level-security
如果您有一个包含子查询、连接等的复杂查询,行级安全性是在 SQL 执行期间应用还是在最终结果集上应用?
【问题讨论】:
标签: sql-server row-level-security
访问数据时,会评估行级安全性 (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 中的行级安全性用于在数据库级别限制用户,而不是在应用程序级别处理限制。每次对表执行查询时,数据库都会应用此访问控制,而与任何应用程序层无关。
【讨论】:
select 将申请/授予 RLS,您的最终结果将反映这一点。