Un pool di worker di Cloud Run ha un'identità di servizio che viene utilizzata come account autenticato per accedere alle Google Cloud API dal tuo container dell'istanza di Cloud Run. Per saperne di più sull'identità del servizio, consulta la guida Introduzione all'identità del servizio.
Come viene utilizzata l'identità del servizio
In Cloud Run, l'identità del servizio è un account di servizio che è sia una risorsa sia un'entità.
- Identità del servizio come risorsa: per collegare un account di servizio come identità del servizio, l'account del deployer deve avere accesso alla risorsa dell'identità del servizio. Alcune operazioni, come la creazione o l'aggiornamento di un pool di worker, richiedono che l'account del deployer disponga delle autorizzazioni per la risorsa dell'identità del servizio.
- Identità del servizio come entità: per accedere alle Google Cloud API da un pool di worker di Cloud Run, devi concedere all' identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni che vuoi che il pool di worker esegua.
La sezione successiva illustra i ruoli richiesti per concedere all'account del deployer l'accesso alla risorsa dell'identità del servizio e per concedere i ruoli o le autorizzazioni di cui l'entità del account di servizio ha bisogno.
Ruoli obbligatori
Tu o il tuo amministratore dovete concedere ruoli e autorizzazioni IAM per l'account del deployer e l'identità del servizio.
Fai clic per visualizzare i ruoli richiesti per l'account del deployer
Per ottenere le autorizzazioni necessarie per collegare un account di servizio come
identità del servizio nel pool di worker, tu o il tuo amministratore
dovete concedere all'account del deployer il
ruolo Utente account di servizio (roles/iam.serviceAccountUser) per l'account di servizio
utilizzato come identità del servizio.
Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.actAs
necessaria per collegare un account di servizio al
pool di worker. Potresti anche essere in grado di ottenere questa autorizzazione
configurando ruoli personalizzati
o utilizzando altri ruoli predefiniti.
Per istruzioni su come concedere all'account del deployer questo ruolo per l'identità del servizio, consulta Autorizzazioni di deployment. Se il account di servizio si trova in un progetto diverso dal pool di worker di Cloud Run, tu o il tuo amministratore dovete anche configurare un ruolo IAM per il service agent di Cloud Run e configurare una policy dell'organizzazione. Per maggiori dettagli, consulta Utilizzare i service account in altri progetti.
Fai clic per visualizzare i ruoli richiesti per l'identità del servizio
Per consentire all'identità del servizio di accedere alle Google Cloud API da Cloud Run, tu o il tuo amministratore dovete concedere all'identità del servizio le autorizzazioni o i ruoli richiesti dalle operazioni che vuoi eseguire. Per accedere a librerie client Cloud specifiche, consulta la Google Cloud documentazione del Google Cloud servizio.
Se un pool di worker di Cloud Run non accede ad altri Google Cloud servizi, non devi concedere all'identità del servizio alcun ruolo o autorizzazione e puoi utilizzare il service account predefinito assegnato al progetto.
Ricevi consigli per creare service account dedicati
Quando crei un nuovo account di servizio dalla Google Cloud console, il passaggio facoltativo "Concedi a questo account di servizio l'accesso al progetto" riguarda qualsiasi accesso aggiuntivo richiesto. Ad esempio, un servizio Cloud Run potrebbe richiamare un altro servizio Cloud Run privato, oppure accedere a un database Cloud SQL, entrambi richiedono ruoli IAM specifici. Per ulteriori informazioni, consulta la documentazione sulla gestione dell'accesso.
Il motore per suggerimenti fornisce automaticamente anche suggerimenti per creare service account dedicati con il set minimo di autorizzazioni richieste.
Configura l'identità del servizio
Se non hai ancora creato un account di servizio, puoi crearne uno gestito dall'utente in IAM o in Cloud Run.
Per configurare un'identità del servizio, utilizza la Google Cloud console, gcloud CLI, YAML o Terraform:
Console
Nella Google Cloud console, vai a Cloud Run:
Seleziona Pool di worker dal menu e fai clic su Esegui il deployment del container per configurare un nuovo pool di worker. Se stai configurando un pool di worker esistente, fai clic sul pool di worker, quindi su Modifica ed esegui il deployment di una nuova revisione.
Se stai configurando un nuovo pool di worker, compila la pagina iniziale del pool di worker, quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione dei pool di worker.
Fai clic sulla scheda Sicurezza.
- Fai clic su Crea un nuovo service account o fai clic sul menu a discesa Service account e seleziona un account di servizio esistente, se applicabile.
Fai clic su Crea o Esegui il deployment.
gcloud
Se non hai ancora creato un account di servizio, creane uno gestito dall'utente account di servizio in IAM.
Puoi aggiornare un pool di worker esistente per configurare un account di servizio utilizzando il seguente comando:
gcloud run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT
Sostituisci quanto segue:
- WORKER_POOL: il nome del tuo servizio.
- SERVICE_ACCOUNT: il account di servizio associato al
account di servizio associato alla nuova identità. Questo valore è l'indirizzo email
del account di servizio, nel formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, dove SERVICE_ACCOUNT_NAME è il nome del service account e PROJECT_ID è l'ID del progetto. Puoi anche impostare un account di servizio durante il deployment utilizzando il comando:
gcloud run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT
Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest.- SERVICE_ACCOUNT: il account di servizio associato alla
nuova identità. Questo valore è l'indirizzo email del account di servizio, nel
formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
YAML
Se stai creando un nuovo pool di worker, salta questo passaggio. Se stai aggiornando un pool di worker esistente, scarica la relativa configurazione YAML:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
L'esempio seguente contiene la configurazione YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Sostituisci quanto segue:
- WORKER_POOL: il nome del tuo pool di worker di Cloud Run.
- SERVICE_ACCOUNT: il account di servizio associato a
la nuova identità. Questo valore è l'indirizzo email del service
account, ad esempio,
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
Crea o aggiorna il pool di worker utilizzando il seguente comando:
gcloud run worker-pools replace worker-pool.yaml
Per impostazione predefinita, il comando
gcloud run worker-pools replaceutilizza il fileworker-pool.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la Google Cloud regione, ad esempio
europe-west1. IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest.- SERVICE_ACCOUNT: il account di servizio associato al
account di servizio associato alla nuova identità. Questo valore è l'indirizzo email
del account di servizio, nel formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, dove SERVICE_ACCOUNT_NAME è il nome del service account e PROJECT_ID è l'ID del progetto.
Utilizza i service account in altri progetti
Se configuri un account di servizio da unprogetto Google Cloud diverso dalla risorsa Cloud Run, procedi nel seguente modo:
Tu o il tuo amministratore dovete concedere il ruolo Utente account di servizio (
roles/iam.serviceAccountUser) per il service account che utilizzi come identità del servizio.Console
Vai alla pagina Service account della Google Cloud console:
Seleziona l'indirizzo email del account di servizio che utilizzi come identità del servizio.
Fai clic sulla scheda Entità con accesso.
Fai clic sul pulsante Concedi accesso.
Inserisci l'indirizzo email dell'account del deployer che corrisponde all'entità a cui stai concedendo il ruolo Amministratore o Sviluppatore.
Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Service account > Utente account di servizio.
Fai clic su Salva.
gcloud
Utilizza 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 quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizio a cui stai collegando la risorsa Cloud Run.SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto in cui si trova il account di servizio.PRINCIPAL: l'account del deployer per cui stai aggiungendo l' associazione, utilizzando il formato
user|group|serviceAccount:emailodomain:domain, ad esempio:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
Tu o il tuo amministratore dovete concedere al service agent della risorsa Cloud Run il ruolo Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator) per il service account che utilizzi come identità del servizio. Il service agent segue il formato diservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.Console
Vai alla pagina Service account della Google Cloud console:
Seleziona l'indirizzo email del account di servizio che utilizzi come identità del servizio.
Fai clic sulla scheda Autorizzazioni.
Fai clic sul pulsante Concedi accesso.
Inserisci l'indirizzo email del service agent. Ad esempio:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Service account > Creatore token account di servizio.
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 quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizio a cui stai collegando la risorsa Cloud Run.SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto in cui si trova il account di servizio.CLOUD_RUN_RESOURCE_PROJECT_NUMBER: il numero del progetto in cui si trova Cloud Run.
Il comando stampa la policy di autorizzazione aggiornata per il service account gestito dall'utente.
Il progetto contenente questo account di servizio richiede che la policy dell'organizzazione
iam.disableCrossProjectServiceAccountUsagesia impostata su false o non applicata a livello di cartella o ereditata dalle impostazioni a livello di progetto. Per impostazione predefinita, è impostata sutrue.Console
Vai alla pagina Policy dell'organizzazione nella Google Cloud console:
Nel selettore di progetti, seleziona l'organizzazione e il progetto per cui vuoi disabilitare l'utilizzo account di servizio tra i progetti.
Seleziona la policy Disabilita l'utilizzo account di servizio tra i progetti.
Fai clic su Gestisci policy.
In Origine policy, seleziona Esegui override della policy della risorsa padre.
Fai clic su Aggiungi una regola.
In Applicazione forzata, seleziona Off.
Per applicare la policy, fai clic su Imposta policy.
gcloud
Nel progetto che contiene il account di servizio, assicurati che il vincolo della policy dell'organizzazione
iam.disableCrossProjectServiceAccountUsagenon sia applicato in modo forzato. Questo vincolo viene applicato in modo forzato per impostazione predefinita.Per disabilitare questo vincolo della policy 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 il account di servizio.
Puoi applicare le appartenenze ai ruoli direttamente alla risorsa del account di servizio o ereditare dai livelli superiori nella gerarchia delle risorse.
Visualizza la configurazione del account di servizio per il pool di worker
Nella Google Cloud console, vai a Cloud Run:
Fai clic su Pool di worker per visualizzare l'elenco dei pool di worker di cui è stato eseguito il deployment.
Fai clic sul pool di worker che vuoi esaminare per visualizzare il riquadro dei dettagli.
Fai clic sulla scheda Sicurezza per visualizzare le informazioni sulla sicurezza del pool di worker, inclusi i service account.
Passaggi successivi
- Per ulteriori informazioni sui service account, consulta le guide Service account IAM e Service account gestiti dall'utente.
- Se il tuo servizio, job, pool di worker o istanza Cloud Run accede alle API di Google o ai Google Cloud servizi, devi configurare il tuo account di servizio come identità del servizio. Scopri di più.