0

我知道 SQL Server 的 RLS 使用 Windows 身份验证,但是可以使用外部身份验证吗?像谷歌或微软身份验证?

我正在使用 C# Web API 2 对其进行测试,但无法弄清楚如何。

提前致谢!

4

1 回答 1

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_contextSESSION_CONTEXT来构建更复杂的逻辑。例如,您可以计算.net代码中的安全访问以及set session context您正在打开的 SQL 会话。然后,SESSION_CONTEXT您可以使用您的过滤功能检查访问权限。

于 2018-02-27T07:38:52.970 回答