Les opérateurs utilisés dans NGL sont les suivants :
Logical
and
Utilisation : L'opérateur `et1 effectue une opération logique and des propriétés/énoncés immédiatement avant et après lui.
Syntaxe : propriété1 = valeur1 and propriété2 = valeur2
Exemple :
Microsoft365 sharepointtenant should-have sharingCapability = "Disabled" and enableAzureADB2BIntegration = false
Explication : NGL renverra toutes les applications Microsoft365 dont la capacité de partage est désactivée et l'option d'intégration B2B d'AzureAD est fausse.
or
Utilisation : l'opérateur or effectue une opération logique or sur les propriétés/états qui le précèdent et le suivent immédiatement.
Syntaxe : propriété1 = valeur1 or propriété2 = valeur2
Exemple :
Microsoft365 sharepointtenant should-have sharingCapability = "Disabled" or enableAzureADB2BIntegration = false
Explication : NGL renverra toutes les applications Microsoft365 dont la capacité de partage est désactivée ou dont l'option d'intégration B2B d'AzureAD est fausse.
not
Utilisation : l'opérateur not effectue une opération logique de type "not" sur les propriétés/énoncés qui le précèdent et le suivent immédiatement.
Syntaxe : (propriété1 = valeur) not(propriété1 = valeur)
Exemple :
Microsoft365 sharepointtenant should-have sharingCapability = "Disabled" and not enableAzureADB2BIntegration = false
Explication : NGL renvoie toutes les applications Microsoft365 dont la capacité de partage est désactivée et pour lesquelles l'option d'intégration B2B d'AzureAD n'est pas fausse.
Arithmetic
+
Utilisation : + L'opérateur effectue l'addition des valeurs qui le précèdent et le suivent immédiatement.
Syntaxe : len(list1) + len(list2) > 0
–
Utilisation : l'opérateur - effectue une soustraction des valeurs qui le précèdent et le suivent immédiatement.
Syntaxe : len(list1) – len(list2) > 0
*
Utilisation : l'opérateur * multiplie les valeurs qui le précèdent et le suivent immédiatement.
Syntaxe : propriété1 * 2 > 10
%
Utilisation : l'opérateur % renvoie le reste de la division de la valeur immédiatement avant et après lui.
Syntaxe : propriété1 % 4 = 0
/
Utilisation : l'opérateur / effectue la division des valeurs qui le précèdent et le suivent immédiatement.
Syntaxe : propriété1 / 4 > 0
Exemple :
microsoft365 securescore should-not-have controlscores with-any-element [ controlname = "AdminMFAV2" and (count / total < 1) ]
Relational
=
Utilisation : = L'opérateur compare la propriété/état/valeur qui le précède avec la propriété/état/valeur qui le suit, et renvoie un résultat booléen.
Syntaxe : property1 = property2
Exemple :
Microsoft365 sharepointtenant should-have sharingCapability = "Disabled"
Explication : NGL renverra toutes les applications Microsoft365 dont la capacité de partage est désactivée.
!=
Utilisation : !=L'opérateur annule une comparaison d'égalité entre la propriété/état/valeur qui le précède et la propriété/état/valeur qui le suit, et renvoie un résultat booléen.
Syntaxe : property1 != property2
Exemple :
Microsoft365 sharepointtenant should-have sharingCapability != "Disabled"
Explication : NGL renvoie toutes les applications Microsoft365 dont la capacité de partage n'est pas désactivée.
>
Utilisation : l'opérateur > effectue une comparaison plus grande que la propriété/état/valeur qui le précède avec la propriété/état/valeur qui le suit, et renvoie un résultat booléen.
Syntaxe : property1 > property2
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.
>=
Utilisation : >= L'opérateur effectue une comparaison supérieure ou égale entre les propriétés/états/valeurs qui le précèdent et les propriétés/états/valeurs qui le suivent, et renvoie un résultat booléen.
Syntaxe : property1 >= property2
Exemple :
microsoft365 malwarefilterpolicy should-have len(FileTypes) >= 10
Explication : NGL renverra toutes les politiques de filtrage des logiciels malveillants des applications Microsoft365 dont la longueur du type de fichier est supérieure ou égale à 0.
<
Utilisation : l'opérateur < effectue une comparaison entre les propriétés/états/valeurs qui le précèdent et les propriétés/états/valeurs qui le suivent, et renvoie un résultat booléen.
Syntaxe : property1 < property2
Exemple :
microsoft365 malwarefilterpolicy should-have len(FileTypes) < 101
Explication : NGL renverra toutes les politiques de filtrage des logiciels malveillants des applications Microsoft365 dont la longueur du type de fichier est inférieure à 101.
<=
Utilisation : <= L'opérateur effectue une comparaison inférieure ou égale entre les propriétés/états/valeurs qui le précèdent et les propriétés/états/valeurs qui le suivent, et renvoie un résultat booléen.
Syntaxe : property1 <= property2
Exemple :
microsoft365 malwarefilterpolicy should-have len(FileTypes) <= 100
Explication : NGL renverra toutes les politiques de filtrage des logiciels malveillants des applications Microsoft365 dont la longueur du type de fichier est inférieure ou égale à 100.
Utility
( )
Utilisation :
- `()` est utilisé pour capturer les paramètres d'entrée d'une fonction, ou pour ordonner des expressions booléennes. Consultez la rubrique Fonctions pour en savoir plus.
- '()' est utilisé pour regrouper des éléments.
Syntaxe : func1(arg1), (boolean1 ou boolean2) et (boolean3 ou boolean4)
Exemples :
github repository should-have age(created_at , "days") > 1
azuread deviceconfiguration should-have ( passwordminutesofinactivitybeforescreentimeout = 5 and passwordminutesofinactivitybeforelock = 0 ) or ( passcodeminutesofinactivitybeforescreentimeout = 5 and passcodeminutesofinactivitybeforelock = 0 )
[ ]
Utilisation : [ ] est utilisé pour accéder à un élément d'une liste. with-element utilise ces éléments dans les tableaux [ item1, item2 ]. Consultez les mots-clés pour en savoir plus.
Syntaxe : list_property [element1]
Exemple :
github app should-not-have write_permissions with-any-element [ "administration" ]
{ }
Utilisation : { } est utilisé pour représenter une structure. with-attribute utilise cet élément pour traiter les paires clé-valeur à l'intérieur des objets imbriqués { key1 : val1, key2 : val2 }.
Syntaxe : struct_attribute {member_attribute}
Exemple :
zoom User should-have in_meeting with-attribute { e2e_encryption = true }
Erreurs courantes
Cette section décrit les erreurs qui peuvent se produire avec les opérateurs.
| Error Scenario | Exemple incorrect de LGN | Exemple de message d'erreur | Marche à suivre pour corriger l'erreur |
|---|---|---|---|
| L'identifiant n'est pas une chaîne de caractères ou un nombre | AzureAD Les identités que l'utilisateur devrait avoir dans [5, 6, 7] | Erreur : le type de 'identities' devrait être une chaîne de caractères ou un nombre, il s'agit d'une liste. | Utilisez une propriété qui correspond au type de données requis. Consultez les fichiers DOM pour en savoir plus. Par exemple : l’utilisateur AzureAD devrait avoir un numéro de téléphone mobile dans ["1-000-000-0123","000-000-1234"] |
| L'identificateur ne correspond pas au type primitif dans le bloc IN | AzureAD User should-have employeeHireDate in ["5"] | Erreur : "employeeHireDate" de type "number" ne peut être comparé à une chaîne de caractères. | 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 doit avoir employeeHireDate dans [5] : L'utilisateur AzureAD devrait avoir employeeHireDate dans [5]. |
| Comparaison de deux types de données différents | AzureAD L'utilisateur doit avoir un département = true | Erreur : le type gauche "string" devrait correspondre au type droit "boolean" dans l'opération de comparaison "=". | Veillez à ce que le même type de données soit utilisé pour la comparaison. Par exemple : L'utilisateur AzureAD doit avoir un département = "abc" |
| Utiliser > ou < pour comparer deux valeurs booléennes | AzureAD User should-have isResourceAccount > true | Erreur : opération non supportée '>' sur le type 'boolean' | Seul l'opérateur '=' est applicable à la comparaison booléenne. Par exemple, l'utilisateur AzureAD doit avoir isResourceAccount = true : L'utilisateur AzureAD doit avoir isResourceAccount = true |

