我知道 SQL Server 的 RLS 使用 Windows 身份验证,但是可以使用外部身份验证吗?像谷歌或微软身份验证?
我正在使用 C# Web API 2 对其进行测试,但无法弄清楚如何。
提前致谢!
我知道 SQL Server 的 RLS 使用 Windows 身份验证,但是可以使用外部身份验证吗?像谷歌或微软身份验证?
我正在使用 C# Web API 2 对其进行测试,但无法弄清楚如何。
提前致谢!
行级别安全功能不使用 Windows 身份验证。您正在创建自己的函数,用作过滤谓词。例如,您可以使用内置函数USER_NAME()
(查看官方文档以获取完整的工作示例):
CREATE SCHEMA Security;
GO
CREATE FUNCTION Security.fn_securitypredicate(@SalesRep AS sysname)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS fn_securitypredicate_result
WHERE @SalesRep = USER_NAME() OR USER_NAME() = 'Manager';
SalesRep
当列中的一行与执行查询的用户相同 ( @SalesRep = USER_NAME()
) 或执行查询的用户是 Manager 用户 ( )时,此函数返回 1 USER_NAME() = 'Manager'
。
您还可以使用sp_set_session_context和SESSION_CONTEXT来构建更复杂的逻辑。例如,您可以计算.net
代码中的安全访问以及set session context
您正在打开的 SQL 会话。然后,SESSION_CONTEXT
您可以使用您的过滤功能检查访问权限。