Questo documento descrive come utilizzare VM Manager, Cloud Asset Inventory e BigQuery per visualizzare i dati personalizzati e i messaggi di errore di applicazione delle policy del sistema operativo in tutta l'organizzazione. Utilizza questo flusso di lavoro quando hai bisogno di report a livello di organizzazione su configurazioni VM personalizzate, output di script o errori di esecuzione delle policy che gli stati di conformità standard non acquisiscono.
Per raccogliere dati personalizzati, configura un
outputFilePath
nella policy del sistema operativo, ovvero il percorso locale sulla VM in cui lo script della policy
scrive testo personalizzato o output JSON. VM Manager legge l'output
da questo percorso e lo archivia nel report
sull'assegnazione delle policy del sistema operativo. Puoi quindi esportare questi report in BigQuery
utilizzando Cloud Asset Inventory per eseguire query sui risultati in tutta la flotta di VM.
Prima di iniziare
- Configura VM Manager.
- Abilita l'API Cloud Asset Inventory.
- Crea un set di dati BigQuery per archiviare i dati esportati.
- Crea un'assegnazione delle policy del sistema operativo che restituisce dati personalizzati.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa a come prevedi di utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per esportare i dati delle risorse in BigQuery ed eseguire query sui dati delle policy del sistema operativo personalizzate, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto, nella cartella o nell'organizzazione:
- Cloud Asset Viewer (
roles/cloudasset.viewer) - Editor dati BigQuery (
roles/bigquery.dataEditor) - Utente job BigQuery (
roles/bigquery.jobUser)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per esportare i dati delle risorse in BigQuery ed eseguire query sui dati delle policy del sistema operativo personalizzate. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per esportare i dati delle risorse in BigQuery ed eseguire query sui dati delle policy del sistema operativo personalizzate sono necessarie le seguenti autorizzazioni:
-
cloudasset.assets.exportOSInventories -
cloudasset.assets.exportResource -
bigquery.datasets.get -
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.get -
bigquery.jobs.create
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Policy del sistema operativo di esempio
Prima di poter esportare ed eseguire query sui dati personalizzati in BigQuery, devi creare e assegnare un criterio del sistema operativo che raccolga l'output personalizzato dalle tue VM. Per maggiori informazioni, consulta Crea un'assegnazione delle policy del sistema operativo.
Per raccogliere dati personalizzati, definisci una policy del sistema operativo con una risorsa exec che
include le seguenti sezioni:
validate: verifica se la VM corrisponde allo stato selezionato. Nelle seguenti policy di esempio, lo scriptvalidateesce con il codice101per indicare che la risorsa non corrisponde allo stato selezionato. Questo codice di uscita attiva lo scriptenforcea ogni valutazione.enforce: specifica il campooutputFilePath, esegue il comando personalizzato, scrive l'output nel percorso specificato ed esce con il codice100per indicare l'applicazione riuscita.
Policy del sistema operativo che restituisce una stringa
La seguente policy del sistema operativo di esempio restituisce una stringa che contiene la versione kernel dell'istanza VM:
id: return-kernel-version-policy
mode: ENFORCEMENT
resourceGroups:
- resources:
id: return-kernel-version
exec:
validate:
interpreter: SHELL
script: exit 101
enforce:
interpreter: SHELL
outputFilePath: policy-output.txt
script: uname -r > policy-output.txt && exit 100
Policy del sistema operativo che restituisce un file JSON
Il seguente criterio del sistema operativo di esempio restituisce un oggetto JSON contenente il nome del sistema operativo e la versione kernel:
id: return-kernel-version-js-policy
mode: ENFORCEMENT
resourceGroups:
- resources:
id: return-kernel-version-js
exec:
validate:
interpreter: SHELL
script: exit 101
enforce:
interpreter: SHELL
outputFilePath: policy-output.json
script: |-
k=$(uname -r)
o=$(uname -a)
echo "{ \"name\": \""$o"\", \"kernel\": \""$k"\" }" > policy-output.json
exit 100
Esportare i dati di VM Manager in BigQuery
Dopo che VM Manager applica la policy del sistema operativo, Cloud Asset Inventory raccoglie i report
sull'inventario del sistema operativo e sull'assegnazione delle policy del sistema operativo risultanti nell'intera
organizzazione. Quando esporti questi dati in BigQuery con il flag
--per-asset-type, Cloud Asset Inventory crea una tabella separata per ogni tipo di asset. La tabella <prefix>_osconfig_googleapis_com_OSPolicyAssignmentReport
risultante memorizza gli output delle norme personalizzate e i messaggi di errore di applicazione.
Per esportare i dati dell'inventario del sistema operativo e delle risorse in BigQuery, segui questi passaggi:
Per identificare l'ID organizzazione, esegui questo comando:
gcloud projects get-ancestors PROJECT_IDSostituisci
PROJECT_IDcon l'ID progetto.Per esportare i dati dell'inventario del sistema operativo raccolti da VM Manager dalle tue istanze VM, esegui questo comando:
gcloud asset export \ --content-type=os-inventory \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/os"Sostituisci i seguenti segnaposto con i tuoi valori:
ORGANIZATION_ID: l'ID organizzazione.BQ_PROJECT_ID: l'ID del progetto che contiene il set di dati BigQuery.DATASET_ID: l'ID del tuo set di dati BigQuery (ad esempio,cai_exp).
Per esportare i metadati delle risorse, inclusi i report di assegnazione delle policy del sistema operativo, in BigQuery, esegui questo comando:
gcloud asset export \ --content-type=resource \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/res"Sostituisci i seguenti segnaposto con i tuoi valori:
ORGANIZATION_ID: l'ID organizzazione.BQ_PROJECT_ID: l'ID del progetto che contiene il set di dati BigQuery.DATASET_ID: l'ID del tuo set di dati BigQuery (ad esempio,cai_exp).
Al termine dell'esportazione, Cloud Asset Inventory crea la tabella
res_osconfig_googleapis_com_OSPolicyAssignmentReportnel set di dati BigQuery. Per saperne di più, consulta Esportare lo snapshot di un asset.
Eseguire query sui dati delle policy del sistema operativo personalizzate in BigQuery
Dopo aver esportato i dati degli asset in BigQuery, puoi eseguire query sulla tabella
res_osconfig_googleapis_com_OSPolicyAssignmentReport per visualizzare output personalizzati e messaggi di errore di applicazione dei criteri del sistema operativo.
Per eseguire una query in BigQuery:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla una delle seguenti query SQL:
Output del testo della query:
La seguente query restituisce la versione kernel che la policy del sistema operativo raccoglie per ogni istanza VM:
SELECT resource.data.instance as instance, ANY_VALUE( SAFE_CONVERT_BYTES_TO_STRING(FROM_BASE64(REPLACE(REPLACE( resource_compliances.execResourceOutput.enforcementOutput , '-', '+'), '_', '/'))) HAVING MAX updateTime) as compliance_results FROM `DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`, UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) as resource_compliances, UNNEST(resource_compliances.configSteps) as config_steps WHERE resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId = "return-kernel-version-policy" AND resource_compliances.osPolicyResourceId = "return-kernel-version" AND config_steps.type = "VALIDATION" GROUP BY instanceSostituisci
DATASET_IDcon l'ID del tuo set di dati BigQuery (ad esempiocai_exp).L'output della query è simile alla seguente tabella:
instancecompliance_resultsubuntu-15.15.0-1036-gcpubuntu-25.15.0-1044-gcprhel9-15.14.0-162.18.1.el9_1.x86_64Output JSON della query:
La seguente query estrae i campi
nameekerneldall'output JSON e li restituisce come colonne separate per ogni istanza VM:WITH compliance_history AS ( SELECT updateTime, resource.data.instance, SAFE_CONVERT_BYTES_TO_STRING( FROM_BASE64( REPLACE( REPLACE( resource_compliances.execResourceOutput.enforcementOutput, '-', '+' ), '_', '/' ) ) ) as compliance_results FROM `DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`, UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) as resource_compliances, UNNEST(resource_compliances.configSteps) as config_steps WHERE resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId = "return-kernel-version-js-policy" AND resource_compliances.osPolicyResourceId = "return-kernel-version-js" AND config_steps.type = "VALIDATION" ), compliance_latest AS ( SELECT instance, ANY_VALUE(compliance_results HAVING MAX updateTime) as compliance_results FROM compliance_history GROUP BY instance ) SELECT instance, JSON_EXTRACT_SCALAR(compliance_results, "$.name") as os_name, JSON_EXTRACT_SCALAR(compliance_results, "$.kernel") as kernel_version FROM compliance_latestSostituisci
DATASET_IDcon l'ID del tuo set di dati BigQuery (ad esempiocai_exp).L'output della query è simile alla seguente tabella:
instanceos_namekernel_versionubuntu-1Linux ubuntu-1 5.15.0-1036-gcp #39-Ubuntu SMP5.15.0-1036-gcprhel9-1Linux rhel9-1 5.14.0-162.18.1.el9_1.x86_64 #1 SMP5.14.0-162.18.1.el9_1.x86_64
Per eseguire la query, fai clic su Esegui.
Per saperne di più, consulta Eseguire una query.
Esaminare i messaggi di errore relativi all'applicazione
Quando una risorsa di policy del sistema operativo non supera la convalida o l'applicazione, VM Manager
registra il messaggio di errore nel campo configSteps.errorMessage della
tabella res_osconfig_googleapis_com_OSPolicyAssignmentReport. Puoi eseguire query
su questo campo in BigQuery per risolvere i problemi di esecuzione delle policy nella tua
organizzazione.
La seguente query restituisce i messaggi di errore di convalida o applicazione più recenti per ogni istanza VM:
SELECT
resource.data.instance AS instance,
resource.data.osPolicyCompliances[OFFSET(0)].osPolicyId AS policy_id,
resource_compliances.osPolicyResourceId AS resource_id,
config_steps.type AS step_type,
ANY_VALUE(config_steps.errorMessage HAVING MAX updateTime) AS error_message
FROM
`DATASET_ID.res_osconfig_googleapis_com_OSPolicyAssignmentReport`,
UNNEST(resource.data.osPolicyCompliances[OFFSET(0)].osPolicyResourceCompliances) AS resource_compliances,
UNNEST(resource_compliances.configSteps) AS config_steps
WHERE
config_steps.errorMessage IS NOT NULL
AND config_steps.errorMessage != ""
GROUP BY
instance,
policy_id,
resource_id,
step_type
Sostituisci DATASET_ID con l'ID del tuo
set di dati BigQuery (ad esempio cai_exp).
L'output della query è simile alla seguente tabella:
instance |
policy_id |
resource_id |
step_type |
error_message |
|---|---|---|---|---|
ubuntu-2 |
return-kernel-version-policy |
return-kernel-version |
DESIRED_STATE_ENFORCEMENT |
Error running enforce script: exit status 1 |
Passaggi successivi
Per saperne di più sulla gestione delle policy del sistema operativo e sull'analisi dei dati di conformità, consulta le seguenti risorse:
- Consulta le best practice per l'utilizzo di VM Manager in un'organizzazione.
- Leggi la panoramica delle policy del sistema operativo.
- Visualizza i report sulla conformità alle policy del sistema operativo.
- Esporta i metadati degli asset in BigQuery.
- Esegui query interattive e in batch in BigQuery.