API de liste de contrôle d’accès : ServiceNow Fluent

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 5 minutes de lecture
  • L’API de liste de contrôle d’accès inclut des objets qui définissent les listes de contrôle d’accès [sys_security_acl] qui sécurisent des parties d’une application.

    Objet ACL

    Configurez une règle ACL personnalisée [sys_security_acl] pour sécuriser l’accès à de nouveaux objets ou pour modifier le comportement de sécurité par défaut.

    Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script.

    Tableau 1. Propriétés
    Nom Type Description
    $id Chaîne ou numéro Requis. ID unique pour l’objet de métadonnées fourni au format suivant, où <valeur> est une chaîne ou un nombre.
    $id: Now.ID[<value>]

    Lorsque vous créez l’application, cet ID est haché dans un sys_ID unique.

    table Chaîne Nom de la table à laquelle l’ACL s’applique.

    Cette propriété s’applique uniquement et est requise si la propriété type est l’une des valeurs suivantes : ux_data_broker, ux_page, ux_route,_action ou enregistrement.

    champ Chaîne Nom d’un champ de la table à sécuriser. Vous pouvez utiliser le caractère générique (« * ») pour sélectionner tous les champs.

    Cette propriété s’applique uniquement et est requise si la propriété type est l’une des valeurs suivantes : ux_data_broker, ux_page, ux_route,_action ou enregistrement.

    nom Chaîne Nom de l’ACL.

    Cette propriété s’applique uniquement et est requise si la propriété type est l’une des valeurs suivantes : rest_endpoint, ui_page, processeur, graphql, client_callable_flow_object ou client_callable_script_include.

    operation Chaîne Requis. L’opération que cette règle ACL sécurise. Une règle ACL ne peut sécuriser qu’une seule opération. Pour sécuriser plusieurs opérations, créez une règle ACL distincte pour chacune d’elles.

    L’opération doit être exécutée si la propriété type est client_callable_flow_object, client_callable_script_include, graphql, processor ou rest_endpoint,

    Valeurs valides : exécuter, créer, lire, écrire, supprimer, edit_task_relations, edit_ci_relations, save_as_template, add_to_list, report_on, list_edit, report_view, personalize_choices

    type Chaîne Type d’objet que cette règle ACL sécurise. Le type détermine les opérations qui sont disponibles.

    Après avoir créé une règle ACL, si vous souhaitez modifier le type, vous devez supprimer l’ACL et en créer une nouvelle avec le type approprié.

    Valeurs valides : record, rest_endpoint, ui_page, processor, graphql,_action, ux_data_broker, ux_page, ux_route, client_callable_flow_object, client_callable_script_include

    Par défaut : enregistrement

    Actif Booléen Marqueur indiquant si la règle ACL est appliquée.
    Valeurs valides :
    • true : la règle ACL est appliquée.
    • false : la règle ACL n’est pas appliquée.

    Valeur par défaut : true

    roles Tableau Les identificateurs variables des objets de rôle ou sys_ids des rôles qu’un utilisateur doit avoir pour accéder à l’objet. Pour plus d'informations, consultez API de rôle : ServiceNow Fluent.

    Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script.

    Remarque :
    Les utilisateurs disposant du rôle administrateur réussissent toujours cette vérification d’autorisation, car le rôle administrateur accorde automatiquement aux utilisateurs tous les autres rôles.
    script Script Fonction ou script en ligne précédé d’une balise de script . Le script personnalisé doit définir les autorisations requises pour accéder à l’objet.

    Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script.

    Remarque :
    Si la propriété type est graphql, les scripts ne sont pas pris en charge.

    Pour les fonctions, utilisez le nom d’une fonction, d’une expression de fonction ou d’une fonction par défaut exporté à partir d’un module JavaScript et importé dans le fichier .now.ts . Pour en savoir plus sur les modules JavaScript, reportez-vous à la section Modules JavaScript et bibliothèques tierces.

    Les scripts inline utilisent la balise script au format suivant :
    script: script`gs.info('info')`,
    Le script peut utiliser les valeurs des variables globales actuelles et précédentes et des propriétés système. Le script doit générer une réponse vrai ou faux de l’une des deux façons suivantes :
    • Renvoyer un jeu de variables de réponse sur une valeur vrai ou faux
    • Évaluer à vrai ou faux
    Dans les deux cas, les utilisateurs n’ont accès à l’objet que lorsque le script est défini sur vrai et que l’utilisateur remplit toutes les conditions de la règle ACL. Les conditions et le script doivent être définis sur vrai pour qu’un utilisateur puisse accéder à l’objet.
    Remarque :
    Si l’élément évalué se trouve dans une liste connexe, current pointe vers l’élément sur lequel se trouve la liste associée, et non vers l’élément actuel auquel l’ACL est destinée. Toutefois, si l’élément dont vous évaluez l’ACL ne se trouve pas dans une liste connexe, actuel pointe vers l’élément réel.
    admin_overrides Booléen Marqueur indiquant si les utilisateurs disposant du rôle administrateur réussissent automatiquement la vérification des autorisations pour cette règle ACL.
    Valeurs valides :
    • true : les administrateurs passent automatiquement la vérification des autorisations.
    • false : les administrateurs doivent disposer des autorisations définies dans cette règle ACL pour accéder à l’objet sécurisé. Utilisez les condition propriétés ou script pour créer une vérification des autorisations que les administrateurs doivent passer.

    Les utilisateurs administrateurs transmettent, quelles que soient les restrictions de script ou de rôle qui s’appliquent. Toutefois, le rôle personne, que seul ServiceNow le personnel peut affecter, a priorité sur l’option de remplacement administrateur. Si le rôle personne est affecté à une ACL, les utilisateurs administrateurs ne peuvent pas accéder à la ressource, même si admin_overrides la valeur est vrai. Pour plus d’informations, consultez Rôles système de base.

    Valeur par défaut : true

    condition Chaîne Requête de filtre qui spécifie les champs et les valeurs qui doivent être vrais pour que les utilisateurs puissent accéder à l’objet. Pour plus d'informations, consultez Operators available for filters and queries.

    Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script.

    description Chaîne Description de l’objet ou des autorisations que cette règle ACL sécurise.
    local_or_existing Chaîne Type d’attribut de sécurité à appliquer.
    Valeurs valides :
    • Local : attribut de sécurité basé sur la condition propriété qui est enregistré uniquement pour l’ACL dans laquelle il est créé.
    • Existant : attribut de sécurité existant à référencer dans la security_attribute propriété.

    Par défaut : local

    security_attribute Chaîne Conditions prédéfinies à utiliser. Par exemple, si un utilisateur emprunte l’identité d’un autre utilisateur. Pour en savoir plus sur les attributs de sécurité, reportez-vous à la section OOB (Out-of-Box) Security Attributes.

    Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script.

    Remarque :
    Pour les attributs de sécurité dont le Is localized champ est défini sur vrai, la propriété local_or_existing de l’ACL doit être définie sur Local. Si le Is localized champ est faux, la propriété local_or_existing doit être définie sur Existant.

    Valeurs valides : role_explicit, group_explicit, user_is_authenticated, emprunt d’identité, interactive_session, has_admin_role, rôle, logged_in, network_criteria, groupe, allow_unauth_roleless_acl

    decision_type Chaîne Indique si l’ACL doit autoriser ou refuser l’accès.
    Valeurs valides :
    • allow : l’ACL autorise l’accès.
    • refuser : l’ACL refuse l’accès.

    Par défaut : autoriser

    import { Acl } from "@servicenow/sdk/core";
    
    export default Acl({
        $id: Now.ID['task_delete_acl'],
        active: true,
        admin_overrides: true,
        type: 'record',
        table: 'task',
        field: 'description',
        operation: 'delete',
        roles: [adminRole, managerRole],
    })
    Les rôles référencés sont définis à l’aide de l’objet Role :
    import { Role } from "@servicenow/sdk/core";
    
    const managerRole = Role({ 
       $id: Now.ID['manager_role'], 
       name: 'x_snc_example.manager' 
    })
    
    const adminRole = Role({ 
       $id: Now.ID['admin_role'], 
       name: 'x_snc_example.admin', 
       contains_roles: [managerRole] 
    })