Questa pagina mostra come configurare e visualizzare l'identità del servizio che controlla l'accesso dai pool di worker Cloud Run alle API Google Cloud .
Un pool di worker Cloud Run ha un'identità di servizio utilizzata come account autenticato per accedere alle API Google Cloud dal container dell'istanza 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 che un'entità.
- Identità di servizio come risorsa: per collegare un account di servizio come identità di servizio, l'account del responsabile del deployment deve avere accesso alla risorsa identità di servizio. Alcune operazioni, come la creazione o l'aggiornamento di un pool di worker, richiedono che l'account del deployment disponga delle autorizzazioni per la risorsa dell'identità del servizio.
- Identità del servizio come principal: per accedere alle API Google Cloud da un pool di worker 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 di deployment l'accesso alla risorsa di identità del servizio e per concedere i ruoli o le autorizzazioni di cui ha bisogno iaccount di serviziont.
Ruoli obbligatori
Tu o il tuo amministratore dovete concedere ruoli e autorizzazioni IAM per l'account di deployment 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
identità del servizio nel pool di worker, tu o il tuo amministratore
dovete concedere al tuo account di deployment il ruolo
Utente service account (roles/iam.serviceAccountUser
) sul 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 ottenere questa autorizzazione configurando ruoli personalizzati o utilizzando altri ruoli predefiniti.
Per istruzioni su come concedere questo ruolo all'account di deployment nell'identità del servizio, vedi Autorizzazioni di deployment. Se il account di servizio si trova in un progetto diverso dal pool di worker 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. 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 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. Google Cloud Per accedere a librerie client Cloud specifiche, consulta la documentazione del servizio Google Cloud Google Cloud .
Se un pool di worker Cloud Run non accede ad altri Google Cloud servizi, non devi concedere ruoli o autorizzazioni all'identità di servizio e puoi utilizzare il service account predefinito assegnato al progetto.
Ricevere consigli per creare service account dedicati
Quando crei un nuovo account di servizio dalla console Google Cloud , 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 o potrebbe accedere a un database Cloud SQL, entrambi richiedono ruoli IAM specifici. Per ulteriori informazioni, consulta la documentazione sulla gestione dell'accesso.
Il servizio Recommender fornisce anche automaticamente consigli 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à di servizio, utilizza la consoleGoogle Cloud o gcloud CLI:
Console
Nella console Google Cloud , 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, poi su Modifica e implementa nuova revisione.
Se stai configurando un nuovo pool di worker, compila la pagina iniziale del pool di worker, poi fai clic su Container, volumi, 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 oppure 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 in IAM.
Puoi aggiornare un pool worker esistente per configurare un account di servizio utilizzando questo comando:
gcloud beta 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
dell'account di servizio, nel formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
, dove SERVICE_ACCOUNT_NAME è il nome dell'account di servizio e PROJECT_ID è l'ID progetto. Puoi anche impostare un account di servizio durante la distribuzione utilizzando il comando:
gcloud beta 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 del container che
contiene il pool di worker, ad esempio
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SERVICE_ACCOUNT: il account di servizio associato alla
nuova identità: questo valore è l'indirizzo email delaccount di serviziot, nel
formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.
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"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la regione Google Cloud , ad esempio
europe-west1
. - IMAGE_URL: un riferimento all'immagine del container che
contiene il pool di worker, ad esempio
us-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
per il 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 progetto.
Utilizzo degli account di servizio in altri progetti
Se configuri un account di servizio di un Google Cloud progetto diverso dalla risorsa Cloud Run, procedi nel seguente modo:
Tu o il tuo amministratore dovete concedere il ruolo Utente service account (
roles/iam.serviceAccountUser
) nel account di servizio che utilizzi come identità del servizio.Console
Vai alla pagina Service Accounts della console Google Cloud :
Seleziona l'indirizzo email del account di servizio che utilizzi come identità del servizio.
Fai clic sulla scheda Autorizzazioni.
Fai clic sul pulsante
Concedi l'accesso.Inserisci l'indirizzo email dell'account di deployment che corrisponde all'entità a cui stai concedendo il ruolo Amministratore o Sviluppatore.
Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Account di servizio > 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 RunSERVICE_ACCOUNT_PROJECT_ID
: l'ID progetto in cui si trova ilaccount di serviziotPRINCIPAL: l'account di deployment per cui stai aggiungendo il binding, utilizzando il formato
user|group|serviceAccount:email
odomain:domain
, ad esempio:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
Tu o il tuo amministratore dovete concedere all'agente di servizio della risorsa Cloud Run il ruolo Creatore token service account (
roles/iam.serviceAccountTokenCreator
) per il account di servizio che utilizzi come identità di servizio. L'agente di servizio segue il formatoservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.Console
Vai alla pagina Service Accounts della console Google Cloud :
Seleziona l'indirizzo email del account di servizio che utilizzi come identità del servizio.
Fai clic sulla scheda Autorizzazioni.
Fai clic sul pulsante
Concedi l'accesso.Inserisci l'indirizzo email dell'agente di servizio. Ad esempio
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Account di servizio > 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 RunSERVICE_ACCOUNT_PROJECT_ID
: l'ID progetto in cui si trova ilaccount di serviziotCLOUD_RUN_RESOURCE_PROJECT_NUMBER
: il numero di progetto in cui si trova Cloud Run
Il comando stampa il criterio di autorizzazione aggiornato per l'account di servizio gestito dall'utente.
Il progetto contenente questo account di servizio richiede che org-policy
iam.disableCrossProjectServiceAccountUsage
sia impostato su false o non applicato a livello di cartella o ereditato dalle impostazioni a livello di progetto. Per impostazione predefinita, questo valore è impostato sutrue
.Console
Vai alla pagina Policy dell'organizzazione nella console Google Cloud :
Nel selettore di progetti, seleziona l'organizzazione e il progetto per cui vuoi disattivare l'utilizzo dei account di servizio tra i progetti.
Seleziona il criterio Disabilita l'utilizzo account di servizio tra i progetti.
Fai clic su Gestisci policy.
In Origine criterio, seleziona Esegui override della policy dell'unità organizzativa principale.
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 del criterio dell'organizzazione
iam.disableCrossProjectServiceAccountUsage
non sia applicato. 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 il account di servizio.
Puoi applicare le appartenenze ai ruoli direttamente alla risorsa account di servizio o ereditarle dai livelli superiori della gerarchia delle risorse.
Visualizza la configurazione del account di servizio per il pool di worker
Nella console Google Cloud , 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 worker pool che vuoi esaminare per visualizzare il relativo riquadro dei dettagli.
Fai clic sulla scheda Sicurezza per visualizzare le informazioni sulla sicurezza del pool di worker, inclusi gli account di servizio.
Passaggi successivi
- Per ulteriori informazioni sui service account, consulta le guide Service account IAM e Service account gestito dall'utente.
- Se il tuo servizio, job o pool di worker Cloud Run accede alle API Google o ai serviziGoogle Cloud , devi configurare il tuo account di servizio come identità del servizio. Scopri di più.