Casi d'uso per la risoluzione dei problemi di accesso su Google Cloud

Last reviewed 2022-09-29 UTC

Questo documento descrive come utilizzare gli strumenti Google Cloud per risolvere i casi d'uso relativi ai problemi di accesso alle risorse Google Cloud. Questo documento non descrive come risolvere i problemi di accesso degli utenti finali alle tue applicazioni. Questo documento presuppone che tu conosca la procedura di risoluzione dei problemi relativi a criteri e accesso su Google Cloud. Il documento sui criteri di risoluzione dei problemi e sui problemi di accesso descrive i servizi Google Cloud che possono applicare i criteri di accesso e gli strumenti per la risoluzione dei problemi forniti da Google Cloud.

Approccio alla risoluzione dei problemi

Il primo passaggio per la risoluzione di un problema relativo all'accesso consiste nel decidere come risolvere il problema. Il seguente diagramma mostra un diagramma di flusso di un approccio per la risoluzione dei problemi di accesso. Il diagramma di flusso presuppone che tu disponga delle autorizzazioni appropriate per completare la procedura di risoluzione dei problemi o che tu possa collaborare con qualcuno che dispone delle autorizzazioni necessarie.

Un diagramma di flusso relativo a un approccio alla risoluzione dei problemi di accesso.

Il diagramma precedente illustra i seguenti passaggi:

  1. Verifica l'accesso degli utenti nella console Google Cloud e in Cloud Shell. Se tutti gli accessi vengono negati, verifica le voci relative alla gravità degli errori negli audit log.
    1. Se sono presenti voci di gravità degli errori, controlla le autorizzazioni richieste.
      1. Se puoi concedere le autorizzazioni per risolvere i problemi di accesso, risolvi il problema.
      2. Se non riesci a risolvere i problemi di accesso, contatta l'assistenza clienti Google Cloud.
    2. Se non sono presenti voci di gravità degli errori, contatta l'assistenza clienti.
  2. Se non ci sono problemi di accesso, verifica la presenza di problemi di rete. Se riscontri problemi di rete, risolvili.
  3. Se non ci sono problemi di rete, controlla l'allocazione della quota. Se riscontri problemi di allocazione delle quote, segui la procedura per aumentarla e poi risolvi il problema.
  4. Se non sono presenti problemi di allocazione della quota, verifica la presenza di voci di gravità degli errori negli audit log.
    1. Se sono presenti voci di gravità degli errori, controlla le autorizzazioni richieste.
      1. Se puoi concedere le autorizzazioni per risolvere i problemi di accesso, risolvi il problema.
      2. Se non riesci a risolvere i problemi di accesso, contatta l'assistenza clienti.
    2. Se non sono presenti voci di gravità degli errori, contatta l'assistenza clienti.

Le seguenti sezioni forniscono dettagli su come completare ogni passaggio per la risoluzione dei problemi.

Verificare l'accesso degli utenti

Controlla se l'accesso utente è negato sia nella console Google Cloud sia in Google Cloud CLI:

  1. Accedi alla console Google Cloud con le credenziali dell'utente interessato.
  2. Prova ad accedere alla risorsa. Ad esempio, se l'utente ha segnalato di non poter avviare una VM, prova ad avviare una VM.
  3. Nella console Google Cloud, apri Cloud Shell ed esegui il seguente comando gcloud CLI da una sessione a cui l'utente ha eseguito l'accesso. Questo comando consente di verificare se l'utente ha eseguito l'accesso all'identità corretta e se può accedere alla risorsa utilizzando gcloud CLI.

    gcloud auth list
    

    L'output restituisce l'account a cui l'utente ha eseguito l'accesso.

  4. Controlla se il comando precedente restituisce l'identità corretta.

    • Se il comando precedente restituisce l'identità errata, chiedi all'utente di accedere all'identità corretta. Poi determina se l'accesso è ancora un problema quando utilizzano l'identità corretta.
    • Se il comando precedente restituisce l'identità corretta e ricevi un messaggio permission denied, esegui il comando gcloud CLI per l'azione che l'utente vuole completare. Per maggiori dettagli sul rifiuto, aggiungi i flag --log-http e --verbosity=debug.
  5. Se identifichi un problema relativo alle autorizzazioni, vai a Verificare le autorizzazioni richieste.

Verifica la presenza di problemi di rete

  1. Verifica la presenza di problemi di rete utilizzando le linee guida per la risoluzione dei problemi relativi ai Controlli di servizio VPC. Se viene visualizzato un messaggio di errore relativo al rifiuto dei Controlli di servizio VPC, risolvi il problema.
  2. Controlla i percorsi di rete dall'origine alla destinazione utilizzando Connectivity Tests. Per informazioni su come testare la connettività tra due istanze VM nella stessa rete o in reti in peering, consulta Test all'interno di reti VPC.
  3. Controlla la configurazione del firewall utilizzando Firewall Insights per visualizzare eventuali regole firewall con shadowing e le eventuali regole di negazione che potrebbero influire sui percorsi di accesso.

Controlla l'allocazione della quota

  • Se non trovi problemi relativi alla rete, controlla l'allocazione della quota. Se sembra esserci un problema relativo alla quota, segui la procedura definita per aumentare la quota, se necessario.

Esaminare i log di controllo

  • Controlla i file degli audit log utilizzando Esplora log. Esplora log fornisce un riepilogo della gravità di una voce di log. La gravità del log degli errori viene registrata quando una chiamata API non va a buon fine; ad esempio, viene registrato un errore se un utente tenta di creare un bucket Cloud Storage ma non dispone delle autorizzazioni per chiamare storage.buckets.create.

    Il riepilogo di una voce di log fornisce i seguenti dettagli:

    • Nome risorsa di destinazione
    • Entità (che sta tentando di accedere alla risorsa)
    • Chiamata API che l'entità ha tentato di eseguire

Verifica le autorizzazioni richieste

Per eseguire il debug perché l'entità non dispone delle autorizzazioni necessarie, utilizza lo strumento per la risoluzione dei problemi relativi ai criteri:

  1. Se i controlli indicano che l'accesso non è stato concesso, esamina i ruoli indicati dallo strumento per la risoluzione dei problemi relativi ai criteri che contengono l'autorizzazione.
  2. Utilizza l'Analizzatore criteri per vedere a quali altre entità hanno accesso la risorsa a cui è negato l'accesso.
  3. Aggiungi l'identità dell'entità al gruppo Google che ha un'associazione al ruolo appropriato.

Contatta l'assistenza clienti

Se hai completato le sezioni precedenti per la risoluzione dei problemi e non riesci a risolvere il problema, contatta l'assistenza clienti. Fornisci il maggior numero possibile di informazioni, come descritto nella sezione della guida alla risoluzione dei problemi Riassegnazione all'assistenza clienti.

Esempi di casi d'uso per la risoluzione dei problemi

Questa sezione fornisce procedure dettagliate approfondite su come risolvere i problemi relativi a casi d'uso specifici utilizzando i passaggi precedenti per la risoluzione dei problemi. Per tutti i casi d'uso, devi disporre delle autorizzazioni appropriate per utilizzare gli strumenti di risoluzione dei problemi descritti in Risoluzione dei problemi relativi a criteri e accesso su Google Cloud.

I seguenti casi d'uso presuppongono che utilizzi Google Gruppi per gestire l'accesso degli utenti. Usare Google Gruppi per concedere le autorizzazioni consente di gestire l'accesso su larga scala. Ciascun membro di un gruppo Google eredita i ruoli IAM (Identity and Access Management) concessi al gruppo. Questa ereditarietà significa che puoi utilizzare l'appartenenza a un gruppo per gestire i ruoli degli utenti invece di concedere ruoli IAM ai singoli utenti.

Il delegante nel ruolo risolve i problemi di accesso sviluppatore a un ruolo Amministratore Compute

In qualità di delegante, devo capire perché non posso concedere un determinato ruolo a uno sviluppatore. Concedo regolarmente i ruoli di amministratore Compute ai nuovi sviluppatori quando entrano a far parte del mio team. Oggi ho provato a concedere il ruolo Amministratore istanze Compute, ma è stato negato.

Seguendo il diagramma di flusso per verificare l'accesso degli utenti e controllare gli audit log, puoi confermare che si tratta di un problema di autorizzazione.

Per poter concedere i ruoli, devi disporre dell'autorizzazione resourcemanager.projects.setIamPolicy. Questa autorizzazione può essere concessa nell'ambito dei seguenti ruoli:

  • Ruolo Amministratore organizzazione(roles/resourcemanager.organizationAdmin)
  • Ruolo Amministratore IAM cartella (roles/resourcemanager.folderIamAdmin)
  • Ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin)

Per determinare se al delegante ruolo è stata assegnata l'autorizzazione resourcemanager.projects.setIamPolicy, utilizza lo strumento per la risoluzione dei problemi relativi ai criteri. Se l'autorizzazione non viene più assegnata, controlla quanto segue:

  1. Controlla se è stato applicato un suggerimento IAM che potrebbe aver revocato il criterio.
  2. Se sai quando hai concesso i ruoli l'ultima volta, controlla i log da allora a oggi per vedere se sono state effettuate chiamate setIam che potrebbero aver modificato i criteri applicati.
  3. Utilizza l'Analizzatore criteri per verificare quali entità hanno resourcemanager.projects.setIamPolicy. L'Analizzatore criteri può aiutare a verificare se il delegato del ruolo è stato rimosso da un gruppo.

L'amministratore cloud risolve i problemi di accesso degli sviluppatori a BigQuery

In qualità di amministratore cloud, devo capire perché uno degli sviluppatori non può più eseguire una query su un set di dati BigQuery.

Per risolvere questo caso d'uso, devi prima verificare l'accesso degli utenti e risolvere eventuali problemi correlati. Dopodiché verifica la presenza di problemi di rete. Questo esempio presuppone che tu abbia stabilito che non ci sono problemi di identità o di rete, ma di autorizzazioni.

Per risolvere il problema relativo alle autorizzazioni, verifica innanzitutto le autorizzazioni dei membri del team. Se non trovi discrepanze, controlla i log per identificare potenziali problemi. Se non rilevi alcun problema nei log, puoi contattare l'assistenza clienti.

Controllare le autorizzazioni dei membri del team

Per controllare le autorizzazioni dei membri del team, chiedi allo sviluppatore quando è stato l'ultima volta che è stato in grado di eseguire correttamente la query. Quindi determina se qualcuno nel team dello sviluppatore è stato precedentemente in grado di eseguire la query e se quella persona può ancora eseguirla correttamente. Se nessun membro del team può eseguire la query, vai alla sezione Controlla i log.

Se un membro del team può ancora eseguire la query, completa i seguenti passaggi:

  1. Controlla le autorizzazioni IAM concesse a entrambi gli sviluppatori e determina se le autorizzazioni sono diverse. Quando esamini le autorizzazioni, controlla quanto segue:
  2. Se le autorizzazioni non sono diverse, vai alla sezione successiva, Controlla i log. Se le autorizzazioni non corrispondono, completa i seguenti passaggi:
    1. Controlla se entrambi i membri del team appartengono allo stesso gruppo Google.
      • Se non fanno parte dello stesso gruppo Google, determina se devono esserlo.
      • Se in precedenza facevano parte dello stesso gruppo Google, contatta l'amministratore del gruppo per capire perché sono state apportate modifiche.
  3. Dopo aver risolto il problema relativo alle autorizzazioni, controlla se lo sviluppatore è in grado di eseguire la query.
    • Se lo sviluppatore è in grado di eseguire la query, risolvi il problema.
    • Se lo sviluppatore non riesce a eseguire la query, vai alla sezione successiva, Controlla i log.

Controlla i log

Se nessun membro del team può completare la query o se la risoluzione dei problemi relativi alle autorizzazioni non ha risolto il problema, controlla i log per determinare cosa potrebbe essere cambiato da quando lo sviluppatore è stato in grado di completare la query per ultimo.

  1. Stabilisci dove visualizzare i log per l'ultima attività completata correttamente. In questo esempio, i log vengono esportati in BigQuery.
  2. Esegui query sui log esportati in BigQuery:
    1. Esegui una query che includa l'ultima data riuscita a cui lo sviluppatore ha avuto accesso, in modo da poter vedere come funziona.
    2. Esegui la stessa query per un periodo di tempo in cui la richiesta non è andata a buon fine.
  3. Se nei log è presente qualcosa di identificabile, risolvi il problema utilizzando lo strumento per la risoluzione dei problemi relativi ai criteri e lo strumento di analisi dei criteri come descritto nella sezione Controllare le autorizzazioni richieste.
  4. Se non riesci ancora a risolvere il problema, contatta l'assistenza clienti.

Lo sviluppatore deve avere le autorizzazioni per GKE

In qualità di sviluppatore, devo capire perché non posso avviare, eliminare o aggiornare un pod o creare un deployment nel cluster Google Kubernetes Engine (GKE) a cui ho accesso. Non so quale entità sia quando eseguo la chiamata con lo strumento a riga di comando kubectl o di quali autorizzazioni dispongo.

Il ruolo IAM che consente a uno sviluppatore di avviare, eliminare o aggiornare un pod o creare un deployment nel cluster GKE è il ruolo Sviluppatore Google Kubernetes Engine (roles/container.developer). Il ruolo deve essere concesso nel progetto in cui si trova il cluster GKE.

Per risolvere questo caso d'uso, devi prima verificare l'accesso degli utenti e risolvere eventuali problemi correlati. Dopo aver convalidato l'identità, ti assicuri che lo strumento kubectl sia configurato in modo da puntare al cluster giusto. Per informazioni su come verificare che l'identità utilizzata dallo strumento kubectl sia corretta e che lo strumento kubectl punti al cluster corretto, consulta Configurazione dell'accesso al cluster per kubectl. Questo esempio presuppone che tu abbia stabilito che non c'è un problema di rete o di quota, ma un problema di autorizzazioni.

Per iniziare a risolvere il problema relativo alle autorizzazioni, controlla gli audit log per vedere cosa è cambiato tra l'ultima azione riuscita dello sviluppatore e la prima segnalazione del problema.

  1. Se lo sviluppatore aveva accesso in precedenza, controlla se un membro del team che dispone anche delle autorizzazioni per eseguire le stesse azioni può comunque completarle. Se il membro del team ha accesso, utilizza lo Analizzatore criteri per determinare di quale tipo di accesso dispone. Se applichi le best practice, entrambi gli sviluppatori devono avere la stessa appartenenza al gruppo e le stesse autorizzazioni.

    1. Se le autorizzazioni sono le stesse e nessuno dei due sviluppatori può eseguire le azioni sulla risorsa, controlla se sono stati applicati consigli IAM che potrebbero influire sull'accesso.
    2. Se le autorizzazioni sono diverse, verifica il motivo della differenza:
      1. Controlla gli audit log per sapere quando lo sviluppatore è stato in grado di eseguire l'attività. Confronta i log con l'ultima volta in cui l'utente ha provato l'attività e non è riuscita a completarla.
      2. Controlla i suggerimenti IAM e applica eventuali suggerimenti.
  2. Se non è presente un altro membro del team con cui eseguire la convalida, utilizza lo strumento per la risoluzione dei problemi relativi ai criteri e l'Analizzatore criteri come descritto in Verificare le autorizzazioni richieste. Per maggiori informazioni, consulta le seguenti risorse:

  3. Se il problema persiste, contatta l'assistenza clienti.

L'amministratore della sicurezza risolve i problemi di accesso degli sviluppatori

In qualità di amministratore della sicurezza, ho bisogno di capire perché uno sviluppatore non ha potuto eseguire un'azione. Quali sono il ruolo e la posizione migliori da assegnare a quel ruolo in modo che il ruolo non fornisca un livello di accesso maggiore di quello necessario all'utente?

In questo caso, lo sviluppatore deve essere in grado di:

  • Caricare oggetti in un bucket Cloud Storage. Lo sviluppatore non deve essere in grado di visualizzare, eliminare o sovrascrivere gli oggetti esistenti nel bucket.
  • Avvia le istanze nel relativo progetto di sviluppo.

Per comprendere quali autorizzazioni sono necessarie per eseguire l'attività che lo sviluppatore deve eseguire, puoi utilizzare lo strumento per la risoluzione dei problemi relativi ai criteri e la pagina di riferimento sui ruoli di comprensione IAM. In questo esempio, devi concedere allo sviluppatore un ruolo che includa le seguenti autorizzazioni:

  • Per consentire allo sviluppatore di arrestare e avviare le istanze: compute.instances.start e compute.instances.stop
  • Per consentire allo sviluppatore di caricare oggetti nei bucket Cloud Storage: storage.objects.create

I ruoli seguenti includono le autorizzazioni precedenti e rispettano il principio del privilegio minimo:

  • A livello di bucket del bucket in cui lo sviluppatore è autorizzato a caricare oggetti, concedi il ruolo Creatore oggetti Storage (roles/storage.objectCreator).
  • A livello di progetto nel progetto assegnato dallo sviluppatore o nell'istanza in cui lo sviluppatore deve poter essere riavviato, concedi il ruolo Amministratore istanze Compute (roles/compute.instanceAdmin).

In genere, la gestione delle istanze potrebbe richiedere anche azioni come l'aggiunta di dischi. In questo caso, il ruolo roles/compute.instanceAdmin potrebbe essere un modo appropriato per concedere le autorizzazioni richieste rispettando il principio del privilegio minimo.

L'amministratore cloud risolve i problemi perché un'applicazione non riesce a scrivere in Cloud Storage

In qualità di amministratore cloud, ho bisogno di capire perché un'applicazione in esecuzione su GKE non può più scrivere in Cloud Storage.

In questo scenario, un'applicazione in esecuzione su GKE deve essere configurata come segue:

  • In un bucket specificato, l'applicazione può aggiungere, aggiornare ed eliminare oggetti.
  • L'applicazione non può avere accesso ad altri bucket nell'organizzazione.

Il seguente approccio alla risoluzione dei problemi presuppone l'utilizzo di Workload Identity, che consigliamo di utilizzare. Con Workload Identity, puoi configurare un account di servizio Kubernetes in modo che funzioni come account di servizio Google. I pod in esecuzione come account di servizio Kubernetes si autenticano automaticamente come account di servizio Google quando accedono alle API Google Cloud.

In questo esempio, confermi di aver concesso le autorizzazioni appropriate all'account di servizio Google che stai utilizzando per Workload Identity per il tuo cluster. Per comprendere le autorizzazioni necessarie per completare le attività della tua applicazione, utilizza lo strumento per la risoluzione dei problemi relativi ai criteri e la pagina di riferimento dei ruoli di comprensione IAM. Per configurare e verificare le autorizzazioni:

  1. Assegna le seguenti autorizzazioni all'account di servizio Google che stai utilizzando per Workload Identity:

    1. Nel bucket per il quale l'applicazione è autorizzata ad avere il controllo completo degli oggetti, compresi l'elenco, la creazione, la visualizzazione e l'eliminazione degli oggetti, concedi il ruolo Amministratore oggetti Storage (roles/storage.objectAdmin).
    2. Per configurare l'account di servizio Kubernetes in modo che rappresenti l'account di servizio Google, imposta un'associazione di criteri IAM:

      gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]" \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      Sostituisci i seguenti valori:

      • PROJECT_ID: l'ID progetto
      • KSA_NAME: l'account di servizio Kubernetes che esegue la richiesta
      • KUBERNETES_NAMESPACE: lo spazio dei nomi Kubernetes in cui è definito l'account di servizio Kubernetes
      • GSA_NAME: l'account di servizio Google
  2. Imposta l'autorizzazione iam.serviceAccounts.setIamPolicy per il progetto:

    • Aggiungi la seguente annotazione all'account di servizio Kubernetes:

      iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
      
  3. Verifica che l'account di servizio Google disponga delle autorizzazioni corrette e che Workload Identity sia configurato correttamente:

    1. Nel bucket per il quale l'applicazione è autorizzata ad avere il controllo completo degli oggetti, visualizza il criterio IAM per il bucket e verifica che l'account di servizio Google abbia il ruolo roles/storage.objectAdmin.
    2. Se le autorizzazioni non sono corrette, modifica il criterio per concedere all'account di servizio Google l'autorizzazione richiesta.
  4. Verifica che Workload Identity sia configurato correttamente controllando che esista un'associazione all'account di servizio Kubernetes:

    gcloud iam service-accounts get-iam-policy \
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    L'output sarà simile al seguente:

    - members:
      - serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]
      role: roles/iam.workloadIdentityUser
    

    Se l'associazione non è corretta, ripeti i passaggi precedenti per assegnare le autorizzazioni all'account di servizio.

Passaggi successivi

  • Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.