クエリ構文

アセットを検索するには、FIELD、演算子、QUERY を指定して、検索結果をフィルタリングします。

テキスト完全一致: 等価演算子(=

FIELD=QUERY

クエリの例: policy=amy.2020@gmail.com

equals=)演算子は、QUERY がアセット メタデータ FIELD の値と完全に一致することを確認します。大文字と小文字が区別されます。繰り返しフィールドの場合、QUERY がフィールドの値のいずれかと一致すると、アセットは一致と見なされます。サポートされている FIELD 名は、クエリがリソース検索か、Identity and Access Management(IAM)ポリシー検索かによって異なります。QUERYフレーズですが、ワイルドカードは使用できません。

テキスト部分一致: コロン演算子(:

FIELD:QUERY

クエリの例: policy:amy.2020@gmail

検索を実行すると、QUERY と指定したアセット メタデータ FIELD の値が比較されます。クエリとアセット メタデータ フィールドは比較のために一連の単語(すなわちトークン)に変換されます。これは、次のようにして行われます。

  • 先頭または末尾の特殊文字を削除し、特殊文字を区切り文字として扱うことにより検索値をトークン化する。トークン化特殊文字は、英数字 [a-zA-Z0-9]、アンダースコア [_]、アンパサンド [&] のいずれでもない文字です。

  • Unicode の大文字小文字変換を行って、文字の大文字小文字の区別が無視されるようにします。

以下にトークン化の例を示します。

  • "amy-2020@GMAIL.com"[amy,2020,gmail,com] にトークン化されます。

  • "google.com/cloud"[google,com,cloud] にトークン化されます。

  • "Compute %Instance%"[compute,instance] にトークン化されます。

  • "$%^*-!"[] にトークン化されます。

  • ""[] にトークン化されます。

  • "compute*storage"[compute,storage] にトークン化されます。

  • "compute&storage"[compute&storage] にトークン化されます。

  • "BOB_test@gmail.com"[bob_test,gmail,com] にトークン化されます。

  • "instance/_my_vm_"[instance,_my_vm_] にトークン化されます。

has:)演算子は、QUERY の各単語がアセット メタデータ フィールドの値内に存在するかを確認します。単語の順序と連続性も確認します。サポートされる FIELD は、リソース検索か IAM ポリシー検索かによって異なることがあります。QUERY は、フレーズまたは複数フレーズの組み合わせです。

たとえば、policy フィールドの値が amy.2020@gmail.com のアセットは、次のクエリに一致します。

  • フレーズがフィールドの値と完全に同じであるため、一致しています。
policy=amy.2020@gmail.com
  • 句読点は区切り文字として扱われ、クエリでは大文字と小文字が区別されないため、一致します。
policy:amy-2020@GMAIL.com
  • フレーズ内の単語が順に照合されるため、一致します。なお、"amy 2020 gmail"フレーズです。単語を順につなげて連続的に照合します。
policy:"amy 2020 gmail"
  • 単語の組み合わせは任意の順序で出現するため、一致します。なお、(gmail 2020 amy)組み合わせです。単語必ずしも順番に照合されません。
policy:(gmail 2020 amy)
  • フレーズ内の単語が順番どおりに一致し、組み合わせ内の単語が順番どおり出現するため、一致します。なお、"amy 2020"フレーズです。単語を順につなげて連続的に照合します。(gmail "amy 2020")組み合わせです。gmail"amy 2020" は必ずしも順序どおりに照合されません。
policy:(gmail "amy 2020")
  • * が接頭辞の一致を示すためにフレーズ内で使用できるため、一致します。
policy:amy-20*

policy フィールドの値が "amy.2020@gmail.com" のアセットは、次のクエリと一致しません。

  • フレーズの大文字と小文字は区別されるため、一致しません。大文字と小文字を区別しない一致には、代わりに has:)演算子を使用します。
policy=amy.2020@GMAIL.com
  • フレーズがフィールドの値と部分的に一致しているため、一致しません。部分一致には、代わりに has:)演算子を使用します。
policy=amy.2020@gmail

数値一致: 比較演算子(=>>=<<=

FIELD=QUERY

FIELD>QUERY

FIELD>=QUERY

FIELD<QUERY

FIELD<=QUERY

比較演算子は、QUERY とアセット メタデータ FIELD の値との比較結果が true であるかどうかを確認します。

サポートされている FIELD 名には createTimeupdateTime などがあります。

タイムスタンプ フィールド(createTimeupdateTime)の場合、QUERY は 64 ビット符号付き整数です。これは秒単位のエポック タイムスタンプ、または以下のいずれかの形式の日時文字列(タイムゾーンは UTC)を表します。

  • YYYY-MM-DD: 2021-01-01(引用符は省略可能)

  • "YYYY-MM-DDThh:mm:ss": "2021-01-01T00:00:00"(引用符は必須)

たとえば、createTime フィールドの値が 16094592002021-01-01T00:00:00 のエポック タイムスタンプ)のアセットは、次のクエリに一致します。

等しい

createTime=1609459200
createTime=2021-01-01
createTime="2021-01-01T00:00:00"

より大きい。

createTime>1500000000
createTime>2020-01-01
createTime>"2020-01-01T00:00:00"

以上。

createTime>=1609459200
createTime>=2021-01-01
createTime>="2021-01-01T00:00:00"

未満。

createTime<1700000000
createTime<2022-01-01
createTime<"2022-01-01T00:00:00"

以下。

createTime<=1609459200
createTime<=2021-01-01
createTime<="2021-01-01T00:00:00"

フレーズ

フレーズは、二重引用符(")で囲まれた 1 つ以上の単語です。フレーズでは、単語の順序が重要となります。フレーズ内の単語は、順序どおり、連続的に一致する必要があります。なお、順序を指定せずに複数の単語を照合するには、組み合わせを使用する必要があります(field:(word1 word2 word3) など)。

次の式は同じ内容を表します。

policy:amy
policy:"amy"

policy:amy.2020@gmail.com
policy:"amy.2020@gmail.com"

name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"

次のフレーズは、引用符で囲む必要があります。

name:"my instance"

policy:"amy%2020@gmail.com"

description:"domain:gmail.com"

description:"hello \"world\""

description:"hello\\world"

例: フレーズ

  • policy フィールドに単語 amy および単語 2020 が含まれているアセットを順番に続けて返します。

    policy:"amy 2020"
    
  • policy フィールドの値が "amy.2020@gmail.com" であるアセットがある場合は、上記のクエリと一致します。

  • policy フィールド値が "2020.amy@gmail.com" であるアセットがある場合、単語の順序が一致しないため、上記のクエリと一致しません。

  • policy フィールド値が "amy.us.2020@gmail.com" であるアセットがある場合、単語は連続して一致していないため、上記のクエリと一致しません。

組み合わせ

検索フレーズは、AND または OR を使用して組み合わせることができます。括弧は組み合わせをグループ化するために使用します。

例: 組み合わせ

  • policy フィールドに単語 amy と単語 john の両方が含まれるアセットを、順序を指定せずに返します。AND は組み合わせでは省略可能です。なお、複数の単語を順番どおり照合するには、フレーズを使用する必要があります(例: field:"word1 word2 word3")。

    owner:(amy john)
    
  • policy フィールドに amy または john のいずれかの単語を含むアセットを返します。

    policy:(amy OR john)
    
  • policy フィールドに単語 amyjohn の両方または単語 bob を含むアセットを返します。

    policy:((amy john) OR bob)
    
  • Return assets whose policy フィールドに単語 amy と単語 john が含まれるか、name フィールドに単語 bob が含まれるアセットを返します。

    policy:(amy john) OR name:bob
    

検索フィルタを無効にする

検索フィルタは、NOT 演算子を使用して無効にできます。丸括弧がサポートされていますが、必須ではありません。

例: 検索フィルタを無効にする

  • state フィールドに ACTIVE という単語が含まれないアセットを返します。

    NOT state:ACTIVE
    
  • policy フィールドに amyjohn のいずれの単語も含まないアセットを返します。

    NOT policy:(amy OR john)
    
  • networkTags フィールドに単語 internal または private を含まないアセットを返します。

    NOT (networkTags:internal OR networkTags:private)
    

ワイルドカード

アスタリスク(*)は、ワイルドカード文字としてフレーズで使用できます。位置によっては、異なる意味を持つこともあります。

  • フレーズの末尾に存在する("am 20*" など)の場合は、トークン プレフィックス マッチ指標です。このクエリは (am* 20*) と同じです。これは、「am」で始まるトークン(「amy」など)と「20」で始まるトークン(「2021」など)を含むフィールドと一致します。接頭辞の順序は関係ありません。

  • フレーズ全体に 1 つの * のみが含まれている(例: "labels.env:*")場合は、存在チェックを実行します。指定されたラベルキー「env」が存在するかどうかを確認します。他のフィールドはサポートされていません。

  • フレーズの途中に存在する(例: "compute*storage")場合は、トークン化区切り文字として扱われます。このクエリは「compute storage」と同等です。

  • フレーズの先頭と末尾に存在する(例: "*compute storage*")場合は、トークン化区切り文字として扱われます。このクエリは「compute storage」と同等です。

例: トークンの接頭辞の一致

  • policy フィールドに am で始まる単語を含むアセットを返します。

    policy:am*
    
  • "amy""20" を接頭辞とする 2 つの単語を policy フィールドに持つアセットを返します。

    policy:"amy 20*"
    
    policy:"20 amy*"
    
  • policy フィールド値が "amy.2020@gmail.com" のアセットの場合、上記のクエリは両方とも一致します。トークン化した後、"amy""20" の両方が接頭辞になります。なお、クエリ文字列 "amy 20*""amy 20" とは異なります。後者の場合、20 は接頭辞以外の単語全体である必要があります。

例: ラベルキーの存在

labels に「env」というキーがあり、任意の値(空の値や値なしを含む)を持つアセットを返します。

labels.env:*