SQL Server の RLS が Windows 認証を使用していることは知っていますが、外部認証を使用することはできますか? Google や Microsoft auth のような?
C# Web API 2 を使用してテストを行っていますが、方法がわかりません。
前もって感謝します!
SQL Server の RLS が Windows 認証を使用していることは知っていますが、外部認証を使用することはできますか? Google や Microsoft auth のような?
C# Web API 2 を使用してテストを行っていますが、方法がわかりません。
前もって感謝します!
Row-Level-Security機能は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()
場合 ( )、またはクエリを実行しているユーザーが管理者ユーザーである場合( ) に 1 を返しますUSER_NAME() = 'Manager'
。
sp_set_session_contextとSESSION_CONTEXTを使用して、より複雑なロジックを構築することもできます。たとえば、.net
コード内およびset session context
開いている SQL セッションのセキュリティ アクセスを計算できます。次に、SESSION_CONTEXT
フィルタリング機能でアクセスを確認できます。