2017-07-21 2 views
0

Si je développe sur une instance de ServiceNow avec de nombreux rôles utilisateur définis et pas beaucoup de documentation sur les fonctionnalités fournies par les rôles.ServiceNow: liste toutes les fonctions de rôle utilisateur existantes

Est-il possible d'examiner l'instance de la neige et déterminer les capacités qu'un rôle permet à l'utilisateur final , même dans ce cas, qu'une règle métier ou interface utilisateur définit la logique liée au rôle?

Cela peut-il être fait via un script backend de manière fiable?

Répondre

0

Vous pouvez vérifier ce code peut être utilisé

function getUserGroups(user_sys_id) { 
     var theUser = gs.getUser(); 
     theUser = theUser.getUserByID(user_sys_id); 
     return theUser.getMyGroups(); 
    } 
0

Vérifiez aussi celui-ci

function setGroupFilter(){ 
    var user = current.variables.user_name; 

    //Reset the filter query 
    current_groupsg_filter.reset(); 

    var answer = 'sys_idINjavascript:getMyGroups()'; 

    current_groupsg_filter.setQuery(answer); 
    current_groupsacRequest(null); 

    //if remove reqeust display slushbucket 
    if (addYN=="remove"){ 
    g_form.setDisplay('current_groups', true); 
    } 

    } 
1

Ce n'est pas très droit devant documentation sage ou par programmation.

Votre option principale consiste à interroger la table sys_security_acl_role pour un rôle et à répertorier la liste de contrôle d'accès associée.

Aussi la plupart des ACLs n'ont pas une bonne description et l'état avancé il faudrait que vous les lire aussi bien s'il n'y a pas rôle associé à une ACL.

Vous aurez besoin de regarder le name et operation de l'ACL pour saisir quel accès ils accordent.

Un exemple que vous pouvez exécuter comme script Contexte

var role = 'itil'; // role to check 

// query the ACLs with the role related 
var gr = GlideRecord('sys_security_acl_role'); 
gr.addQuery('sys_user_role.name', role); 
gr.query(); 

while (gr.next()) { 
    // only show active ACLs 
    if (gr.sys_security_acl.active) { 
     gs.print(gr.sys_security_acl.name + " (" + gr.sys_security_acl.operation + ") - " + gr.sys_security_acl.description); 
    } 
} 

La sortie dépend de votre instance, mais l'idée.

new_call (create) - Allow create for records in new_call, for users with role itil. 
ngbsm_view (create) - Allow create for records in ngbsm_view, for users with roles (itil, ecmdb_admin). 
...etc... 
+0

Merci Kirk, apprécier votre entrée, mais que les choses de couverture ne vais pas comme règles d'affaires avec 'si gs.getUser(). GetRoles(). IndexOf() == -1' par exemple, se demandant comment les gens vont tout simplement à propos de trouver toutes les références à un rôle. Il se peut que je doive demander directement à SNOW leur contribution, je ne pense pas qu'il existe une option viable pour découvrir des rôles hérités potentiellement problématiques prêts à l'emploi. – Anthropic

+1

Malheureusement, je ne crois pas qu'il existe un moyen de faire un inventaire complet pour un rôle. Une grande partie serait une inspection manuelle et il y a des changements dans chaque mise à niveau de fonctionnalité qui ne sont pas documentés. – Kirk