Puoi eseguire query sulle risorse nel tuo progetto, nella tua cartella o nella tua organizzazione utilizzando un dialetto compatibile con BigQuery SQL.
Prima di iniziare
Abilita l'API Cloud Asset Inventory nel progetto da cui esegui i comandi 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, vedi 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 precedente di BigQuery non è supportato.
I risultati delle query più grandi di 10 GB non sono supportati.
I risultati della query superiori a 10 MB o 1000 righe vengono sempre paginati.
L'elaborazione delle query deve richiedere meno di 6 ore.
I risultati della query possono essere esportati solo in un set di dati BigQuery nella multi-region
US
.
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, se esiste. Ad esempio, la tabellacompute_googleapis_com_Instance
contiene i metadati delle istanze di Compute Engine.Per i tipi di contenuti non
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 tutti i 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 degli asset
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 sugli asset nella pagina Inventario asset.
Se la scheda Query sugli asset non viene visualizzata, devi accedere al livello Security Command Center Premium o Enterprise, o Gemini Cloud Assist.
- Passa al progetto, alla cartella o all'organizzazione per cui vuoi eseguire la query.
- Fai clic sulla scheda Query 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 l'anteprima della query. Fai clic su Applica per copiare il campione 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 dell'asset corrispondenti alla query vengono visualizzati nella scheda Risultato query.
-
(Facoltativo) Per scaricare i set di risultati delle query in formato CSV, fai clic su Esporta.
La dimensione massima del file CSV è di 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
è l'ID del progetto che contiene gli asset che vuoi interrogare. -
folder=FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella che contiene gli asset che vuoi interrogare.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 che vuoi interrogare.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 querySELECT
SQL. -
TIMEOUT
: (Facoltativo). Il tempo massimo, in secondi, che un client deve attendere il completamento della query prima di continuare. Utilizza i timeout per eseguire la query in modo asincrono e recuperare i risultati in un secondo momento con i riferimenti ai job.
Per tutte le opzioni, consulta il riferimento gcloud CLI.
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 completata
Il seguente esempio mostra una risposta alla query di esempio precedente. La
risposta contiene un riferimento al job e indica se il job è
terminato (done: true
). Se il job è terminato, l'oggetto
queryResult
viene compilato con i dati appropriati e i risultati vengono elencati
successivamente.
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 a una prestazione non completata
Se imposti un timeout nella richiesta, la query viene eseguita
in modo asincrono e ti viene inviata una risposta che indica che il job è
incompleto (done: false
). Questo tipo di risposte contiene 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, dopo che il
job è stato completato e 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 che contiene gli asset che vuoi interrogare. -
projects/PROJECT_NUMBER
, dovePROJECT_NUMBER
è il numero del progetto che contiene gli asset che vuoi interrogare.Come trovare un Google Cloud numero di progetto
ConsoleGoogle Cloud
Per trovare un numero di progetto, completa i seguenti passaggi: Google Cloud
-
Vai alla pagina 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 tuo progetto. Il nome, il numero e l'ID progetto vengono visualizzati vicino all'intestazione 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 un Google Cloud numero di progetto con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella che contiene gli asset che vuoi interrogare.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 che vuoi interrogare.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 querySELECT
SQL. -
TIMEOUT
: (Facoltativo). Il tempo massimo, in secondi, che un client deve attendere il completamento della query prima di continuare. Utilizza i timeout per eseguire la query in modo asincrono e recuperare i risultati in un secondo momento con i riferimenti ai job. -
PAGE_SIZE
: (Facoltativo). Il numero di risultati da restituire per pagina. Il 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 valore dipageToken
.
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 completata
Il seguente esempio mostra una risposta alla query di esempio precedente. La
risposta contiene un riferimento al job e indica se il job è
terminato ("done": true
). Se il job è terminato, l'oggetto
queryResult
viene compilato con i dati
appropriati.
I risultati della query sono suddivisi in rows
, un array che contiene
i metadati delle risorse, e schema
, un oggetto che descrive lo
schema per ogni risorsa nell'array rows
. Questa operazione viene eseguita per
ridurre al minimo la duplicazione di nomi e tipi di campi 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 a una prestazione non completata
Se imposti un timeout nella richiesta, la query viene eseguita
in modo asincrono e ti viene inviata una risposta che indica che il job è
incompleto ("done": false
). Questo tipo di risposte contiene
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, dopo che il
job è stato completato e 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
è l'ID del progetto che contiene gli asset che vuoi interrogare. -
folder=FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella che contiene gli asset che vuoi interrogare.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 che vuoi interrogare.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 questo 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 gli asset che vuoi interrogare. -
projects/PROJECT_NUMBER
, dovePROJECT_NUMBER
è il numero del progetto che contiene gli asset che vuoi interrogare.Come trovare un Google Cloud numero di progetto
ConsoleGoogle Cloud
Per trovare un numero di progetto, completa i seguenti passaggi: Google Cloud
-
Vai alla pagina 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 tuo progetto. Il nome, il numero e l'ID progetto vengono visualizzati vicino all'intestazione 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 un Google Cloud numero di progetto con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella che contiene gli asset che vuoi interrogare.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 che vuoi interrogare.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 valore dipageToken
.
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 della 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
è l'ID della cartella che contiene i metadati dell'asset che vuoi esportare con una query SQL.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 dell'asset che vuoi esportare con una query SQL.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 querySELECT
SQL. -
BIGQUERY_PROJECT_ID
: l'ID del progetto in cui si trova la tabella BigQuery che vuoi esportare. -
DATASET_ID
: L'ID del set di dati BigQuery. -
TABLE_NAME
: La tabella BigQuery in cui esporti i metadati. Se non esiste, viene creato. -
WRITE_METHOD
: specifica il comportamento se la tabella o la partizione di destinazione BigQuery esiste già. Sono supportati i seguenti valori:-
write-empty
: predefinito. Se la tabella esistente contiene dati, nel risultato del job viene restituito un errore di duplicazione. -
write-append
: aggiunge dati alla tabella o all'ultima partizione. -
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 esporta i risultati nella tabella BigQuery my-table
nel 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 che contiene i metadati dell'asset che vuoi esportare con una query SQL.Come trovare un Google Cloud numero di progetto
ConsoleGoogle Cloud
Per trovare un numero di progetto, completa i seguenti passaggi: Google Cloud
-
Vai alla pagina 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 tuo progetto. Il nome, il numero e l'ID progetto vengono visualizzati vicino all'intestazione 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 un Google Cloud numero di progetto con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, doveFOLDER_ID
è l'ID della cartella che contiene i metadati dell'asset che vuoi esportare con una query SQL.Come trovare l'ID di una Google Cloud cartella
ConsoleGoogle Cloud
Per trovare l'ID di una Google Cloud cartella:
-
Vai alla Google Cloud console.
- 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 comando seguente 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 dell'asset che vuoi esportare con una query SQL.Come trovare l'ID di un' Google Cloud organizzazione
ConsoleGoogle Cloud
Per trovare l'ID di un' Google Cloud organizzazione:
-
Vai alla Google Cloud console.
- 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 di servizio Cloud Asset Inventory predefinito che dispone delle autorizzazioni per gestire i tuoi set di dati e tabelle BigQuery. Scopri di più sull'impostazione del progetto di fatturazione. -
SQL_SELECT_QUERY
: Una querySELECT
SQL. -
BIGQUERY_PROJECT_ID
: l'ID del progetto in cui si trova la tabella BigQuery che vuoi esportare. -
DATASET_ID
: L'ID del set di dati BigQuery. -
TABLE_NAME
: La tabella BigQuery in cui esporti i metadati. Se non esiste, viene creato. -
WRITE_METHOD
: specifica il comportamento se la tabella o la partizione di destinazione BigQuery esiste già. Sono supportati i seguenti valori:-
WRITE_EMPTY
: predefinito. Se la tabella esistente contiene dati, nel risultato del job viene restituito un errore di duplicazione. -
WRITE_APPEND
: aggiunge dati alla tabella o all'ultima partizione. -
WRITE_TRUNCATE
: sovrascrive l'intera tabella o tutti i dati delle partizioni.
-
-
PAGE_SIZE
: (Facoltativo). Il numero di risultati da restituire per pagina. Il 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
Gli esempi di codice seguenti mostrano query SQL specifiche che puoi utilizzare per cercare asset, per aiutarti a creare le tue query.
Istanze VM di Compute Engine in una regione specifica
Inoltre, restituisci il name
e la data di creazione.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Dettagli di un'app in esecuzione in un pod Kubernetes
Restituisce lo spazio dei nomi, la versione e il timestamp dell'app ingress-nginx
. Scopri di più sulle funzioni JSON utilizzate in BigQuery.
SELECT
name AS pod_name,
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') AS namespace,
resource.data.metadata.creationTimestamp AS creation_time,
JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") AS app_label,
resource.data.metadata.labels['app.kubernetes.io/version'] AS version
FROM
k8s_io_Pod
WHERE
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') = "default"
AND JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") = "ingress-nginx"
Quanti set di dati BigQuery sono presenti 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 di 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 loro 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%'