Scrivi l'analisi dei criteri in BigQuery

Questa pagina spiega come analizzare i criteri di Identity and Access Management (IAM) in modo asincrono e scrivere i risultati in BigQuery. Il processo è simile a questo: analizzare i criteri IAM, tranne il risultato dell'analisi viene scritto nelle tabelle BigQuery.

Prima di iniziare

Attiva Cloud Asset API.

Abilita l'API

Devi abilitare l'API nel progetto o nell'organizzazione che utilizzerai per inviare query. Non deve essere la stessa risorsa a cui indirizzi la query.

Ruoli e autorizzazioni richiesti

Per eseguire l'analisi dei criteri e le autorizzazioni sono necessari i seguenti ruoli e autorizzazioni esportare i risultati in BigQuery.

Ruoli IAM richiesti

Per ottenere le autorizzazioni necessarie per analizzare un criterio ed esportare i risultati in BigQuery chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto, nella cartella o nell'organizzazione di cui l'ambito la query per:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti le autorizzazioni necessarie per analizzare un criterio ed esportare i risultati in in BigQuery. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per analizzare un criterio ed esportare i risultati in, sono necessarie le seguenti autorizzazioni BigQuery:

  • 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 i ruoli IAM personalizzati: iam.roles.get
  • Per utilizzare Google Cloud CLI per analizzare i criteri: serviceusage.services.use

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.

Autorizzazioni Google Workspace richieste

Se vuoi vedere se a un'entità vengono assegnati determinati ruoli o autorizzazioni della sua iscrizione a un gruppo di Google Workspace, devi disporre del groups.read Autorizzazione di Google Workspace. Questa autorizzazione è contenuta nel lettore di gruppi Amministratore dei gruppi e in ruoli più potenti come Amministratore gruppi o Super amministratore ruoli. Per saperne di più, consulta Assegnare ruoli di amministratore specifici. informazioni.

Analizza i criteri ed esporta i risultati

Console

  1. Nella console Google Cloud, vai alla pagina Analizzatore criteri.

    Vai all'Analizzatore criteri

  2. Nella sezione Analizza criteri individua il modello di query che vuoi utilizzare, e poi fai clic su Crea query. Per creare una query personalizzata, fai clic su Crea una query personalizzata.

  3. Nel campo Seleziona ambito della query, seleziona il progetto, la cartella organizzazione a cui vuoi limitare l'ambito della query. Analizzatore criteri analizzare l'accesso per il progetto, la cartella o l'organizzazione, nonché e risorse all'interno del progetto, della cartella o dell'organizzazione.

  4. Assicurati che parametri di ricerca siano impostati:

    • Se utilizzi un modello di query, verifica i parametri di ricerca precompilati.
    • Se crei una query personalizzata, imposta le risorse, le entità, i ruoli e le autorizzazioni su cui vuoi eseguire la query.

    Per ulteriori informazioni sui tipi di query che puoi creare, vedi Analizza i criteri IAM.

  5. Nel riquadro con il nome della query, fai clic su Analizza > Esporta solo risultato. L'opzione Esporta dei risultati.

  6. Nella sezione Imposta destinazione esportazione, inserisci le informazioni seguenti:

    • Progetto: il progetto in cui si trova il set di dati BigQuery individuarlo.
    • Set di dati: il set di dati BigQuery che vuoi esportare. a cui assegnare i risultati.
    • Tabella: il prefisso delle tabelle BigQuery a cui si riferiscono i risultati dell'analisi verrà scritto. Se non esiste una tabella con il prefisso specificato, BigQuery crea una nuova tabella.
  7. Fai clic su Continua.

  8. (Facoltativo) Nella sezione Configura impostazioni aggiuntive, seleziona il le opzioni desiderate:

    • Partizionamento: indica se eseguire il partizionamento della tabella. Per scoprire di più su partizionate, consulta Introduzione alle tabelle tabelle.
    • Write preference (Preferenza di scrittura): specifica l'azione che si verifica se la destinazione una tabella o una partizione già esistente. Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati alla tabella o l'ultima partizione.
  9. Fai clic su Esporta.

Policy Analyzer esegue la query ed esporta i risultati specificata.

gcloud

Il metodo AnalyzeIamPolicyLongrunning consente di inviare una richiesta di analisi e ottenere risultati BigQuery.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • RESOURCE_TYPE: il tipo della risorsa a cui vuoi limitare la ricerca. Solo i criteri di autorizzazione IAM associati a questa risorsa e ai suoi discendenti verranno analizzati. Utilizza il valore project, folder o organization.
  • RESOURCE_ID: l'ID del Il progetto, la cartella o l'organizzazione Google Cloud a cui vuoi limitare la ricerca. Solo I criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti verranno analizzati. Progetto Gli ID sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, come 123456789012.
  • PRINCIPAL: l'entità la cui che vuoi analizzare, sotto forma PRINCIPAL_TYPE:ID, ad esempio user:my-user@example.com. Per un elenco completo dei tipi di entità, consulta Identificatori entità.
  • PERMISSIONS: A un elenco separato da virgole delle autorizzazioni che vuoi controllare, ad esempio compute.instances.get,compute.instances.start. Se elenchi più autorizzazioni, Policy Analyzer controllerà le autorizzazioni elencate.
  • DATASET: set di dati BigQuery nel formato projects/PROJECT_ID/datasets/DATASET_ID, dove PROJECT_ID è l'ID alfanumerico del tuo progetto Google Cloud e DATASET_ID è l'ID del tuo set di dati.
  • TABLE_PREFIX: il prefisso del Tabelle BigQuery in cui verranno scritti i risultati dell'analisi. Se una tabella con il prefisso specificato non esiste, BigQuery crea una nuova tabella.
  • PARTITION_KEY: facoltativo. La chiave di partizione per una tabella partizionata BigQuery. Policy Analyzer supporta solo REQUEST_TIME chiavi di partizione.
  • WRITE_DISPOSITION: facoltativo. Specifica l'azione che si verifica se la tabella o la partizione di destinazione esiste già. Per un elenco delle possibili i valori, consulta writeDisposition Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati a la tabella o l'ultima partizione.

Esegui la 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 consente di inviare una richiesta di analisi e ottenere risultati BigQuery.

per analizzare un criterio di autorizzazione IAM ed esportare i risultati in BigQuery, utilizza la classe analyzeIamPolicyLongrunning .

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • RESOURCE_TYPE: il tipo della risorsa a cui vuoi limitare la ricerca. Solo i criteri di autorizzazione IAM associati a questa risorsa e ai suoi discendenti verranno analizzati. Utilizza il valore projects, folders o organizations.
  • RESOURCE_ID: l'ID del Il progetto, la cartella o l'organizzazione Google Cloud a cui vuoi limitare la ricerca. Solo I criteri di autorizzazione IAM collegati a questa risorsa e ai relativi discendenti verranno analizzati. Progetto Gli ID sono stringhe alfanumeriche, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, come 123456789012.
  • FULL_RESOURCE_NAME: facoltativo. Il nome completo della risorsa per cui vuoi analizzare l'accesso. Per un elenco dei formati dei nomi di risorsa completi, consulta Formato del nome della risorsa:
  • PRINCIPAL: facoltativo. L'entità di cui vuoi analizzare l'accesso, sotto forma PRINCIPAL_TYPE:ID, ad esempio user:my-user@example.com. Per un elenco completo dei tipi di entità, consulta Identificatori entità.
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: facoltativo. La autorizzazioni che vuoi controllare, ad esempio compute.instances.get. Se elencare più autorizzazioni, Policy Analyzer controllerà se sono presenti autorizzazioni elencate.
  • DATASET: set di dati BigQuery nel formato projects/PROJECT_ID/datasets/DATASET_ID, dove PROJECT_ID è l'ID alfanumerico del tuo progetto Google Cloud e DATASET_ID è l'ID del tuo set di dati.
  • TABLE_PREFIX: il prefisso del Tabelle BigQuery in cui verranno scritti i risultati dell'analisi. Se una tabella con il prefisso specificato non esiste, BigQuery crea una nuova tabella.
  • PARTITION_KEY: facoltativo. La chiave di partizione per una tabella partizionata BigQuery. Policy Analyzer supporta solo REQUEST_TIME chiavi di partizione.
  • WRITE_DISPOSITION: facoltativo. Specifica l'azione che si verifica se la tabella o la partizione di destinazione esiste già. Per un elenco delle possibili i valori, consulta writeDisposition Per impostazione predefinita, se la tabella o la partizione esiste già, BigQuery aggiunge i dati a la tabella o l'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 delle seguenti 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"
  }
}

Visualizza i risultati dell'analisi dei criteri IAM

Per visualizzare i risultati dell'analisi dei criteri IAM:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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.

  3. Dall'elenco, seleziona le tabelle con il tuo prefisso. La tabella con un parametro Il suffisso analysis contiene la query e i metadati (ad esempio, operazione nome, ora della richiesta ed errori non critici). La tabella con Il suffisso analysis_result è il risultato che elenca le tuple di {identity, role(s)/permission(s), resource} insieme a i criteri IAM che generano le tuple.

  4. 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 aggregati in un oggetto JSON che è necessario analizzare, come descritto in tabledata.list documentazione di riferimento.

Esegui query in BigQuery

Questa sezione fornisce esempi di query SQL per mostrarti come utilizzare Tabelle BigQuery scritte da AnalyzeIamPolicyLongrunning. Per ulteriori informazioni informazioni sulla sintassi di BigQuery, consulta Sintassi standard delle query SQL.

OP_ID è necessario per la maggior parte delle query, puoi recuperarlo da AnalyzeIamPolicyLongrunning risposta. Ad esempio, in gcloud, vedrai 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 archiviare i risultati di più AnalyzeIamPolicyLongrunning operations. Puoi utilizzare la seguente query per elencarli tutti:

SELECT DISTINCT
  requestTime,
  opName
FROM `BQ_PROJECT_ID.BQ_DATASET_NAME.BQ_TABLE_PREFIX_analysis`
ORDER BY 1 DESC
;

Elenco analisi in un'operazione

In un'operazione AnalyzeIamPolicyLongrunning potrebbero essere presenti più analisi i record generati. Ad esempio, quando abiliti la funzione analyze_service_account_impersonation opzione nella tua richiesta, il risultato potrebbe Contenere un'analisi principale (con analysisId 0) e diversi account di servizio dell'impersonificazione.

Puoi utilizzare la seguente query per trovare tutte le analisi assegnando un'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
;

Elenco ACE(Access Control Entries) in un'analisi

Un Esperimenti campagna AdWords è una voce di controllo dell'accesso {identity, role(s)/permission(s), resource}. Puoi utilizzare la seguente query per elencare Esperimenti campagna AdWords in un'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 ACE(Access Control Entries) con associazione dei criteri IAM in un'analisi

In questa query sono elencati sia ACE sia l'associazione di criteri IAM che genera Esperimenti campagna AdWords 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 sono elencate le associazioni di criteri IAM presenti 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 le associazioni di criteri IAM con ACE(Access Control Entry) in un'analisi

In questa query, elenchiamo le associazioni di criteri IAM con i relativi ACE derivati in un'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
;