<h2>ACL debugging tools</h2><br/><div style="overflow-x:auto"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta content="text/html; charset=UTF-8" /><meta name="copyright" content="(C) Copyright 2022" /><meta name="DC.rights.owner" content="(C) Copyright 2022" /><meta name="DC.Type" content="concept" /><meta name="DC.Title" content="ACL debugging tools" /><meta name="abstract" content="Field level debugging and access ACL rule output messages are available to help you troubleshoot and debug ACLs. The ACL configuration watcher lets you know what related ACLs exist when you modify one." /><meta name="description" content="Field level debugging and access ACL rule output messages are available to help you troubleshoot and debug ACLs. The ACL configuration watcher lets you know what related ACLs exist when you modify one." /><meta name="DC.subject" content="ACLs, debugging" /><meta name="keywords" content="ACLs, debugging" /><meta name="DC.Creator" content="ServiceNow" /><meta name="DC.Date.Created" content="2022-02-03" /><meta name="DC.Date.Modified" content="2022-02-11" /><meta name="DC.Format" content="XHTML" /><meta name="DC.Identifier" content="c_AccessControlRulesDebug" /><link rel="stylesheet" type="text/css" href="../../../CSS/commonltr.css" /><title>ACL debugging tools</title></head><body id="c_AccessControlRulesDebug"> <h1 class="title topictitle1" id="ariaid-title1">ACL debugging tools</h1> <div class="body conbody"><p class="shortdesc">Field level debugging and access ACL rule output messages are available to help you troubleshoot and debug ACLs. The ACL configuration watcher lets you know what related ACLs exist when you modify one.</p> <div class="section" id="c_AccessControlRulesDebug__section_qdz_23n_l1b"><h2 class="title sectiontitle">Field level debugging</h2> <p class="p">When debugging is enabled, a small bug icon (<img class="image icon" id="c_AccessControlRulesDebug__image_y3p_sv2_2r" src="../image/Debug.png" alt="Debug icon" />) appears beside each field with an ACL rule. Clicking the icon lists the ACL rules that apply for the field and the evaluation results. Enable debugging by navigating to <span class="ph menucascade"><span class="ph uicontrol">System Security</span> > <span class="ph uicontrol">Debugging</span> > <span class="ph uicontrol">Debug Security Rules</span></span>.</p> <div class="p"> <div class="fig fignone" id="c_AccessControlRulesDebug__fig_agp_s33_hw"><span class="figcap"><span class="fig--title-label">Figure 1. </span>Field level security on an incident</span> <img class="image" id="c_AccessControlRulesDebug__image_bgp_s33_hw" src="../../security/image/field_level_debugging.png" alt="Field level security on an incident" /> </div> </div> <p class="p">After enabling ACL debugging, you can impersonate another user to see what ACL rules the user passes and fails. When you impersonate a user, you can only see what that user is allowed to see. For example, you cannot view a record that an ACL prevents the user from seeing. To make debugging easier, read-only access to certain ACL-related tables is enabled by default, even when impersonating a user that does not have read access to the tables. To change this functionality, set the following property to <span class="ph uicontrol">false</span>.</p> <p class="p">To enable ACL rule debugging, navigate to <span class="ph menucascade"><span class="ph uicontrol">System Security</span> > <span class="ph uicontrol">Debug Security Rules</span></span>.</p> <div class="p"> <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="c_AccessControlRulesDebug__table_bx2_rvk_yy" class="table" frame="border" border="1" rules="all"><colgroup><col style="width:33.33333333333333%" /><col style="width:33.33333333333333%" /><col style="width:33.33333333333333%" /></colgroup><thead class="thead" style="text-align:left;"><tr class="row"><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e116">System property</th><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e119">Description</th><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e122">Default setting</th></tr></thead><tbody class="tbody"><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e116 "><span class="keyword parmname">glide.security.access_acl_as_impersonator</span></td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e119 ">Allows read access to the following tables while impersonating a user: sys_security_acl, sys_security_operation, sys_security_type, and sys_user_role. As a result, the impersonating user can read data that the impersonated user cannot read.</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e122 ">true<div class="note note"><span class="notetitle">Note:</span> When the property is set to false, the impersonated user might be prevented from reading ACL-related data. In this case, a second session logged in as admin or security_admin might be required to debug ACLs.</div> </td></tr></tbody></table> </div> </div> </div> <div class="section" id="c_AccessControlRulesDebug__section_acp_p3n_l1b"><h2 class="title sectiontitle">ACL rule output messages</h2> <p class="p">ACL debugging displays ACL rule output messages at the bottom of each list and form. The output message displays the following:</p> <div class="p"> <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="c_AccessControlRulesDebug__table_obc_gcf_2r" class="table" frame="border" border="1" rules="all"><colgroup><col /><col /></colgroup><thead class="thead" style="text-align:left;"><tr class="row"><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e170">Message element</th><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e173">Description</th></tr></thead><tbody class="tbody"><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e170 ">TIME</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e173 ">The total time used to process this ACL rule.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e170 ">PATH</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e173 ">Information that uniquely identifies each ACL rule in the format: <span class="ph filepath"><ACL rule type>/<ACL rule name>/<Operation></span>.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e170 ">CONTEXT</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e173 ">The object being evaluated by the ACL rule.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e170 ">RC</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e173 ">The return code of the ACL rule. A true value passes the ACL rule. A false value fails the ACL rule.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e170 ">RULE</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e173 ">A brief summary of processors and scripts, followed by ACL results for each table-level and field-level ACL evaluation. Most ACL evaluations show an overall pass or fail result followed by a breakdown of the results for each type of ACL criteria:<ul class="ul" id="c_AccessControlRulesDebug__ul_lfn_g43_hw"><li class="li">iAccessHandler: An internal system check using hidden source code on the platform. This is a system security check that you cannot modify. IAccessHandler can grant or deny access to a resource without evaluating ACLs. If IAccessHandler is ignored, then the ACLs are evaluated. You cannot modify the IAccessHandler checks in any way. For example, an IAccessHandler implementation is used for access checks on application resources and this cannot be changed.<p class="p">This is available starting with the <span class="ph">Istanbul</span> release.</p> </li><li class="li">Roles: Verification that the user has the correct role.</li><li class="li">Condition: Verification that the user passed the condition specified on the ACL rule (if any).</li><li class="li">Script: Verification that the user passed the script specified on the ACL rule (if any).</li></ul> </td></tr></tbody></table> </div> </div> <p class="p">The icons that appear show how the ACL was evaluated:</p> <div class="p"> <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="c_AccessControlRulesDebug__table_tg2_qcf_2r" class="table" frame="border" border="1" rules="all"><colgroup><col /><col /></colgroup><thead class="thead" style="text-align:left;"><tr class="row"><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e267">Icon</th><th class="entry cellrowborder" style="vertical-align:top;" id="d171391e270">Description</th></tr></thead><tbody class="tbody"><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e267 ">A green checkmark (<img class="image icon" id="c_AccessControlRulesDebug__image_r2g_5cf_2r" src="../image/GreenCheckmark.png" alt="Green checkmark" />)</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e270 ">Indicates the table or field passed the criteria.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e267 ">A red x icon (<img class="image icon" id="c_AccessControlRulesDebug__image_mmm_ycf_2r" src="../image/RedX.png" alt="Red x icon" />)</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e270 ">Indicates the table or field did not pass.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e267 ">An empty gray circle icon (<img class="image icon" id="c_AccessControlRulesDebug__image_ztd_ddf_2r" src="../image/GrayCircle.png" alt="Grey circle icon" />)</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e270 ">Indicates the ACL evaluation did not need to be performed.</td></tr><tr class="row"><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e267 ">A blue checkmark, x, or empty circle</td><td class="entry cellrowborder" style="vertical-align:top;" headers="d171391e270 ">Indicates that the ACL was taken from a cached result of a previous ACL check. The icons mean the same as the above.</td></tr></tbody></table> </div> </div> <div class="p">You can perform these actions on the ACL debug output:<ul class="ul" id="c_AccessControlRulesDebug__ul_i1n_4j3_hw"><li class="li">Select or clear these check boxes at the top of the debug output:<ul class="ul" id="c_AccessControlRulesDebug__ul_fxh_4n3_hw"><li class="li"><span class="ph uicontrol">Security rules</span>: Show or hide the results of the ACL checks.</li><li class="li"><span class="ph uicontrol">Others</span>: Show or hide other warnings or messages.</li></ul> </li><li class="li">Click the name of the ACL next to any of the output messages to open that ACL record.<div class="p"> <div class="fig fignone" id="c_AccessControlRulesDebug__fig_smn_hk3_hw"> <img class="image" id="c_AccessControlRulesDebug__image_tmn_hk3_hw" src="../../security/image/ACL_name_link.png" alt="Click the ACL link" /> </div> </div> </li><li class="li">Hover the cursor over any of the icons for the four ACL checks to see more information.<div class="p"> <div class="fig fignone" id="c_AccessControlRulesDebug__fig_g1y_2l3_hw"> <img class="image" id="c_AccessControlRulesDebug__image_h1y_2l3_hw" src="../../security/image/ACL-hover.png" alt="Hover over an ACL icon" /> </div> </div> </li></ul> </div> </div> </div> </body></html></div>