Les mots-clés suivants sont pris en charge par NGL :
Hierarchical
with-attribute
Utilisation : le mot-clé with-attribute est utilisé avec des objets imbriqués (json).
Syntaxe : propriété1 with-attribute { propriété2 = valeur2}
Exemple :
GoogleWorkspace GroupSetting should-have entry with-attribute { enableCollaborativeInbox = false }
with-element
Utilisation : Le mot-clé with-element est utilisé pour spécifier une relation hiérarchique (ou parent-enfant) entre les propriétés précédentes et suivantes, où la propriété parent est une liste et la propriété enfant est un membre.
Syntaxe : property1 with-element [ property2 = value2]
Exemple :
microsoft365 sharingpolicy should-have sharingenabled = false or domains with-element [ sharingalloweddetails = "ContactsSharing" ]
with-any-element
Utilisation : le mot-clé with-any-element est utilisé pour spécifier une condition dans laquelle n'importe lequel des membres des propriétés de la liste parente correspond à la condition qui le suit.
Syntaxe : property1 with-any-element [ ip = "0.0.0.0" ]
Exemple :
AzureAD User should-not-have userRegistrationDetails with-attribute { methodsRegistered with-any-element [ "mobilePhone" ] }
exists
Utilisation : le mot clé exists vérifie la présence d'une propriété.
Syntaxe : property1 exists
Exemple :
Okta User should-have profile with-attribute { mobilePhone exists }
not-exists
Utilisation : not-exists Le mot clé vérifie l'absence d'une propriété.
Syntaxe : property1 not-exists
Exemple :
AzureAD AuthorizationPolicy should-have defaultUserRolePermissions with-attribute { permissionGrantPoliciesAssigned not-exists }
Utility
tout . comme
Utilisation : le mot-clé any est utilisé pour un type de ressource qui a une relation avec le type de ressource mentionné avant une expression.
as Le mot-clé est utilisé pour spécifier un alias pour le type de ressource dont la valeur peut être utilisée ultérieurement dans une instruction conditionnelle. Des alias sont parfois nécessaires lorsqu’une valeur est dérivée dans une partie antérieure de la règle, puis référencée dans une partie ultérieure de la règle. Dans de telles conditions, la dernière partie de la règle fait référence à la valeur dérivée en utilisant un alias. C’est équivalent à stocker une valeur dans une variable. Il est utilisé avec any mot-clé qui compare toutes les ressources disponibles attribuées par l’alias pour correspondre à la condition. Si la condition correspond, le vrai est retourné.
Syntax: any resource as a with-attribute {a.attribute1 = “value“}
Exemple :
servicenow SysProperties should-have any SystemProperty as s with-attribute {s.name = "glide.authenticate.api.user.reset_password.mandatory" and s.value = "true"}
###
Utilisation : le mot-clé ### est utilisé pour indiquer que le texte qui suit entre deux mots-clés est une chaîne de commentaires et sera ignoré par le système.
Syntaxe : ### Ceci est un commentaire ###
Exemple :
microsoft365 malwarefilterpolicy should-have len(FileTypes) > 0 ### comment here ###
Erreurs courantes
Cette section décrit les erreurs qui peuvent se produire en raison de l'utilisation d'un type de propriété incorrect avec le mot-clé.
| Error Scenario | Exemple incorrect de LGN | Exemple de message d'erreur | Marche à suivre pour corriger l'erreur |
|---|---|---|---|
| La propriété n'est pas une liste | AzureAD User should-have jobTitle with-element[2] (L'utilisateur devrait avoir le titre du poste) | Erreur : with-element/with-any-element/with-no-element only supports a property of données type 'list', got 'jobTitle' of type 'string' | Utilisez une propriété qui utilise un type de données de type liste. Par exemple : AzureAD User should-have proxyAddresses with-element["2"] |
| La propriété est une liste, mais l'élément de la liste ne peut pas être comparé au type primitif | AzureAD User should-have proxyAddresses with-element[2] (L'utilisateur doit avoir des adresses de proxy) | Erreur : les « prooxyAddresses » de type « list | doit être comparée à une valeur ayant le même type de données. Par exemple : AzureAD User should-have proxyAddresses with-element["0.0.0.0"] |
| with-attribute est utilisé pour un type de ressource qui n'est pas un objet ou qui n'est pas lié. | AzureAD User should-have displayName with-attribute {1 = 1} | Erreur : with-attribute ne doit être utilisé qu'avec une propriété de type "object" ou un type de ressource lié, got "displayName" of type "string | Utiliser une propriété d'un type de données d'objet ou d'une ressource liée. Par exemple : AzureAD User should-have passwordProfile with-attribute {forceChangePasswordNextSignIn = true} |
| any..as with-attribute est utilisé à l'intérieur des parenthèses | Salesforce RemoteSiteSettings should-have (any RemoteSiteSetting as r with-attribute { r.disableProtocolSecurity exists }) or RemoteSiteSetting exists | Erreur : any..as with-attribute n'est pas autorisé à l'intérieur d'une expression parenthésée | Ne mettez pas l'expression any..as with-attribute entre parenthèses. Par exemple : Salesforce RemoteSiteSettings devrait avoir n'importe quel RemoteSiteSetting comme r avec l'attribut { r.disableProtocolSecurity existe } ou RemoteSiteSetting existe |
| aucun...car l'attribut with n'est pas présent au début des conditions | L'utilisateur GoogleWorkspace doit avoir l'identifiant « 101098653105135134115 » et un rôle « r » avec l'attribut « { Role with-attribute { isSuperAdminRole = true } } ». | Erreur : any..as with-attribute n'est supporté qu'au début des conditions. | Place la personne... comme une expression avec attribut au début des conditions. Par exemple : GoogleWorkspace User devrait avoir n’importe quel RoleAssignation comme r avec l’attribut { Rôle avec-attribut { isSuperAdminRole = vrai } } et id="101098653105135134115 » |

