Un job Cloud Run ha un'identità di servizio che viene utilizzata come account autenticato per l'accesso alle API Google Cloud dal tuo il container di istanze 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à del servizio è un account di servizio sia una risorsa sia 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. Determinate operazioni, ad esempio creazione o aggiornamento di un job, richiedi che l'account deployer dispongono delle autorizzazioni per la risorsa di identità del servizio.
- Identità del servizio come entità: per accedere alle API Google Cloud. da un job Cloud Run, devi concedere identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni il tuo lavoro.
La prossima sezione illustra i ruoli richiesti per concedere l'account dell'utente che esegue il deployment l'accesso alla risorsa di identità del servizio e la concessione dell'accesso al servizio account principal.
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 deployer
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 riuscire a ottenere questa autorizzazione
configurando ruoli personalizzati
o l'utilizzo di altri ruoli predefiniti.
Per istruzioni su come concedere questo ruolo all'account deployer sull'identità del servizio, vedi autorizzazioni di deployment. Se l'account di servizio si trova in un progetto diverso da Job Cloud Run, tu o il tuo amministratore deve inoltre configurare un ruolo IAM per agente di servizio Cloud Run e configurare un criterio dell'organizzazione. Consulta: Usare 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 specifiche Librerie client di Cloud, consulta la documentazione di Google Cloud per dal servizio Google Cloud.
Se un job Cloud Run non accede agli altri servizi Google Cloud, non devi concedere identifica eventuali ruoli o autorizzazioni e puoi utilizzare il servizio predefinito assegnato al progetto.
Ricevi consigli per creare account di servizio dedicati
Quando crei un nuovo account di servizio dalla console Google Cloud, l'oggetto facoltativo Passaggio "Concedi a questo account di servizio l'accesso al progetto" è per qualsiasi altro è richiesto l'accesso rapido. 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. Fai riferimento alla documentazione su gestione degli accessi per ulteriori informazioni.
Anche il servizio motore per suggerimenti esegue automaticamente fornisce consigli per creare account di servizio dedicati con il minimo un insieme di autorizzazioni richiesto.
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
Nella console Google Cloud, vai alla pagina dei job Cloud Run:
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, seleziona il job, quindi fai clic su Modifica.
Fai clic su Contenitore, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Sicurezza.
- 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 applicabile.
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 tuo 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 formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
di Google. - SERVICE_ACCOUNT con l'account di servizio associato al
new Identity: questo valore è l'indirizzo email dell'account di servizio, per
ad esempio
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.
YAML
Se non hai ancora creato un account di servizio, puoi creare un e l'account di servizio gestito dall'utente IAM.
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
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 a
la nuova identità: questo valore è l'indirizzo email per l'account di servizio,
ad esempio
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.
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 altro progetto Google Cloud rispetto alla risorsa Cloud Run, segui questi passaggi:
Tu o l'amministratore dovete concedere ai Ruolo Utente account di servizio (
roles/iam.serviceAccountUser
) in e l'account di servizio che utilizzi come identità di servizio.Console
Vai alla pagina Account di servizio della console Google Cloud:
Seleziona l'indirizzo email dell'account di servizio che stai utilizzando come servizio. e identità di base.
Fai clic sulla scheda Autorizzazioni.
Fai clic su
Concedi l'accesso .Inserisci l'indirizzo email dell'account del deployer che corrisponde all'entità a cui stai concedendo il ruolo di amministratore o sviluppatore.
Nel menu a discesa Seleziona un ruolo, seleziona Account di servizio > Utente account di servizio.
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 del l'account di servizio che stai collegando a Cloud Run risorsa.SERVICE_ACCOUNT_PROJECT_ID
: l'ID progetto in cui in cui trovi l'account di servizio.PRINCIPAL con l'account deployer a cui stai aggiungendo associazione per, 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 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 formatoservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.Console
Vai alla pagina Account di servizio della console Google Cloud:
Seleziona l'indirizzo email dell'account di servizio che stai utilizzando come servizio. e identità di base.
Fai clic sulla scheda Autorizzazioni.
Fai clic su
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 Account di servizio > Creatore token account di servizio.
Fai clic su Salva.
gcloud
Usa 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 del l'account di servizio che stai collegando a Cloud Run risorsa.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 .
Il progetto contenente questo account di servizio richiede il criterio dell'organizzazione
iam.disableCrossProjectServiceAccountUsage
da impostare su falso o non applicato a livello di cartella o ereditato da livello di progetto impostazioni. L'opzione predefinita ètrue
.Console
Vai alla pagina Criteri dell'organizzazione nella console Google Cloud:
Dal selettore di progetti, scegli l'organizzazione e il progetto per per cui vuoi disabilitare l'utilizzo degli account di servizio tra progetti.
Seleziona il criterio per disabilitare l'utilizzo degli account di servizio tra progetti.
Fai clic su Gestisci criterio.
In Origine criteri, seleziona Sostituisci criterio della risorsa padre.
Fai clic su Aggiungi una regola.
In Applicazione, seleziona Off.
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 disabilitare questo vincolo del criterio 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 appartenenze ai ruoli direttamente alla risorsa dell'account di servizio eredita da livelli più alti gerarchia delle risorse.
Passaggi successivi
- Per ulteriori informazioni sugli account di servizio, consulta Account di servizio IAM e sugli account di servizio gestiti dall'utente.
- Se il tuo servizio o job Cloud Run accede alle API di Google o ai servizi Google Cloud, devi configurare il tuo account di servizio e l'identità del servizio. Scopri di più.