API de la liste de contrôles d’accès : ServiceNow Fluent
L’API Liste de contrôle d’accès définit des listes de contrôle d’accès [sys_security_acl] qui sécurisent certaines parties d’une application.
Pour des informations générales sur les listes de contrôle d’accès (ACL), reportez-vous à la section Access Control List Rules.
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.
| Nom | Type | Description |
|---|---|---|
| $id | Chaîne ou numéro | Requis. ID unique pour l’objet de métadonnées. Lorsque vous créez l’application, cet ID est haché en une sys_id unique. Pour en savoir plus, consultez ServiceNow Fluent Constructions linguistiques. Format : |
| operation | Chaîne | Requis. Opération sécurisée par cette règle ACL. 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’entre elles. L’opération doit être Valeurs valides :
|
| type | Chaîne | Requis. Type d’objet sécurisé par cette règle ACL. Le type détermine les opérations 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 correct. Valeurs valides :
Par défaut : enregistrement |
| actif | Booléen | Marqueur indiquant si la règle ACL est appliquée. Valeurs valides :
Par défaut : true |
| adminOverrides | Booléen | Marqueur indiquant si les utilisateurs ayant le rôle administrateur réussissent automatiquement la vérification des autorisations pour cette règle ACL. Valeurs valides :
Par défaut : true |
| script | Script | Script personnalisé qui définit les autorisations requises pour accéder à l’objet. Cette propriété prend en charge une fonction d’un module JavaScript, une référence à un autre fichier dans l’application qui contient un script ou JavaScript en ligne. Les ACL doivent inclure un ou plusieurs rôles, un attribut de sécurité, une condition ou un script. Remarque : Si la propriété de type est graphql, les scripts ne sont pas pris en charge.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 deux manières :
Remarque : Si l’élément évalué se trouve dans une liste connexe, current pointe vers l’élément sur lequel se trouve la liste connexe, et non vers l’élément actuel auquel l’ACL est destinée. Toutefois, si l’élément pour lequel vous évaluez l’ACL ne se trouve pas dans une liste connexe, la liste actuelle pointe vers l’élément réel.Format :
|
| description | Chaîne | Description de l’objet ou des autorisations sécurisés par cette règle ACL. |
| localOuExistant | Chaîne | Type d’attribut de sécurité à appliquer. Valeurs valides :
Par défaut : local |
| Type de décision | Chaîne | Une option indiquant si l’ACL doit autoriser ou refuser l’accès. Valeurs valides :
Par défaut : allow |
| 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 en savoir plus, 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. |
| roles | Tableau | Liste d’identificateurs de variables d’objets de rôle ou de sys_ids de rôles qu’un utilisateur doit avoir pour accéder à l’objet. Pour plus d'informations, consultez API du 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 ayant le rôle administrateur réussissent toujours cette vérification des autorisations car le rôle administrateur leur accorde automatiquement tous les autres rôles. |
| securityAttribute | Chaîne | Conditions prédéfinies à utiliser par l’ACL. Par exemple, si un utilisateur emprunte l’identité d’un autre utilisateur. Pour plus d’informations 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é localOrExisting de l’ACL doit être définie sur Local. Si le Is localized champ est faux, la propriété localOrExisting doit être définie sur Existing. |
| Table | Chaîne | Le nom de la table à laquelle l’ACL s’applique. Cette propriété ne s’applique et n’est requise que 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 dans la table à sécuriser. Vous pouvez utiliser le caractère générique (« * ») pour sélectionner tous les champs. |
| nom | Chaîne | Nom de l’ACL. Cette propriété ne s’applique et n’est requise que 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. |
| Politique de protection | Chaîne | Une politique qui détermine si une personne peut afficher ou modifier l’include de script après l’installation de l’application sur son instance. Si cette propriété n’est pas définie, d’autres développeurs d’applications peuvent personnaliser l’include de script. Valeurs valides :
|
| $meta | Objet | Métadonnées pour les métadonnées de l’application. Avec la propriété installMethod , vous pouvez mapper les métadonnées d’application à un répertoire de sortie qui ne se charge que dans des circonstances spécifiques. Valeurs valides pour installMethod :
|
import { Acl } from "@servicenow/sdk/core";
export default Acl({
$id: Now.ID['task_delete_acl'],
active: true,
adminOverrides: true,
type: 'record',
table: 'task',
field: 'description',
operation: 'delete',
roles: [adminRole, managerRole],
})
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',
containsRoles: [managerRole]
})