Sintassi delle query

Per cercare le risorse, puoi filtrare i risultati di ricerca specificando un FIELD, un operatore e un QUERY.

Corrispondenza esatta del testo: operatore uguale a (=)

FIELD=QUERY

Una query di esempio è: policy=amy.2020@gmail.com.

L'operatore equals (=) verifica che QUERY corrisponda esattamente al valore dei metadati della risorsa FIELD. Fa distinzione tra maiuscole e minuscole. In un campo ripetuto, se QUERY corrisponde a uno dei valori del campo, la risorsa viene considerata una corrispondenza. I nomi FIELD supportati dipendono dal fatto che la query sia una ricerca di risorse o una ricerca di criteri di Identity and Access Management (IAM). QUERY è una frase, ma non può contenere caratteri jolly.

Corrispondenza parziale del testo: operatore dei due punti (:)

FIELD:QUERY

Una query di esempio è: policy:amy.2020@gmail.

Quando esegui una ricerca, QUERY viene confrontato con il valore dei metadati delle risorse specificati FIELD. I campi della query e dei metadati degli asset vengono convertiti in una sequenza di parole (ovvero, token) per il confronto. A questo scopo:

  • Rimuovendo i caratteri speciali iniziali e finali e tokenizzando il valore di ricerca trattando i caratteri speciali come delimitatori. I caratteri speciali di tokenizzazione sono caratteri non alfanumerici [a-zA-Z0-9], trattino basso [_] o e commerciale [&].

  • Esecuzione della piegatura delle maiuscole/minuscole Unicode in modo che le maiuscole/minuscole vengano ignorate.

Ecco alcuni esempi di tokenizzazione:

  • "amy-2020@GMAIL.com" è tokenizzato in: [amy,2020,gmail,com]

  • "google.com/cloud" è tokenizzato in: [google,com,cloud]

  • "Compute %Instance%" è tokenizzato in: [compute,instance]

  • "$%^*-!" è tokenizzato in: []

  • "" è tokenizzato in: []

  • "compute*storage" è tokenizzato in: [compute,storage]

  • "compute&storage" è tokenizzato in: [compute&storage]

  • "BOB_test@gmail.com" è tokenizzato in: [bob_test,gmail,com]

  • "instance/_my_vm_" è tokenizzato in: [instance,_my_vm_]

L'operatore has (:) verifica che ogni parola di QUERY esista nel valore del campo dei metadati della risorsa. Controlla anche l'ordine e la consecutività delle parole. Il valore FIELD supportato può essere diverso, a seconda che si tratti di una ricerca di risorse o di un criterio IAM. QUERY può essere una frase o una combinazione di frasi.

Esempi

Ad esempio, un asset il cui campo policy contiene il valore amy.2020@gmail.com corrisponde alle seguenti query:

  • Trova perché la frase è esattamente uguale al valore del campo.
policy=amy.2020@gmail.com
  • Trova la corrispondenza perché i caratteri di punteggiatura vengono trattati come delimitatori e la query non fa distinzione tra maiuscole e minuscole.
policy:amy-2020@GMAIL.com
  • Corrisponde perché le parole di una frase sono associate in ordine. Tieni presente che "amy 2020 gmail" è una frase; le parole devono essere abbinate in ordine e consecutive.
policy:"amy 2020 gmail"
  • Corrisponde perché una combinazione di parole può apparire in qualsiasi ordine. Tieni presente che (gmail 2020 amy) è una combinazione; le parole hanno corrispondenze e non necessariamente in ordine.
policy:(gmail 2020 amy)
  • Corrisponde perché le parole della frase vengono associate in ordine e le parole nella combinazione vengono visualizzate in qualsiasi ordine. Tieni presente che "amy 2020" è una frase e le parole devono essere abbinate in ordine e consecutive. (gmail "amy 2020") è combinazione; gmail e "amy 2020" sono abbinati e non necessariamente in ordine.
policy:(gmail "amy 2020")
  • Corrisponde perché * può essere utilizzato in una frase per indicare una corrispondenza prefissata.
policy:amy-20*

Un asset il cui campo policy contiene il valore "amy.2020@gmail.com" NON corrisponde alle seguenti query:

  • Non corrisponde perché la frase è sensibile alle maiuscole. Utilizza invece l'operatore has (:) per la corrispondenza senza distinzione tra maiuscole e minuscole.
policy=amy.2020@GMAIL.com
  • Non corrisponde perché la frase corrisponde parzialmente al valore del campo. Utilizza l'operatore has (:) invece per la corrispondenza parziale.
policy=amy.2020@gmail

Corrispondenza numerica: operatori di confronto (=, >, >=, <, <=)

FIELD=QUERY

FIELD>QUERY

FIELD>=QUERY

FIELD<QUERY

FIELD<=QUERY

Gli operatori di confronto verificano che il risultato del confronto tra QUERY e il valore dei metadati della risorsa FIELD sia vero.

I nomi supportati di FIELD sono createTime e updateTime.

Per i campi del timestamp (createTime e updateTime), QUERY potrebbe essere un numero intero con segno a 64 bit, che rappresenta un timestamp dell'epoca in secondi, o una stringa di data e ora in uno dei formati riportati di seguito (il fuso orario è UTC):

  • AAAA-MM-GG: 01-01-2021 (le virgolette sono facoltative)

  • "AAAA-MM-GGThh:mm:ss": "2021-01-01T00:00:00" (le virgolette sono obbligatorie)

Esempi

Ad esempio, un asset il cui campo createTime ha il valore 1609459200 (timestamp del periodo 2021-01-01T00:00:00) corrisponde alle seguenti query:

È uguale a

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

Maggiore di.

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

Maggiore o uguale a.

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

Meno di.

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

Minore o uguale a.

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

Frase

Una frase è formata da una o più parole racchiuse tra virgolette doppie ("). Nelle frasi, l'ordine delle parole è importante. Le parole della frase devono corrispondere in ordine e consecutivamente. Tieni presente che per trovare più parole chiave senza rispettare l'ordine, devi utilizzare la combinazione (ad esempio, field:(word1 word2 word3)).

Le seguenti espressioni sono le stesse:

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"

Le seguenti frasi devono essere racchiuse tra virgolette:

name:"my instance"

policy:"amy%2020@gmail.com"

description:"domain:gmail.com"

description:"hello \"world\""

description:"hello\\world"

Esempi: a frase

  • Restituisci asset il cui campo policy contiene la parola amy e la parola 2020 in ordine e consecutivamente:

    policy:"amy 2020"
    
  • Se hai un asset il cui valore del campo policy è "amy.2020@gmail.com", la query precedente corrisponde.

  • Se hai un asset il cui valore del campo policy è "2020.amy@gmail.com", la query precedente non corrisponde perché le parole non hanno corrispondenze in ordine.

  • Se hai un asset il cui valore del campo policy è "amy.us.2020@gmail.com", la query precedente non corrisponde perché le parole non hanno corrispondenze consecutive.

Combinazione

Le frasi di ricerca possono essere combinate utilizzando AND o OR. Le parentesi sono utilizzate per raggruppare le combinazioni.

Esempi: combinazione

  • Restituisce gli asset il cui campo policy contiene sia la parola amy che la parola john, senza rispettare l'ordine. AND è facoltativo in una combinazione. Tieni presente che per trovare più parole in ordine, devi utilizzare la frase (ad esempio, field:"word1 word2 word3").

    owner:(amy john)
    
  • Restituisci asset il cui campo policy contiene la parola amy o la parola john.

    policy:(amy OR john)
    
  • Restituisce gli asset il cui campo policy contiene sia la parola amy sia la parola john o contiene la parola bob.

    policy:((amy john) OR bob)
    
  • Restituisce gli asset il cui campo policy contiene la parola amy e il campo parola john o name contiene la parola bob.

    policy:(amy john) OR name:bob
    

Nega i filtri di ricerca

I filtri di ricerca possono essere annullati utilizzando l'operatore NOT. Le parentesi sono supportate ma non obbligatorie.

Esempi: negare i filtri di ricerca

  • Restituisci gli asset il cui campo state non contiene la parola ACTIVE.

    NOT state:ACTIVE
    
  • Restituisci asset il cui campo policy non contiene né la parola amy né la parola john.

    NOT policy:(amy OR john)
    
  • Restituisci gli asset il cui campo networkTags non contiene la parola internal o private.

    NOT (networkTags:internal OR networkTags:private)
    

Jolly

È possibile utilizzare gli asterischi (*) in una frase come carattere jolly. A seconda della sua posizione, può avere significati diversi.

  • Se si trova alla fine di una frase, ad esempio "am 20*", è un indicatore di corrispondenza del prefisso del token. La query è equivalente a (am* 20*). Corrisponde al campo contenente un token che inizia con "am", ad esempio "am", e un token che inizia con "20", ad esempio "2021". L'ordine dei prefissi non è rilevante.

  • Se l'intera frase contiene solo un elemento *, ad esempio "labels.env:*", esegue un controllo dell'esistenza. Controlla se esiste la chiave di etichetta specificata "env". Gli altri campi non sono supportati.

  • Se si trova nel mezzo di una frase, ad esempio "compute*storage", viene trattato come un delimitatore di tokenizzazione. La query è equivalente a "compute storage".

  • Se si trova all'inizio e alla fine di una frase, ad esempio "*compute storage*", viene considerato un delimitatore di tokenizzazione. La query è equivalente a "archiviazione calcolo".

Esempi: corrispondenza del prefisso del token

  • Restituisci asset il cui campo policy contiene una parola che inizia con am:

    policy:am*
    
  • Restituisci gli asset il cui campo policy ha due parole con "amy" e "20" come prefissi:

    policy:"amy 20*"
    
    policy:"20 amy*"
    
  • Se hai un asset il cui valore del campo policy è "amy.2020@gmail.com", le query precedenti corrispondono entrambe. Dopo la tokenizzazione, "amy" e "20" sono prefissi. Tieni presente che la stringa di query "amy 20*" è diversa da "amy 20". Il secondo richiede che 20 sia un'intera parola diversa dal prefisso.

Esempio: esistenza della chiave di etichetta

Restituisci asset che uno dei cui labels abbia "env" come chiave e abbia un qualsiasi valore (incluso il valore vuoto o nessun valore):

labels.env:*