データベースにRBAC-RLSセキュリティを実装していますが、質問があります。このシナリオは次のとおりです。同じテーブルの複数のセキュリティ条件(FILTER | BLOCK)
私は、ログインしたユーザーにその特権があるかどうかを確認する1つの入力パラメーター@PermissionId
を持つ関数を持っています。データベース内の各役割は複数の権限に関連付けられ、各ユーザーは複数の役割を持つことができます。
テーブルProducts
を持っていて、アクセス許可があるユーザだけがテーブルの内容を表示できるようにしたいとします。
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('ReadProducts') ON Products
そして、それはOKですが、今私はまた、許可SystemAdministrator
を持っているし、彼はProducts
テーブルの内容を表示する権限をも持っている必要があります。
私はそれをすることになっているように、それがうまくいく、または2つの政策との間に矛盾があるでしょう
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('SystemAdministrator') ON Products
別のポリシーを追加した場合は?
その他の状況では、最初のポリシーに別のフィルタ述語を追加するとどうなりますか?だからそれは次のようになります:
CREATE SECURITY POLICY ReadProducts
ADD FILTER PREDICATE HasPermission('ReadProducts') ON Products
ADD FILTER PREDICATE HasPermission('SystemAdmin') ON Products
これは問題ありませんか?つまり、私がユーザーとしてこれらの2つの特権のいずれかを持っていれば、テーブルProducts
の内容を見ることができますか?