Questa pagina spiega come analizzare i criteri di Identity and Access Management (IAM) in modo asincrono e scrivere i risultati in BigQuery. La procedura è simile all'analisi dei criteri IAM, tranne per il fatto che il risultato dell'analisi viene scritto nelle tabelle BigQuery.
Prima di iniziare
Enable the Cloud Asset API.
Devi abilitare l'API nel progetto che utilizzerai per inviare la query. Non deve essere la stessa risorsa a cui limiti l'ambito della query.
Ruoli e autorizzazioni richiesti
Per eseguire un'analisi dei criteri ed esportare i risultati in BigQuery, sono necessari i seguenti ruoli e permessi.
Ruoli IAM richiesti
Per ottenere le autorizzazioni necessarie per analizzare una policy ed esportare i risultati in BigQuery, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto, la cartella o l'organizzazione a cui limiterai l'ambito della query:
-
Editor dati BigQuery (
roles/bigquery.dataEditor
) -
Visualizzatore Cloud Asset (
roles/cloudasset.viewer
) -
Per analizzare i criteri con i ruoli IAM personalizzati:
Visualizzatore ruoli (
roles/iam.roleViewer
) -
Per utilizzare Google Cloud CLI per analizzare le policy:
Consumer di Service Usage (
roles/serviceusage.serviceUsageConsumer
)
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 analizzare una policy ed esportare i risultati in BigQuery. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per analizzare una policy ed esportare i risultati in BigQuery sono necessarie le seguenti autorizzazioni:
-
bigquery.datasets.create
-
bigquery.jobs.create
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.updateData
-
bigquery.tables.update
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Per analizzare i criteri con ruoli IAM personalizzati:
iam.roles.get
-
Per utilizzare Google Cloud CLI per analizzare i criteri:
serviceusage.services.use
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Autorizzazioni Google Workspace richieste
Se vuoi verificare se un principal dispone di determinati ruoli o autorizzazioni in seguito
alla sua appartenenza a un gruppo Google Workspace, devi disporre dell'autorizzazione groups.read
Google Workspace. Questa autorizzazione è contenuta nel ruolo Amministratore lettore gruppi e in ruoli più potenti come Amministratore gruppi o Super amministratore. Per saperne di più, vedi Assegnare ruoli di amministratore specifici.
Analizzare le norme ed esportare i risultati
Console
Nella console Google Cloud , vai alla pagina Policy Analyzer.
Nella sezione Analizza criteri, trova il modello di query che vuoi utilizzare, poi fai clic su Crea query. Se vuoi creare una query personalizzata, fai clic su Crea query personalizzata.
Nel campo Seleziona ambito query, seleziona il progetto, la cartella o l'organizzazione a cui vuoi limitare l'ambito della query. Analizzatore criteri analizzerà l'accesso per il progetto, la cartella o l'organizzazione, nonché per tutte le risorse all'interno del progetto, della cartella o dell'organizzazione.
Assicurati che parametri di ricerca siano impostati:
- Se utilizzi un modello di query, conferma i parametri di ricerca precompilati.
- Se stai creando una query personalizzata, imposta le risorse, le entità, i ruoli e le autorizzazioni per cui vuoi eseguire la query.
Per saperne di più sui tipi di query che puoi creare, consulta Analizzare le policy IAM.
Nel riquadro con il nome della query, fai clic su Analizza > Esporta solo risultato. Si apre il riquadro Esporta risultati.
Nella sezione Imposta la destinazione dell'esportazione, inserisci le seguenti informazioni:
- Progetto: il progetto in cui si trova il set di dati BigQuery.
- Set di dati: il set di dati BigQuery in cui vuoi esportare i risultati.
- Tabella: il prefisso delle tabelle BigQuery in cui verranno scritti i risultati dell'analisi. Se non esiste una tabella con il prefisso specificato, BigQuery ne crea una nuova.
Fai clic su Continua.
(Facoltativo) Nella sezione Configura impostazioni aggiuntive, seleziona le opzioni che preferisci:
- Partizionamento: indica se partizionare la tabella. Per scoprire di più sulle tabelle partizionate, consulta la pagina Introduzione alle tabelle partizionate.
- Preferenza di scrittura: specifica l'azione che si verifica se la tabella o la partizione di destinazione esiste già. Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati alla tabella o all'ultima partizione.
Fai clic su Esporta.
Policy Analyzer esegue la query ed esporta i risultati nella tabella specificata.
gcloud
Il metodo AnalyzeIamPolicyLongrunning
ti consente di inviare una richiesta di analisi e ottenere i risultati nella destinazione BigQuery specificata.
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
RESOURCE_TYPE
: il tipo di risorsa a cui vuoi limitare la ricerca. Verranno analizzati solo i criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti. Utilizza il valoreproject
,folder
oorganization
.RESOURCE_ID
: l'ID del Google Cloud progetto, della cartella o dell'organizzazione a cui vuoi limitare la ricerca. Verranno analizzati solo i criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti. Gli ID progetto sono stringhe alfanumeriche, comemy-project
. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012
.PRINCIPAL
: l'entità di cui vuoi analizzare l'accesso, nel formatoPRINCIPAL_TYPE:ID
, ad esempiouser:my-user@example.com
. Per un elenco completo dei tipi di entità, vedi Identificatori delle entità.PERMISSIONS
: un elenco separato da virgole delle autorizzazioni che vuoi controllare, ad esempiocompute.instances.get,compute.instances.start
. Se elenchi più autorizzazioni, Policy Analyzer verificherà la presenza di una qualsiasi delle autorizzazioni elencate.DATASET
: il set di dati BigQuery nel formatoprojects/PROJECT_ID/datasets/DATASET_ID
, dovePROJECT_ID
è l'ID alfanumerico del tuo progetto Google Cloud eDATASET_ID
è l'ID del tuo set di dati.TABLE_PREFIX
: il prefisso delle tabelle BigQuery in cui verranno scritti i risultati dell'analisi. Se non esiste una tabella con il prefisso specificato, BigQuery ne crea una nuova.PARTITION_KEY
: (Facoltativo). La chiave di partizione per la tabella partizionata BigQuery. Analizzatore criteri supporta solo le chiavi di partizioneREQUEST_TIME
.WRITE_DISPOSITION
: (Facoltativo). Specifica l'azione che si verifica se la tabella o la partizione di destinazione esiste già. Per un elenco dei valori possibili, consultawriteDisposition
. Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati alla tabella o all'ultima partizione.
Esegui il comando gcloud asset analyze-iam-policy-longrunning:
Linux, macOS o Cloud Shell
gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID \ --full-resource-name=FULL_RESOURCE_NAME \ --identity=PRINCIPAL \ --permissions='PERMISSIONS' \ --bigquery-dataset=DATASET \ --bigquery-table-prefix=TABLE_PREFIX \ --bigquery-partition-key=PARTITION_KEY \ --bigquery-write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID ` --full-resource-name=FULL_RESOURCE_NAME ` --identity=PRINCIPAL ` --permissions='PERMISSIONS' ` --bigquery-dataset=DATASET ` --bigquery-table-prefix=TABLE_PREFIX ` --bigquery-partition-key=PARTITION_KEY ` --bigquery-write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID ^ --full-resource-name=FULL_RESOURCE_NAME ^ --identity=PRINCIPAL ^ --permissions='PERMISSIONS' ^ --bigquery-dataset=DATASET ^ --bigquery-table-prefix=TABLE_PREFIX ^ --bigquery-partition-key=PARTITION_KEY ^ --bigquery-write-disposition=WRITE_DISPOSITION
Dovresti ricevere una risposta simile alla seguente:
Analyze IAM Policy in progress. Use [gcloud asset operations describe projects/my-project/operations/AnalyzeIamPolicyLongrunning/1195028485971902504711950280359719028666] to check the status of the operation.
REST
Il metodo AnalyzeIamPolicyLongrunning
ti consente di inviare una richiesta di analisi e ottenere i risultati nella destinazione BigQuery specificata.
Per analizzare un criterio di autorizzazione IAM ed esportare i risultati in
BigQuery, utilizza il metodo
analyzeIamPolicyLongrunning
dell'API Cloud Asset Inventory.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
RESOURCE_TYPE
: il tipo di risorsa a cui vuoi limitare la ricerca. Verranno analizzati solo i criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti. Utilizza il valoreprojects
,folders
oorganizations
.RESOURCE_ID
: l'ID del Google Cloud progetto, della cartella o dell'organizzazione a cui vuoi limitare la ricerca. Verranno analizzati solo i criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti. Gli ID progetto sono stringhe alfanumeriche, comemy-project
. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012
.-
FULL_RESOURCE_NAME
: (Facoltativo). Il nome risorsa completo della risorsa per cui vuoi analizzare l'accesso. Per un elenco dei formati dei nomi delle risorse completi, vedi Formato del nome della risorsa. PRINCIPAL
: (Facoltativo). Il principal di cui vuoi analizzare l'accesso, nel formatoPRINCIPAL_TYPE:ID
, ad esempio,user:my-user@example.com
. Per un elenco completo dei tipi di entità, vedi Identificatori delle entità.PERMISSION_1
,PERMISSION_2
...PERMISSION_N
: facoltativo. Le autorizzazioni che vuoi controllare, ad esempiocompute.instances.get
. Se elenchi più autorizzazioni, Analizzatore criteri verificherà la presenza di una qualsiasi delle autorizzazioni elencate.DATASET
: il set di dati BigQuery nel formatoprojects/PROJECT_ID/datasets/DATASET_ID
, dovePROJECT_ID
è l'ID alfanumerico del tuo progetto Google Cloud eDATASET_ID
è l'ID del tuo set di dati.TABLE_PREFIX
: il prefisso delle tabelle BigQuery in cui verranno scritti i risultati dell'analisi. Se non esiste una tabella con il prefisso specificato, BigQuery ne crea una nuova.PARTITION_KEY
: (Facoltativo). La chiave di partizione per la tabella partizionata BigQuery. Analizzatore criteri supporta solo le chiavi di partizioneREQUEST_TIME
.WRITE_DISPOSITION
: (Facoltativo). Specifica l'azione che si verifica se la tabella o la partizione di destinazione esiste già. Per un elenco dei valori possibili, consultawriteDisposition
. Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati alla tabella o all'ultima partizione.
Metodo HTTP e URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicyLongrunning
Corpo JSON della richiesta:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "identitySelector": { "identity": "PRINCIPAL" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } }, "outputConfig": { "bigqueryDestination": { "dataset": "DATASET", "tablePrefix": "TABLE_PREFIX", "partitionKey": "PARTITION_KEY", "writeDisposition": "WRITE_DISPOSITION" } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/my-project/operations/AnalyzeIamPolicyLongrunning/1206385342502762515812063858425027606003", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.AnalyzeIamPolicyLongrunningMetadata", "createTime": "2022-04-12T21:31:10.753173929Z" } }
Visualizzare i risultati dell'analisi dei criteri IAM
Per visualizzare i risultati dell'analisi dei criteri IAM:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Per visualizzare le tabelle e le viste nel set di dati, apri il pannello di navigazione. Nella sezione Explorer, seleziona il progetto per espanderlo, quindi seleziona un set di dati.
Dall'elenco, seleziona le tabelle con il tuo prefisso. La tabella con il suffisso
analysis
contiene la query e i metadati (ad esempio, nome dell'operazione, ora della richiesta ed errori non critici). La tabella con il suffissoanalysis_result
elenca le tuple di{identity, role(s)/permission(s), resource}
insieme alle policy IAM che generano queste tuple.Per visualizzare un set di dati di esempio, seleziona la scheda Anteprima.
API
Per sfogliare i dati della tabella, chiama
tabledata.list
.
Nel parametro tableId
, specifica il nome della tabella.
Puoi configurare i seguenti parametri facoltativi per controllare l'output.
maxResults
è il numero massimo di risultati da restituire.selectedFields
è un elenco di colonne da restituire separate da virgole. Se non specificato, vengono restituite tutte le colonne.startIndex
è l'indice in base zero della riga iniziale da leggere.
I valori vengono restituiti racchiusi in un oggetto JSON che devi analizzare, come descritto
nella documentazione di riferimento tabledata.list
.
Esegui query su BigQuery
Questa sezione fornisce query SQL di esempio per mostrare come utilizzare
le tabelle BigQuery scritte da AnalyzeIamPolicyLongrunning
. Per ulteriori
informazioni sulla sintassi di BigQuery, consulta
Sintassi standard delle query SQL.
OP_ID è necessario per la maggior parte delle query. Puoi ottenerlo dalla
risposta AnalyzeIamPolicyLongrunning
. Ad esempio, in gcloud, OP_ID è 123456
in
"Utilizza [gcloud asset operations describe organizations/123456789/operations/AnalyzeIamPolicyLongrunning/123456]
per controllare lo stato dell'operazione".
Elenco operazioni
La tabella potrebbe memorizzare i risultati di più operazioni AnalyzeIamPolicyLongrunning
. Puoi utilizzare la seguente query per elencarle tutte:
SELECT DISTINCT requestTime, opName FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis` ORDER BY 1 DESC ;
Elenca le analisi in un'operazione
In un'operazione AnalyzeIamPolicyLongrunning
, potrebbero essere generati più record di analisi. Ad esempio, quando attivi l'opzione
analyze_service_account_impersonation
nella tua richiesta, il risultato potrebbe
contenere un'analisi principale (con analysisId 0) e diverse analisi di rappresentazione
dell'account di servizio.
Puoi utilizzare la seguente query per trovare tutte le analisi fornendo un nome di operazione.
DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID"; SELECT analysisId, requestTime, TO_JSON_STRING(analysis.analysisQuery, true) as analysisQuery, analysis.fullyExplored, TO_JSON_STRING(analysis.nonCriticalErrors, true) as nonCriticalErrors FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis` WHERE opName=_opName ORDER BY 1 ;
Elenca le ACE(voci di controllo dell'accesso) in un'analisi
Una voce di controllo dell'accesso (ACE) è {identity, role(s)/permission(s), resource}
.
Puoi utilizzare la seguente query per elencare ACE in un'unica analisi.
DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID"; SELECT DISTINCT ids.name AS identity, resources.fullResourceName AS resource, accesses.role AS role, accesses.permission AS permission FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`, UNNEST(analysisResult.identityList.identities) AS ids, UNNEST(analysisResult.accessControlLists) AS acls, UNNEST(acls.accesses) AS accesses, UNNEST(acls.resources) AS resources WHERE opName=_opName AND analysisId = 0 ORDER BY 1,2,3,4 ;
Elenca le voci di controllo dell'accesso(ACE) con il binding dei criteri IAM in un'analisi
In questa query, elenchiamo sia l'ACE sia l'associazione di criteri IAM che genera questo ACE per un'analisi.
DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID"; SELECT ids.name AS identity, resources.fullResourceName AS resource, accesses.role AS role, accesses.permission AS permission, analysisResult.attachedResourceFullName as iam_policy_attached_resource, TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`, UNNEST(analysisResult.identityList.identities) AS ids, UNNEST(analysisResult.accessControlLists) AS acls, UNNEST(acls.accesses) AS accesses, UNNEST(acls.resources) AS resources WHERE opName=_opName AND analysisId = 0 ORDER BY 1,2,3,4 ;
Elenca le associazioni di criteri IAM in un'analisi
In questa query, elenchiamo le associazioni di criteri IAM visualizzate in un'analisi.
DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID"; SELECT DISTINCT analysisResult.attachedResourceFullName as iam_policy_attached_resource, TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result` WHERE opName=_opName AND analysisId = 0 ORDER BY 1, 2 ;
Elenca i binding dei criteri IAM con ACE(voce di controllo di accesso) in un'analisi
In questa query, elenchiamo i binding dei criteri IAM con le ACE derivate in un'unica analisi
DECLARE _opName STRING DEFAULT "organizations/ORG_ID/operations/AnalyzeIamPolicyLongrunning/OP_ID"; SELECT analysisResult.attachedResourceFullName as iam_policy_attached_resource, TO_JSON_STRING(analysisResult.iamBinding, true) as iam_policy_binding, TO_JSON_STRING(analysisResult.identityList.identities, true) as identities, TO_JSON_STRING(acls.accesses, true) as accesses, TO_JSON_STRING(acls.resources, true) as resources FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis_result`, UNNEST(analysisResult.accessControlLists) AS acls WHERE opName=_opName AND analysisId = 0 ORDER BY 1,2 ;