Puoi eseguire query sulle risorse nel tuo progetto, nella tua cartella o nella tua organizzazione utilizzando un dialetto compatibile con SQL di BigQuery.
Prima di iniziare
Abilita l'API Cloud Asset Inventory nel progetto da cui stai eseguendo i comandi di Cloud Asset Inventory.
Assicurati che il tuo account disponga del ruolo corretto per chiamare l'API Cloud Asset Inventory. Per le singole autorizzazioni per ogni tipo di chiamata, consulta Autorizzazioni.
Limitazioni
I nomi dei tipi di asset hanno
.
e/
sostituiti con_
. Ad esempio,compute.googleapis.com/Instance
diventacompute_googleapis_com_Instance
.La richiesta deve essere una query
SELECT
.SQL di BigQuery precedente non è supportato.
I risultati di query più grandi di 10 GB non sono supportati.
I risultati delle query più grandi di 10 MB o 1000 righe sono sempre suddivisi in pagine.
L'elaborazione delle query deve richiedere meno di 6 ore.
I risultati delle query possono essere esportati solo in un set di dati BigQuery nella regione
US
multipla.
Tabelle su cui puoi eseguire query
Puoi eseguire query sulle seguenti tabelle:
Per i tipi di contenuti
RESOURCE
, i nomi delle tabelle nel set di dati corrispondono al nome del tipo di asset, supponendo che esista. Ad esempio, la tabellacompute_googleapis_com_Instance
contiene i metadati delle istanze di Compute Engine.Per i tipi di contenuti diversi da
RESOURCE
, i nomi delle tabelle nel set di dati corrispondono ai nomi dei tipi di contenuti RPC/REST. Ad esempio:ACCESS_POLICY
.Per eseguire query sui metadati standard delle risorse in base ai tipi di risorse, utilizza il nome della tabella
STANDARD_METADATA
. Sono inclusi tutti i campi, ad eccezione diresource.DATA
, che è specifico per ogni tipo di risorsa.
Eseguire query sui metadati delle risorse
Console
Per eseguire query sui metadati delle risorse per il tuo progetto, la tua cartella o la tua organizzazione, completa i seguenti passaggi:
-
Nella console Google Cloud , vai alla scheda Query asset nella pagina Inventario asset.
Se la scheda Query sugli asset non viene visualizzata, devi accedere al livello Premium o Enterprise di Security Command Center, oppure Gemini Cloud Assist.
- Passa al progetto, alla cartella o all'organizzazione per cui vuoi eseguire una query.
- Fai clic sulla scheda Query sugli asset.
-
Per eseguire query sui metadati delle risorse, utilizza una query di esempio o creane una personalizzata:
- Per utilizzare un esempio, fai clic su una voce nella scheda Libreria di query per visualizzare in anteprima la query. Fai clic su **Applica** per copiare il sample nella casella Modifica query, quindi modifica la query o fai clic su Esegui per eseguirla.
- Per creare una query personalizzata, inserisci il testo della query direttamente nella casella Modifica query, quindi fai clic su Esegui per eseguirla. Per aiutarti a scrivere la tua query, puoi fare clic su una tabella nel riquadro Seleziona tabella per visualizzarne l'anteprima dello schema e dei contenuti. Consulta Sintassi delle query per scoprire come creare una query.
I metadati della risorsa corrispondenti alla query vengono visualizzati nella scheda Risultato della query.
-
(Facoltativo) Per scaricare i set di risultati della query in formato CSV, fai clic su Esporta.
La dimensione massima del file CSV è 2 MB. Se la richiesta di download non va a buon fine perché le dimensioni del file superano questo limite, viene visualizzato un messaggio con le istruzioni per esportare i risultati completi.
gcloud
gcloud asset query \ --SCOPE \ --statement="SQL_SELECT_QUERY" \ --timeout="TIMEOUTs"
Fornisci i seguenti valori:
-
SCOPE
: utilizza uno dei seguenti valori:-
project=PROJECT_ID
, dovePROJECT_ID
è ID del progetto che contiene le risorse su cui vuoi eseguire query. -
folder=FOLDER_ID
, doveFOLDER_ID
è ID della cartella contenente le risorse su cui vuoi eseguire una query.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene gli asset su cui vuoi eseguire query.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: una query SQL.SELECT
-
TIMEOUT
: facoltativo. Il tempo massimo, in secondi, che un client deve attendere prima di continuare per il completamento della query. Utilizza i timeout per eseguire la query in modo asincrono e recuperare i risultati in un secondo momento con i riferimenti dei job.
Consulta il riferimento all'interfaccia a riga di comando gcloud per tutte le opzioni.
Esempio
Esegui il comando seguente per ottenere i nomi e i tipi di asset delle prime due istanze Compute Engine nel progetto my-project
.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2"
Risposta al job completato
L'esempio seguente mostra una risposta alla query di esempio precedente. La risposta contiene un riferimento al job e indica se il job è stato completato (done: true
). Se il job è stato completato, l'oggetto queryResult
viene compilato con i dati appropriati e i risultati vengono elencati in seguito.
done: true jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '2' name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1 assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/instance-2 assetType: compute.googleapis.com/Instance
Risposta relativa a un job non completato
Se imposti un timeout nella richiesta, la query viene eseguita
in modo asincrono e ti viene inviata una risposta che indica che il job è
incompiuto (done: false
). Questi tipi di risposte contengono un
riferimento al job e un oggetto queryResult
non compilato:
done: false jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '0'
Puoi utilizzare il valore jobReference
per
recuperare i risultati della query in un secondo momento, al termine del
job e quando i dati sono disponibili.
REST
Metodo HTTP e URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Corpo JSON della richiesta:
{ "statement": "SQL_SELECT_QUERY", "timeout": "TIMEOUTs", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Fornisci i seguenti valori:
-
SCOPE_PATH
: utilizza uno dei seguenti valori:I valori consentiti sono:
-
projects/PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto contenente le risorse su cui vuoi eseguire query. -
projects/PROJECT_NUMBER
, dovePROJECT_NUMBER
è il numero del progetto che contiene gli asset su cui vuoi eseguire query.Come trovare il numero di un progetto Google Cloud
Google Cloud console
Per trovare il numero di un progetto Google Cloud , svolgi i seguenti passaggi:
-
Vai alla pagina Ti diamo il benvenuto nella console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
-
Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome, il numero e l'ID progetto vengono visualizzati accanto all'intestazione Ti diamo il benvenuto.
Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.
Interfaccia a riga di comando gcloud
Puoi recuperare il numero di un progetto Google Cloud con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella contenente gli asset su cui vuoi eseguire una query.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene gli asset su cui vuoi eseguire query.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: una query SQL.SELECT
-
TIMEOUT
: facoltativo. Il tempo massimo, in secondi, che un client deve attendere prima di continuare per il completamento della query. Utilizza i timeout per eseguire la query in modo asincrono e recuperare i risultati in un secondo momento con i riferimenti dei job. -
PAGE_SIZE
: facoltativo. Il numero di risultati da restituire per pagina. Il numero massimo è 500. Se il valore è impostato su0
o su un valore negativo, viene selezionato un valore predefinito appropriato. Viene restituito unnextPageToken
per recuperare i risultati successivi. -
PAGE_TOKEN
: facoltativo. Le risposte alle richieste lunghe sono separate su più pagine. SepageToken
non è specificato, viene restituita la prima pagina. Le pagine successive possono essere chiamate utilizzandonextPageToken
della risposta precedente come valorepageToken
.
Consulta il riferimento REST per tutte le opzioni.
Esempi di comandi
Esegui uno dei seguenti comandi per ottenere i nomi e i tipi di asset delle prime due istanze Compute Engine nel progetto my-project
.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Risposta al job completato
L'esempio seguente mostra una risposta alla query di esempio precedente. La risposta contiene un riferimento al job e indica se il job è stato completato ("done": true
). Se il job è stato completato, l'oggetto queryResult
viene compilato con i dati appropriati.
I risultati della query sono suddivisi in rows
, un array contenente
i metadati delle risorse, e schema
, un oggetto che descrive
lo schema per ogni risorsa nell'array rows
. Questo viene fatto per minimizzare la duplicazione dei nomi e dei tipi di campo nelle risposte di grandi dimensioni.
Analogamente, f
e v
vengono utilizzati nell'array
rows
anziché fields
e
value
per mantenere le risposte il più piccole possibile.
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": true, "queryResult": { "rows": [ { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1" }, { "v": "compute.googleapis.com/Instance" } ] }, { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2" }, { "v": "compute.googleapis.com/Instance" } ] } ], "schema": { "fields": [ { "field": "name", "type": "STRING", "mode": "NULLABLE", "fields": [] }, { "field": "assetType", "type": "STRING", "mode": "NULLABLE", "fields": [] } ] }, "nextPageToken": "", "totalRows": "1" } }
Risposta relativa a un job non completato
Se imposti un timeout nella richiesta, la query viene eseguita
in modo asincrono e ti viene inviata una risposta che indica che il job è
incompiuto ("done": false
). Questi tipi di risposte contengono
un riferimento al job e un oggetto queryResult
non compilato:
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": false, "queryResult": { "rows": [], "schema": { "fields": [] }, "nextPageToken": "", "totalRows": "0" } }
Puoi utilizzare il valore jobReference
per
recuperare i risultati della query in un secondo momento, al termine del
job e quando i dati sono disponibili.
Recuperare i risultati della query in un secondo momento
Per recuperare in un secondo momento una richiesta che ha richiesto tempo per essere completata, effettua una delle seguenti richieste.
gcloud
gcloud asset query \ --SCOPE \ --job-reference="JOB_REFERENCE"
Fornisci i seguenti valori:
-
SCOPE
: utilizza uno dei seguenti valori:-
project=PROJECT_ID
, dovePROJECT_ID
è ID del progetto che contiene le risorse su cui vuoi eseguire query. -
folder=FOLDER_ID
, doveFOLDER_ID
è ID della cartella contenente le risorse su cui vuoi eseguire una query.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene gli asset su cui vuoi eseguire query.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: il valore di riferimento del job restituito in una risposta precedente.
Esempio
Esegui il seguente comando per ottenere i risultati di una query eseguita in precedenza nel progetto my-project
.
gcloud asset query \ --project=my-project \ --job-reference="0000000000000000000000000000000000000000000000000000000000000000"
REST
Metodo HTTP e URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Corpo JSON della richiesta:
{ "jobReference": "JOB_REFERENCE", "pageToken": "PAGE_TOKEN" }
Fornisci i seguenti valori:
-
SCOPE_PATH
: utilizza uno dei seguenti valori:I valori consentiti sono:
-
projects/PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto che contiene le risorse su cui vuoi eseguire query. -
projects/PROJECT_NUMBER
, dovePROJECT_NUMBER
è il numero del progetto che contiene gli asset su cui vuoi eseguire query.Come trovare il numero di un progetto Google Cloud
Google Cloud console
Per trovare il numero di un progetto Google Cloud , svolgi i seguenti passaggi:
-
Vai alla pagina Ti diamo il benvenuto nella console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
-
Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome, il numero e l'ID progetto vengono visualizzati accanto all'intestazione Ti diamo il benvenuto.
Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.
Interfaccia a riga di comando gcloud
Puoi recuperare il numero di un progetto Google Cloud con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella contenente gli asset su cui vuoi eseguire una query.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene gli asset su cui vuoi eseguire query.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: il valore di riferimento del job restituito in una risposta precedente. -
PAGE_TOKEN
: facoltativo. Le risposte alle richieste lunghe sono separate su più pagine. SepageToken
non è specificato, viene restituita la prima pagina. Le pagine successive possono essere chiamate utilizzandonextPageToken
della risposta precedente come valorepageToken
.
Esempi di comandi
Esegui uno dei seguenti comandi per ottenere i risultati di una query eseguita in precedenza.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Esportare i risultati delle query in BigQuery
I risultati della query vengono restituiti come risposte dell'API Query Assets. Per esportare i risultati nella tua tabella BigQuery, specifica una destinazione BigQuery nella richiesta. Se non ne hai già uno, devi creare un set di dati BigQuery prima di effettuare queste richieste.
gcloud
gcloud asset query \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --statement="SQL_SELECT_QUERY" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --write-disposition="WRITE_METHOD"
Fornisci i seguenti valori:
-
SCOPE
: utilizza uno dei seguenti valori:-
project=PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto che contiene i metadati della risorsa che vuoi esportare con una query SQL. -
folder=FOLDER_ID
, doveFOLDER_ID
è ID della cartella contenente i metadati della risorsa che vuoi esportare con una query SQL.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene i metadati della risorsa che vuoi esportare con una query SQL.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: una query SQLSELECT
. -
BIGQUERY_PROJECT_ID
: l'ID del progetto in cui si trova la tabella BigQuery in cui vuoi eseguire l'esportazione. -
DATASET_ID
: l'ID del set di dati BigQuery. -
TABLE_NAME
: la tabella BigQuery in cui stai esportando i metadati. Se non esiste, viene creato. -
WRITE_METHOD
: specifica il comportamento se la tabella o la partizione di destinazione BigQuery esistente. Sono supportati i seguenti valori:-
write-empty
: valore predefinito. Se la tabella esistente contiene dati, nel risultato del job viene restituito un errore di duplicazione. -
write-append
: aggiunge i dati alla tabella o alla partizione più recente. -
write-truncate
: sovrascrive l'intera tabella o tutti i dati delle partizioni.
-
Esempio
Esegui il seguente comando per ottenere i nomi e i tipi di asset delle prime due istanze Compute Engine nel progetto my-project
ed esportare i risultati nella tabella BigQuery my-table
del progetto my-project
, sovrascrivendo l'intera tabella se esiste già.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --write-disposition="write-truncate"
REST
Metodo HTTP e URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Intestazioni:
X-Goog-User-Project: BILLING_PROJECT_ID
Corpo JSON della richiesta:
{ "statement": "SQL_SELECT_QUERY", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "writeDisposition": "WRITE_METHOD" } }, "pageSize": "PAGE_SIZE" }
Fornisci i seguenti valori:
-
SCOPE_PATH
: utilizza uno dei seguenti valori:I valori consentiti sono:
-
projects/PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto che contiene i metadati della risorsa che vuoi esportare con una query SQL. -
projects/PROJECT_NUMBER
, dovePROJECT_NUMBER
è il numero del progetto contenente i metadati della risorsa che vuoi esportare con una query SQL.Come trovare il numero di un progetto Google Cloud
Google Cloud console
Per trovare il numero di un progetto Google Cloud , svolgi i seguenti passaggi:
-
Vai alla pagina Ti diamo il benvenuto nella console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
-
Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome, il numero e l'ID progetto vengono visualizzati accanto all'intestazione Ti diamo il benvenuto.
Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.
Interfaccia a riga di comando gcloud
Puoi recuperare il numero di un progetto Google Cloud con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella contenente i metadati della risorsa che vuoi esportare con una query SQL.Come trovare l'ID di una cartella Google Cloud
Google Cloud console
Per trovare l'ID di una cartella Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag
--format
per visualizzare ulteriori informazioni sulle cartelle trovate.Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il seguente comando utilizzando l'ID di una cartella di primo livello:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, doveORGANIZATION_ID
è l'ID dell'organizzazione che contiene i metadati della risorsa che vuoi esportare con una query SQL.Come trovare l'ID di un'organizzazione Google Cloud
Google Cloud console
Per trovare l'ID di un'organizzazione Google Cloud , segui questi passaggi:
-
Vai alla console Google Cloud .
- Fai clic sulla casella di elenco selettore nella barra dei menu.
- Seleziona la tua organizzazione dalla casella di elenco.
- Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.
Interfaccia a riga di comando gcloud
Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: l'ID progetto in cui si trova l'agente del servizio di Cloud Asset Inventory predefinito che dispone delle autorizzazioni per gestire i set di dati e le tabelle BigQuery. Scopri di più sulla configurazione del progetto di fatturazione. -
SQL_SELECT_QUERY
: una query SQL.SELECT
-
BIGQUERY_PROJECT_ID
: l'ID del progetto in cui si trova la tabella BigQuery in cui vuoi eseguire l'esportazione. -
DATASET_ID
: l'ID del set di dati BigQuery. -
TABLE_NAME
: la tabella BigQuery in cui stai esportando i metadati. Se non esiste, viene creato. -
WRITE_METHOD
: specifica il comportamento se la tabella o la partizione di destinazione BigQuery esistente. Sono supportati i seguenti valori:-
WRITE_EMPTY
: valore predefinito. Se la tabella esistente contiene dati, nel risultato del job viene restituito un errore di duplicazione. -
WRITE_APPEND
: aggiunge i dati alla tabella o alla partizione più recente. -
WRITE_TRUNCATE
: sovrascrive l'intera tabella o tutti i dati delle partizioni.
-
-
PAGE_SIZE
: facoltativo. Il numero di risultati da restituire per pagina. Il numero massimo è 500. Se il valore è impostato su0
o su un valore negativo, viene selezionato un valore predefinito appropriato. Viene restituito unnextPageToken
per recuperare i risultati successivi.
Esempi di comandi
Esegui uno dei seguenti comandi per ottenere i nomi e i tipi di asset delle prime due
istanze Compute Engine nel progetto my-project
ed esporta i risultati nella tabella BigQuery my-table
nel progetto my-project
, sovrascrivendo
l'intera tabella se esiste già.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Altri esempi di query SQL
I seguenti esempi di codice mostrano query SQL specifiche che puoi utilizzare per cercare asset e aiutarti a creare le tue query.
Istanze VM di Compute Engine in una regione specifica
Inoltre, restituisci il relativo name
e la data di creazione.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Il numero di set di dati BigQuery in ogni progetto
SELECT
ancestor AS project,
COUNT(*)
FROM
bigquery_googleapis_com_Dataset
CROSS JOIN
UNNEST (ancestors) AS ancestor
WHERE
ancestor LIKE '%project%'
GROUP BY
ancestor
ORDER BY
2 DESC
Quante istanze VM Compute Engine sono presenti in ogni regione
SELECT
resource.location,
COUNT(*)
FROM
compute_googleapis_com_Instance
GROUP BY
resource.location
Nome e assetType di tutte le risorse in una regione
SELECT
name,
assetType
FROM
STANDARD_METADATA
WHERE
resource.location LIKE '%asia%'
Bucket Cloud Storage disponibili pubblicamente
Inoltre, restituisci il name
.
SELECT
name
FROM
IAM_POLICY
CROSS JOIN
UNNEST(iamPolicy.bindings) AS binding
WHERE
('allUsers' IN UNNEST(binding.members)
OR 'allAuthenticatedUsers' IN UNNEST(binding.members))
AND assetType = 'storage.googleapis.com/Bucket'
Subnet senza istanze VM collegate
SELECT
subnetwork_table.name
FROM
compute_googleapis_com_Subnetwork AS subnetwork_table
LEFT JOIN (
SELECT
interface.subnetwork AS subnetwork
FROM
compute_googleapis_com_Instance
CROSS JOIN
UNNEST(resource.DATA.networkInterfaces) AS interface) AS instance_table
ON
SUBSTR(subnetwork_table.name, 25) = SUBSTR(instance_table.subnetwork,38)
WHERE
instance_table.subnetwork IS NULL
AND NOT subnetwork_table.name LIKE '%default%'