Why are security messages not displayed in the list?

Mio Matsushita
Mega Sage

*English follows Japanese*

 

Communityの皆さん、こんにちは

Security Data Filterの検証中に遭遇したセキュリティに関する奇妙な挙動について教えてください。

 

リストを表示した時に、ACLで拒否されたレコードがある場合に以下のメッセージが表示されることはご存知の通りです。

security message.png

しかし、ACLで拒否されているにもかかわらず、このメッセージが表示されないテーブルがあります。
例えば、インシデントテーブルではこのメッセージが表示されません。

 

再現手順
1. 完全に新しいPDIを用意します。(Yokohama)
2. インスタンスにログインして、Abel Tuter(ロールなしユーザー)に代理操作します。
3. タスクテーブルをリストで表示します。(https://devxxxxxx.service-now.com/task_list.do)
    レコードが表示されず、セキュリティメッセージが表示されます。
    "Number of rows removed from this list by Security constraints: 20"

task.png
4. 次に、インシデントテーブルをリストで表示します。(https://devxxxxxx.service-now.com/incident_list.do)
    レコードが表示されず、セキュリティメッセージも表示されません。

incident.png

セキュリティメッセージがインシデントテーブルで表示されないのはなぜでしょうか。

 

調査した内容

  • 念の為、ACLデバッグとAccess Analyzerの結果から、Abel Tuterがインシデントテーブルの任意のレコードの参照権限を持たないことを確認しました。
  • セキュリティメッセージが表示されないのは、ACLよりも前のクエリ段階の問題と考えましたが、関係しそうなQuery Business RuleとSecurity Data Filtersは見つけられませんでした。
  • インシデントテーブルと同じ、タスクテーブルの子テーブルの問題テーブルではセキュリティメッセージは表示されます。
  • Abel Tuterが参照可能なインシデントレコードが1件だけある場合、画像のようにインシデントテーブルに1レコードしか存在しない(もしくはバックエンド側のクエリでフィルタされている)ように見えます。
    incident2.png

この問題は私を困らせているわけではありませんが、何がこの挙動をもたらしているのかとても気になっています。

 

 

Hi Community

Please tell me about a strange security behavior you encountered while validating the Security Data Filter.

 

You know that when you view a list and there are records rejected by ACLs, you get the following message
security message.png

 

However, there are some tables that do not display this message even though they are denied by ACLs.
For example, the incident table does not display this message.

 

Steps to reproduce
1. Building a completely new PDI. (Yokohama)
2. Log in to the instance and impersonate to Abel Tuter (user without role).

3. Move to the task table. (https://devxxxxxx.service-now.com/task_list.do)

    records are not displayed and a security message is displayed.
    "Number of rows removed from this list by Security constraints: 20"

task.png
4. Next, move to the incident table. (https://devxxxxxx.service-now.com/incident_list.do)
    records are not displayed and the security message is not displayed.

incident.png

What is the reason why the security message is not displayed in the incident table?

 

Investigated

  • Just to be sure, I confirmed from ACL debugging and Access Analyzer results that Abel Tuter does not have permission to see any records in the Incident Table.
  • I thought that the lack of security messages was a problem at the query stage, prior to the ACL, but I could not find any Query Business Rule or Security Data Filters that might be involved.
  • The security message appears in the problem table but not in the incident table.
    Even though both are child tables of the task table.
  • If there is only one incident record that Abel Tuter can see, it looks like there is only one record in the incident table (or it is filtered by a query on the backend side) as shown in the image
    incident2.png

This issue does not bother me, but I am very curious as to what is causing this behavior.

1件の返信1

takagiko
Tera Guru

OOTBの状態であれば、[incident] テーブルの検索には "incident query" という名称の Before Query Business Rule が効いてその挙動になると思いますが、それではないでしょうか?