Configura l'identità del servizio

Un job Cloud Run ha un'identità di servizio che viene utilizzata come account autenticato per accedere alle API Google Cloud dal contenitore dell'istanza Cloud Run. Per scoprire di più sull'identità del servizio, consulta Introduzione all'identità del servizio guida.

Come viene utilizzata l'identità del servizio

In Cloud Run, l'identità di servizio è un account di servizio che è sia una risorsa che un'entità.

  • Identità di servizio come risorsa: per collegare un account di servizio come risorsa. l'identità del servizio, l'account deployer deve avere accesso alla risorsa di identità del servizio. Alcune operazioni, come la creazione o l'aggiornamento di un job, richiedono che l'account di deployment disponga delle autorizzazioni per la risorsa identità servizio.
  • Identità del servizio come principale: per accedere alle API Google Cloud da un job Cloud Run, devi concedere all'identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni che vuoi che il job esegua.

La sezione successiva illustra i ruoli richiesti per concedere all'account di deployment l'accesso alla risorsa di identità di servizio e per concedere l'accesso per il principale dell'account di servizio.

Ruoli obbligatori

Tu o l'amministratore dovete concedere ruoli e autorizzazioni IAM per l'account deployer e l'identità del servizio.

Fai clic per visualizzare i ruoli richiesti per l'account di deployment

Per ottenere le autorizzazioni necessarie per collegare un account di servizio come l'identità del servizio sul job, tu o il tuo amministratore deve concedere all'account di deployment Utente account di servizio ruolo (roles/iam.serviceAccountUser) nell'account di servizio utilizzata come identità del servizio.

Questo ruolo predefinito contiene iam.serviceAccounts.actAs necessaria per collegare un account di servizio al un lavoro. Potresti anche ottenere questa autorizzazione configurando ruoli personalizzati o utilizzando altri ruoli predefiniti.

Per istruzioni su come concedere all'account di deployment questo ruolo nell'identità del servizio, consulta Autorizzazioni di deployment. Se l'account di servizio si trova in un progetto diverso da quello del job Cloud Run, tu o il tuo amministratore dovete anche configurare un ruolo IAM per l'agente di servizio Cloud Run e impostare un criterio dell'organizzazione. Consulta: Usa account di servizio in altri progetti per ulteriori dettagli.

Fai clic per visualizzare i ruoli richiesti per l'identità del servizio

Consentire all'identità del servizio di accedere alle API Google Cloud da: Cloud Run, tu o l'amministratore dovete concedere il servizio identifica autorizzazioni o ruoli richieste dalle operazioni che vuoi eseguire. Per accedere a librerie client Cloud specifiche, consulta la documentazione di Google Cloud relativa al servizio Google Cloud.

Se un job Cloud Run non accede ad altri servizi Google Cloud, non devi concedere all'identità di servizio alcun ruolo o autorizzazione e puoi utilizzare l'account di servizio predefinito assegnato al progetto.

Ricevi consigli per creare account di servizio dedicati

Quando crei un nuovo account di servizio dalla console Google Cloud, il passaggio facoltativo "Concede all'account di servizio l'accesso al progetto" è per qualsiasi accesso aggiuntivo richiesto. Ad esempio, un servizio Cloud Run potrebbe richiamare un'altra servizio Cloud Run privato, oppure accedere a un database Cloud SQL, che richiedono ruoli IAM specifici. Per ulteriori informazioni, consulta la documentazione sulla gestione dell'accesso.

Il servizio di consigli fornisce anche automaticamente consigli per creare account di servizio dedicati con l'insieme minimo di autorizzazioni richieste.

Configura identità servizio

Per configurare l'identità del servizio in Cloud Run o specificarla, utilizza la console Google Cloud, gcloud CLI o l'API (YAML) quando crei ed esegui un nuovo job:

Console

  1. Nella console Google Cloud, vai alla pagina dei job Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Esegui il deployment del container e seleziona Job per compilare il job iniziale. nella pagina delle impostazioni. Se stai configurando un job esistente, selezionalo e fai clic su Modifica.

  3. Fai clic su Contenitore, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Sicurezza.

    immagine

    • Fai clic sul menu a discesa Account di servizio e seleziona un account di servizio esistente oppure fai clic su Crea un nuovo account di servizio, se pertinente.
  5. Fai clic su Crea o Aggiorna.

gcloud

Puoi creare un nuovo lavoro e specificare l'account di servizio utilizzando il comando seguente:

gcloud run jobs create JOB_NAME --service-account SERVICE_ACCOUNT

Sostituisci:

  • JOB_NAME con il nome del servizio.
  • SERVICE_ACCOUNT con l'account di servizio associato al new Identity: questo valore è l'indirizzo email dell'account di servizio, per ad esempio example@myproject.iam.gserviceaccount.com.

Puoi aggiornare un job esistente per avere un nuovo account di servizio utilizzando il seguente comando:

gcloud run jobs update JOB_NAME --image IMAGE_URL --service-account SERVICE_ACCOUNT

Sostituisci:

  • IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG di Google.
  • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità: questo valore è l'indirizzo email dell'account di servizio, ad esempio SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

YAML

Se non hai ancora creato un account di servizio, puoi creare un account di servizio gestito dall'utente in IAM.

  1. Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aggiorna l'attributo serviceAccountName::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              serviceAccountName: SERVICE_ACCOUNT

    Sostituisci

    • JOB_NAME con il nome del tuo job Cloud Run.
    • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità: questo valore è l'indirizzo email dell'account di servizio, ad esempio SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
  3. Aggiorna la configurazione del job esistente:

    gcloud run jobs replace job.yaml

Usa account di servizio in altri progetti

Se configuri un account di servizio da un progetto Google Cloud diverso dalla risorsa Cloud Run, segui questi passaggi:

  1. Tu o il tuo amministratore dovete concedere il ruolo Utente account di servizio (roles/iam.serviceAccountUser) all'account di servizio che utilizzi come identità del servizio.

    Console

    1. Vai alla pagina Account di servizio della console Google Cloud:

      Vai ad Account di servizio

    2. Seleziona l'indirizzo email dell'account di servizio che utilizzi come identità servizio.

    3. Fai clic sulla scheda Autorizzazioni.

    4. Fai clic sul pulsante Concedi accesso.

    5. Inserisci l'indirizzo email dell'account del deployer che corrisponde all'entità a cui stai concedendo il ruolo di amministratore o sviluppatore.

    6. Nel menu a discesa Seleziona un ruolo, seleziona Account di servizio > Utente account di servizio.

    7. Fai clic su Salva.

    gcloud

    Usa il comando gcloud iam service-accounts add-iam-policy-binding, sostituendo le variabili evidenziate con i valori appropriati:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Sostituisci:

    • SERVICE_ACCOUNT_NAME: il nome dell'account servizio a cui stai collegando la risorsa Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto in cui si trova l'account servizio.
    • PRINCIPAL con l'account deployer a cui stai aggiungendo associazione per, utilizzando il formato user|group|serviceAccount:email o domain:domain. Ad esempio:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com
  2. Tu o l'amministratore dovete concedere l'autorizzazione alla risorsa Cloud Run agente di servizio con il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) nell'account di servizio che utilizzi come identità del servizio. L'agente di servizio segue il formato service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    Console

    1. Vai alla pagina Account di servizio della console Google Cloud:

      Vai ad Account di servizio

    2. Seleziona l'indirizzo email dell'account di servizio che utilizzi come identità servizio.

    3. Fai clic sulla scheda Autorizzazioni.

    4. Fai clic sul pulsante Concedi accesso.

    5. Inserisci l'indirizzo email dell'agente di servizio. Ad esempio: service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    6. Nel menu a discesa Seleziona un ruolo, seleziona Account di servizio > Creatore token account di servizio.

    7. Fai clic su Salva.

    gcloud

    Utilizza il comando gcloud iam service-accounts add-iam-policy-binding:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Sostituisci i seguenti valori:

    • SERVICE_ACCOUNT_NAME: il nome dell'account servizio a cui stai collegando la risorsa Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto in cui in cui trovi l'account di servizio.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: Il numero del progetto in cui si trova Cloud Run.

    Il comando stampa il criterio di autorizzazione aggiornato per il servizio gestito dall'utente .

  3. Il progetto contenente questo account di servizio richiede che il valore org-policyiam.disableCrossProjectServiceAccountUsage sia impostato su false o non applicato a livello di cartella o ereditato dalle impostazioni a livello di progetto. L'opzione predefinita è true.

    Console

    1. Vai alla pagina Criteri dell'organizzazione nella console Google Cloud:

      Vai a Criteri dell'organizzazione

    2. Nel selettore dei progetti, seleziona l'organizzazione e il progetto per cui vuoi disattivare l'utilizzo dei service account tra i progetti.

    3. Seleziona il criterio per disabilitare l'utilizzo degli account di servizio tra progetti.

    4. Fai clic su Gestisci criterio.

    5. In Origine criterio, seleziona Sostituisci criterio della risorsa padre.

    6. Fai clic su Aggiungi una regola.

    7. In Applicazione forzata, seleziona Off.

    8. Per applicare il criterio, fai clic su Imposta criterio.

    gcloud

    Nel progetto che contiene l'account di servizio, assicurati che iam.disableCrossProjectServiceAccountUsage vincolo del criterio dell'organizzazione non viene applicata. Questo vincolo viene applicato per impostazione predefinita.

    Per disattivare questo vincolo dei criteri dell'organizzazione, esegui:

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    Sostituisci SERVICE_ACCOUNT_PROJECT_ID con l'ID progetto che contiene l'account di servizio.

Puoi applicare le iscrizioni ai ruoli direttamente alla risorsa dell'account di servizio o ereditarle dai livelli superiori della gerarchia delle risorse.

Passaggi successivi