Gestire l'accesso agli account di servizio

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come concedere, modificare e revocare l'accesso di un'entità a un singolo account di servizio. Per gestire l'accesso di un'entità a tutti gli account di servizio in un progetto, una cartella o un'organizzazione, gestisci il loro accesso a livello di progetto, cartella o organizzazione.

In Identity and Access Management (IAM), l'accesso è gestito tramite i criteri di autorizzazione, noti anche come criteri IAM. Un criterio di autorizzazione è associato a una risorsa Google Cloud. Ogni criterio di autorizzazione contiene una raccolta di associazioni di ruoli che associano una o più entità, ad esempio utenti o account di servizio, a un ruolo IAM. Queste associazioni di ruoli concedono i ruoli specificati alle entità, sia nella risorsa a cui è associato il criterio di autorizzazione, sia in tutti i discendenti della risorsa. Per ulteriori informazioni sui criteri di autorizzazione, consulta la pagina Informazioni sui criteri di autorizzazione.

Gli account di servizio sono risorse a cui è possibile concedere l'accesso ad altre entità e entità a cui è possibile concedere l'accesso ad altre risorse. Questa pagina tratta gli account di servizio come risorse e descrive come concedere ad altre entità l'accesso. Per scoprire come concedere a un account di servizio l'accesso ad altre risorse, consulta le seguenti guide:

Questa pagina descrive come gestire l'accesso agli account di servizio utilizzando Google Cloud Console, Google Cloud CLI e l'API REST. Puoi anche gestire l'accesso utilizzando le librerie client IAM.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire l'accesso a un account di servizio, chiedi all'amministratore di assegnarti il ruolo IAM Amministratore account di servizio (roles/iam.serviceAccountAdmin) per l'account di servizio o per il progetto che possiede l'account di servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire l'accesso a un account di servizio. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Visualizza accesso attuale

La sezione seguente mostra come utilizzare la console Google Cloud, l'interfaccia a riga di comando gcloud CLI'API REST per visualizzare chi ha accesso a un account di servizio. Puoi visualizzare l'accesso anche utilizzando le librerie client IAM per ottenere il criterio di autorizzazione dell'account di servizio.

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email dell'account di servizio.

  4. Vai alla scheda Autorizzazioni. La sezione Entità con accesso a questo account di servizio elenca tutte le entità a cui è stato concesso un ruolo nell'account di servizio.

    Questo elenco include le entità i cui accessi provengono da ruoli concessi nelle risorse padre. Per maggiori informazioni sull'ereditarietà dei criteri, vedi Eredità dei criteri e gerarchia delle risorse.

  5. (Facoltativo) Per visualizzare le concessioni di ruoli per gli account di servizio gestiti da Google, seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.

gcloud CLI

Per vedere chi ha accesso all'account di servizio, ottieni i criteri di autorizzazione per l'account di servizio. Per scoprire come interpretare i criteri di autorizzazione, consulta Comprendere i criteri di autorizzazione.

Per ottenere il criterio di autorizzazione per l'account di servizio, esegui il comando get-iam-policy per l'account di servizio:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Fornisci i seguenti valori:

  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • FORMAT: il formato auspicato per il criterio. Utilizza json o yaml.

  • PATH: il percorso di un nuovo file di output per il criterio.

Ad esempio, il seguente comando ottiene il criterio per l'account di servizio my-service-account e lo salva nella directory home in formato JSON:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Per vedere chi ha accesso all'account di servizio, ottieni i criteri di autorizzazione per l'account di servizio. Per scoprire come interpretare i criteri di autorizzazione, consulta Comprendere i criteri di autorizzazione.

Il metodo serviceAccounts.getIamPolicy ottiene il criterio di autorizzazione di un account di servizio.

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

  • PROJECT_ID: il tuo ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come my-project.
  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • POLICY_VERSION: la versione del criterio da ripristinare. Le richieste devono specificare la versione più recente del criterio, che è la versione 3. Per i dettagli, consulta la sezione Specificare la versione di un criterio quando si riceve un criterio.

Metodo e URL HTTP:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Testo JSON richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione dell'account di servizio. Ad esempio:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Concedere o revocare un singolo ruolo

Puoi utilizzare la console Google Cloud e l'interfaccia a riga di comando gcloud per concedere o revocare rapidamente un singolo ruolo per una singola entità, senza modificare direttamente il criterio di autorizzazione dell'account di servizio. I tipi di entità comuni includono Account Google, Account di servizio, Gruppi Google e domini. Per un elenco di tutti i tipi di entità, consulta i Concetti relativi all'identità.

Se hai bisogno di aiuto per identificare il ruolo predefinito più appropriato, consulta Scegliere i ruoli predefiniti.

Concedere un ruolo singolo

Per concedere un singolo ruolo a un'entità, segui questi passaggi:

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email dell'account di servizio.

  4. Vai alla scheda Autorizzazioni e individua la sezione Entità con accesso a questo account di servizio.

  5. Seleziona un'entità a cui concedere un ruolo:

    • Per concedere un ruolo a un'entità che ha già altri ruoli nell'account di servizio, trova una riga contenente l'entità, quindi fai clic su Modifica principio in quella riga e fai clic su Aggiungi un altro ruolo.

      Se vuoi concedere un ruolo a un account di servizio gestito da Google, devi selezionare la casella di controllo Includi le concessioni di ruoli fornite da Google per visualizzarne l'indirizzo email.

    • Per concedere a un'entità che non ha già altri ruoli nell'account di servizio, fai clic su Concedi l'accesso, quindi inserisci l'indirizzo email dell'entità o un altro identificatore.

  6. Seleziona un ruolo da concedere dall'elenco a discesa. Per le best practice di sicurezza, scegli un ruolo che includa solo le autorizzazioni necessarie.

  7. (Facoltativo) Aggiungi una condizione al ruolo.

  8. Fai clic su Salva. All'entità viene concesso il ruolo nell'account di servizio.

gcloud CLI

Per concedere rapidamente un ruolo a un'entità, esegui il comando add-iam-policy-binding:

gcloud iam service-accounts add-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_ID \
    --condition=CONDITION

Fornisci i seguenti valori:

  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • PRINCIPAL: un identificatore per l'entità o il membro, che di solito ha il seguente formato: PRINCIPAL-TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento sull'associazione dei criteri.

    Per il tipo di entità user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o un dominio Cloud Identity. Per scoprire come configurare un dominio Cloud Identity, consulta la panoramica di Cloud Identity.

  • ROLE_ID: il nome del ruolo che vuoi concedere. Ad esempio, roles/iam.serviceAccountUser. Per un elenco dei ruoli, consulta Informazioni sui ruoli.

  • CONDITION: facoltativo. La condizione da aggiungere all'associazione di ruolo. Per ulteriori informazioni sulle condizioni, consulta la panoramica delle condizioni.

Ad esempio, per concedere il ruolo Utente account di servizio all'utente my-user@example.com per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Revocare un singolo ruolo

Per revocare un singolo ruolo di un'entità, segui questi passaggi:

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email dell'account di servizio.

  4. Vai alla scheda Autorizzazioni e individua la sezione Entità con accesso a questo account di servizio.

  5. Trova la riga con l'indirizzo email dell'entità di cui vuoi revocare l'accesso. Quindi, fai clic su Modifica entità in quella riga.

  6. Fai clic sul pulsante Elimina per ogni ruolo da revocare e poi su Salva.

gcloud CLI

Per revocare rapidamente un ruolo di un utente, esegui il comando remove-iam-policy-binding:

gcloud iam service-accounts remove-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_ID

Fornisci i seguenti valori:

  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • PRINCIPAL: un identificatore per l'entità o il membro, che di solito ha il seguente formato: PRINCIPAL-TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento sull'associazione dei criteri.

    Per il tipo di entità user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o un dominio Cloud Identity. Per scoprire come configurare un dominio Cloud Identity, consulta la panoramica di Cloud Identity.

  • ROLE_ID: il nome del ruolo da revocare. Ad esempio, roles/iam.serviceAccountUser. Per un elenco dei ruoli, consulta Informazioni sui ruoli.

Ad esempio, per revocare il ruolo Utente account di servizio dall'utente my-user@example.com per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com:

gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Concedere o revocare più ruoli

Per apportare modifiche di accesso su larga scala che prevedono la concessione e la revoca di più ruoli, utilizza il pattern read-modify-write per aggiornare il criterio di autorizzazione dell'account di servizio:

  1. Leggi l'attuale criterio di autorizzazione chiamando getIamPolicy().
  2. Modifica il criterio di autorizzazione utilizzando un editor di testo o in modo programmatico per aggiungere o rimuovere le entità o le associazioni di ruoli.
  3. Scrivi il criterio di autorizzazione aggiornato chiamando setIamPolicy().

Questa sezione mostra come utilizzare l'interfaccia a riga di comando gcloud e l'API REST per aggiornare il criterio di autorizzazione. Puoi aggiornare il criterio di autorizzazione anche utilizzando le librerie client IAM.

Scarica l'attuale criterio di autorizzazione

gcloud CLI

Per ottenere il criterio di autorizzazione per l'account di servizio, esegui il comando get-iam-policy per l'account di servizio:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Fornisci i seguenti valori:

  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • FORMAT: il formato desiderato per il criterio di autorizzazione. Utilizza json o yaml.

  • PATH: il percorso di un nuovo file di output per il criterio di autorizzazione.

Ad esempio, il seguente comando ottiene il criterio di autorizzazione per l'account di servizio my-service-account e lo salva nella directory home in formato JSON:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Il metodo serviceAccounts.getIamPolicy ottiene il criterio di autorizzazione di un account di servizio.

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

  • PROJECT_ID: il tuo ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come my-project.
  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • POLICY_VERSION: la versione del criterio da ripristinare. Le richieste devono specificare la versione più recente del criterio, che è la versione 3. Per i dettagli, consulta la sezione Specificare la versione di un criterio quando si riceve un criterio.

Metodo e URL HTTP:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Testo JSON richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione dell'account di servizio. Ad esempio:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Salva la risposta in un file del tipo appropriato (json o yaml).

Modifica il criterio di autorizzazione

In modo programmatico o mediante un editor di testo, modifica la copia locale dei criteri di autorizzazione dell'account di servizio in modo che riflettano i ruoli che vuoi concedere o revocare agli utenti specifici.

Per assicurarti di non sovrascrivere altre modifiche, non modificare o rimuovere il campo etag del criterio di autorizzazione. Il campo etag identifica lo stato attuale del criterio di autorizzazione. Quando imposti il criterio di autorizzazione aggiornato, IAM confronta il valore etag nella richiesta con il valore etag esistente e scrive il criterio di autorizzazione solo se i valori corrispondono.

Concedi un ruolo

Per concedere ruoli alle entità, modifica le associazioni di ruoli nel criterio di autorizzazione. Per scoprire quali ruoli puoi concedere, consulta Informazioni sui ruoli o Visualizzazione dei ruoli assegnabili per l'account di servizio. Se hai bisogno di aiuto per identificare i ruoli predefiniti più appropriati, consulta Scegliere i ruoli predefiniti.

Facoltativamente, puoi utilizzare le condizioni per concedere i ruoli solo quando sono soddisfatti determinati requisiti.

Per concedere un ruolo già incluso nel criterio di autorizzazione, aggiungi l'entità a un'associazione di ruolo esistente:

gcloud CLI

Modifica il criterio di autorizzazione aggiungendo l'entità a un'associazione di ruoli esistente. Tieni presente che questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Immagina, ad esempio, che il criterio di autorizzazione contenga l'associazione dei ruoli seguente, che concede il ruolo Utente account di servizio (roles/iam.serviceAccountUser) a kai@example.com:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Per concedere lo stesso ruolo a raha@example.com, aggiungi raha@example.com all'associazione dei ruoli esistente:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

Modifica il criterio di autorizzazione aggiungendo l'entità a un'associazione di ruoli esistente. Tieni presente che questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Immagina, ad esempio, che il criterio di autorizzazione contenga l'associazione dei ruoli seguente, che concede il ruolo Utente account di servizio (roles/iam.serviceAccountUser) a kai@example.com:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Per concedere lo stesso ruolo a raha@example.com, aggiungi raha@example.com all'associazione dei ruoli esistente:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Per concedere un ruolo non ancora incluso nel criterio di autorizzazione, aggiungi un nuovo ruolo vincolante:

gcloud CLI

Modifica il criterio di autorizzazione aggiungendo una nuova associazione di ruolo che conceda il ruolo al ruolo principale. Questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Ad esempio, per concedere il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) a raha@example.com, aggiungi la seguente associazione di ruolo all'array bindings per il criterio di autorizzazione:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

REST

Modifica il criterio di autorizzazione aggiungendo una nuova associazione di ruolo che conceda il ruolo al ruolo principale. Questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Ad esempio, per concedere il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) a raha@example.com, aggiungi la seguente associazione di ruolo all'array bindings per il criterio di autorizzazione:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

Revocare un ruolo

Per revocare un ruolo, rimuovi l'entità dall'associazione dei ruoli. Se non ci sono altre entità nell'associazione dei ruoli, rimuovi l'intera associazione dei ruoli dal criterio di autorizzazione.

gcloud CLI

Modifica il criterio di autorizzazione rimuovendo l'entità o l'intera associazione dei ruoli. Questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Immagina, ad esempio, che il criterio di autorizzazione contenga l'associazione dei ruoli seguente, che concede a kai@example.com e raha@example.com il ruolo Utente account di servizio (roles/iam.serviceAccountUser):

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Per revocare il ruolo da kai@example.com, rimuovi kai@example.com dall'associazione del ruolo:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Per revocare il ruolo sia da kai@example.com che da raha@example.com, rimuovi l'associazione di ruolo dal criterio di autorizzazione.

REST

Modifica il criterio di autorizzazione rimuovendo l'entità o l'intera associazione dei ruoli. Questa modifica non diventerà effettiva finché non imposti il criterio di autorizzazione aggiornato.

Immagina, ad esempio, che il criterio di autorizzazione contenga l'associazione dei ruoli seguente, che concede a kai@example.com e raha@example.com il ruolo Utente account di servizio (roles/iam.serviceAccountUser):

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Per revocare il ruolo da kai@example.com, rimuovi kai@example.com dall'associazione del ruolo:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Per revocare il ruolo sia da kai@example.com che da raha@example.com, rimuovi l'associazione di ruolo dal criterio di autorizzazione.

Imposta il criterio di autorizzazione

Dopo aver modificato il criterio di autorizzazione per concedere e revocare i ruoli desiderati, chiama setIamPolicy() per eseguire gli aggiornamenti.

gcloud CLI

Per impostare il criterio di autorizzazione per la risorsa, esegui il comando set-iam-policy per l'account di servizio:

gcloud iam service-accounts set-iam-policy SA_ID PATH

Fornisci i seguenti valori:

  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • PATH: il percorso di un file che contiene il nuovo criterio di autorizzazione.

La risposta contiene il criterio di autorizzazione aggiornato.

Ad esempio, il seguente comando imposta il criterio di autorizzazione memorizzato in policy.json come criterio di autorizzazione per l'account di servizio my-service-account@my-project.iam.gserviceaccount.com:

gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \
    ~/policy.json

REST

Il metodo serviceAccounts.setIamPolicy imposta un criterio di autorizzazione aggiornato per l'account di servizio.

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

  • PROJECT_ID: il tuo ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche come my-project.
  • SA_ID: l'ID del tuo account di servizio. Può essere l'indirizzo email dell'account di servizio nel modulo SA_NAME@PROJECT_ID.iam.gserviceaccount.com o l'ID numerico univoco dell'account di servizio.

  • POLICY: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta il riferimento alle norme.

    Ad esempio, per impostare il criterio di autorizzazione mostrato nel passaggio precedente, sostituisci policy con quanto segue:

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@example.com"
          ]
        }
      ]
    }
    

Metodo e URL HTTP:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy

Testo JSON richiesta:

{
  "policy": POLICY
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Inizia gratuitamente