リソースの種類に関する特定の情報を識別するためのルール内の機能。 関数は次の構文を使用します。
<function>(<argument>)
NGL で使用される関数は次のとおりです。
len
使用方法: lenは、リストプロパティまたは文字列プロパティの長さを計算し、整数値として返す関数です。
構文: len (list_property1)
例:
microsoft365 malwarefilterpolicy should-have len(FileTypes) > 0
説明: NGL は、ファイルタイプの長さが 0 より大きいすべての Microsoft365 アプリのマルウェアフィルタ ポリシーを返します。
age
使用方法: ageは、時間プロパティから現在時刻までの時間差を計算する関数です。この関数は、時間プロパティ名と時間の単位を文字列として指定する2つのパラメータを受け取り、指定された単位で測定された、その時間プロパティの時間差を表す整数値を返します。プロパティの値は、エポック(Unix)時間を表す整数である必要があります。時間単位としてdaysとhoursがサポートされています。
構文: age (time_property1, “unit_of_time”)
例:
github repository should-have age(created_at , "days") > 1
説明: NGL は、作成されてから 1 日以上経過した GitHub リポジトリのリストを返します。
テキスト一致
使用方法: textmatchは、指定された正規表現を、指定された文字列プロパティに対して評価する関数です。文字列にパターンが含まれている場合はtrueを返し、含まれていない場合はfalseを返します。textmatch関数の使い方の記事で、 textmatchを使ったさまざまな表現を参照してください。
構文: textmatch (文字列プロパティ、正規表現パターン)
例:
azuread oauth2permissiongrant should-not-have textmatch(scope, "AppRoleAssignment.ReadWrite.All") = true
説明: NGL は、 'scope ' の値が文字列「AppRoleAssignment.ReadWrite.All」と等しい場合、検出結果を生成します (つまり、真実)。
よくある間違い
このセクションでは、関数で発生する可能性のあるエラーについて説明します。
| Error Scenario | 不適切なNGLの例 | エラーメッセージの例 | エラーを修正する手順 |
|---|---|---|---|
| 未定義の関数 | AzureAD oauth2permissiongrant should-not have text-match(scope, "AppRoleAssignment.ReadWrite.All") = true | エラー: 未定義の関数 text-match | 正しい関数名を使用してください。 例: AzureAD oauth2permissiongrant should-not-have textmatch(scope, "AppRoleAssignment.ReadWrite.All") = true |
| len関数の型が間違っています | AzureAD ユーザーは len(employeeHireDate) = 5 であるべきです | エラー: len() は文字列とリスト型のみをサポートしていますが、数値が渡されました | 必要なデータ型を満たすプロパティを使用します。 詳細についてはDOMファイルを参照してください。 例:AzureADユーザーはlen(mobilePhone) < 11であるべき |
| textmatch の最初のパラメータはプロパティではありません | AzureAD ユーザーは、textmatch("5", "5") = true である必要があります。 | エラー: textmatch() は最初のパラメータとしてプロパティのみを受け付けますが、文字列が渡されました。 | 最初のパラメータを textmatch のプロパティとして使用します。 詳細については、textmatch 関数を参照してください。 例: AzureAD ユーザーは textmatch(department, "eng") = true であるべきです |
| プロパティ textmatch の値は文字列でも文字列のリストでもありません | AzureAD ユーザーは、textmatch(employeeHireDate, "department") = true であるべきです | エラー: textmatch() はデータ型 'string' または 'list' のプロパティのみをサポートしています | 必要なデータ型を満たすプロパティを使用します。 例: AzureAD ユーザーは、textmatch ( department, "Retail") = true を満たす必要があります。 |
| textmatch の 2 番目のパラメータは文字列ではありません | AzureAD ユーザーは、textmatch (deptment, 5) = true であるべきです | エラー: textmatch() のパターンは文字列である必要がありますが、数値が渡されました | 一致する文字列パターンを使用します。 例: AzureAD ユーザーは textmatch ( department, "Retail") = true であるべきです |
| 年齢の最初のパラメータはプロパティではありません | AzureAD ユーザーは、作成日時("createdDateTime", "days") > 1 である必要があります。 | エラー: age() は最初のパラメータとしてプロパティのみを受け付けますが、文字列が渡されました。 | 最初のパラメータとしてプロパティを使用します。 例:AzureADユーザーは、age(createdDateTime, "days") > 1であるべきである |
| 変換単位が間違っています | AzureAD ユーザーは、年齢 (作成日時、"年") > 1 である必要があります。 | エラー: 日時変換パラメータは日または時間である必要がありますが、年が指定されています。 | 正しい時間単位を使用してください。 例:AzureADユーザーは、age(createdDateTime, "days") > 1であるべきである |
| 識別子は数値ではありません | AzureAD ユーザーは、所属部署、"日数") > 1 である必要があります。 | エラー: age() は数値型のデータ プロパティのみをサポートしていますが、型が 'string' の 'deptment' が渡されました。 | age とともに数値データ型プロパティを使用します。 例:AzureADユーザーは、age(createdDateTime, "days") > 1であるべきである |

