Utilisez les fonctions des règles pour identifier des informations spécifiques sur les types de ressources. Les fonctions utilisent la syntaxe suivante :
<function>(<argument>)
Vous trouverez ci-dessous les fonctions utilisées dans NGL :
len
Utilisation : len est une fonction qui calcule la longueur d'une propriété de liste ou d'une propriété de chaîne et la renvoie sous la forme d'une valeur entière.
Syntaxe : (list_property1) len(liste_propriété1)
Exemple :
microsoft365 malwarefilterpolicy should-have len(FileTypes) > 0
Explication : NGL renverra toutes les politiques de filtrage des logiciels malveillants des applications Microsoft365 dont la longueur du type de fichier est supérieure à 0.
age
Utilisation : age est une fonction qui calcule la différence de temps entre une propriété temporelle et l'heure actuelle. Elle prend deux paramètres, le nom de la propriété temporelle et l'unité de temps sous forme de chaîne, et renvoie un entier représentant la différence de temps de cette propriété temporelle mesurée dans les unités fournies à la fonction. La valeur de la propriété doit être un nombre entier représentant une époque (Unix). days et hours comme unités de temps.
Syntaxe : (time_property1, "unit_of_time") age(time_property1, "unit_of_time")
Exemple :
github repository should-have age(created_at , "days") > 1
Explication : NGL renvoie une liste des dépôts GitHub qui ont été créés avant 1 jour et plus.
correspondance de texte
Utilisation : textmatch est une fonction qui évalue l'expression régulière spécifiée par rapport à une propriété de chaîne donnée. Si la chaîne contient le motif, il renvoie true sinon false. Voir les différentes expressions utilisées avec textmatch dans l'article Comment utiliser la fonction textmatch .
Syntaxe : (propriété_chaîne, motif_regex) textmatch(propriété_chaîne, motif_regex)
Exemple :
azuread oauth2permissiongrant should-not-have textmatch(scope, "AppRoleAssignment.ReadWrite.All") = true
Explication : NGL génère des conclusions si la valeur "scope" est égale à la chaîne "AppRoleAssignment.ReadWrite.All" (c.-à-d. vrai).
Erreurs courantes
Cette section décrit les erreurs qui peuvent se produire avec les fonctions.
| Error Scenario | Exemple incorrect de LGN | Exemple de message d'erreur | Marche à suivre pour corriger l'erreur |
|---|---|---|---|
| Fonction non définie | AzureAD oauth2permissiongrant should-not-have text-match(scope, "AppRoleAssignment.ReadWrite.All") = true | Erreur : fonction text-match non définie | Utilisez le nom de fonction correct. Par exemple : AzureAD oauth2permissiongrant should-not-have textmatch(scope, "AppRoleAssignment.ReadWrite.All") = true |
| Mauvais type pour la fonction len | L'utilisateur AzureAD devrait avoir len(employeeHireDate) = 5 | Erreur : len() ne supporte que les chaînes de caractères et les listes, il a obtenu un nombre. | Utilisez une propriété qui satisfait au type de données requis. Pour en savoir plus, consultez les fichiers DOM. Par exemple, l'utilisateur AzureAD devrait avoir len(mobilePhone) : AzureAD User should-have len(mobilePhone) < 11 |
| Le premier paramètre de textmatch n'est pas une propriété | AzureAD User should-have textmatch("5", "5") = true | Erreur : textmatch() n'accepte qu'une propriété comme premier paramètre, a obtenu une chaîne de caractères. | Utilisez le premier paramètre comme propriété dans la recherche de texte. Voir la fonction textmatch pour plus d'informations. Par exemple : AzureAD User should-have textmatch(department, "eng") = true |
| La propriété utilisée pour la recherche de texte n'est ni une chaîne de caractères ni une liste de chaînes de caractères | AzureAD User should-have textmatch(employeeHireDate, "department") = true | Erreur : la fonction textmatch() ne prend en charge que les propriétés de type « string » ou « list ». | Utilisez une propriété qui satisfait au type de données requis. Par exemple:AzureAD User should-have textmatch ( department, "Retail") = true |
| Le deuxième paramètre de la recherche de texte n'est pas une chaîne de caractères | AzureAD Correspondance de texte entre l'utilisateur et le service (département, 5) = true | Erreur : textmatch() devrait être une chaîne de caractères, mais a obtenu un nombre | Utilisez un modèle de chaîne pour effectuer la correspondance. Par exemple : AzureAD User should-have textmatch ( department, "Retail") = true |
| Le premier paramètre de l'âge n'est pas une propriété | AzureAD User should-have age("createdDateTime", "days") > 1 | Erreur : age() n'accepte qu'une propriété comme premier paramètre, a obtenu une chaîne de caractères | Utilisez la propriété comme premier paramètre. Par exemple, l'utilisateur AzureAD devrait avoir age(createdDateTime, jours) : AzureAD User should-have age(createdDateTime, "days") > 1 |
| Mauvaise unité de conversion | AzureAD User should-have age(createdDateTime, "years") > 1 | Erreur : le paramètre de conversion de la date et de l'heure devrait être des jours ou des heures, mais pas des années. | Utilisez l'unité de temps correcte. Par exemple, l'utilisateur AzureAD devrait avoir age(createdDateTime, jours) : AzureAD User should-have age(createdDateTime, "days") > 1 |
| L'identifiant n'est pas un numéro | AzureAD User should-have age(department, "days") > 1 | Erreur : age() only supports a property of données type number, got 'department' of type 'string' | Utilisez les propriétés des types de données numériques avec l'âge. Par exemple, l'utilisateur AzureAD devrait avoir age(createdDateTime, jours) : AzureAD User should-have age(createdDateTime, "days") > 1 |

