Un servizio o una revisione Cloud Run ha un'identità di servizio che viene utilizzata come account autenticato per l'accesso alle API Google Cloud dal tuo Container 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à 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 servizio o di una revisione, dispongono delle autorizzazioni per la risorsa di identità del servizio.
- Identità del servizio come entità: per accedere alle API Google Cloud. da un servizio o una revisione Cloud Run, devi concedere identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni eseguire il servizio o la revisione.
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 servizio o sulla revisione, 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
o una revisione. Potresti anche riuscire a ottenere questa autorizzazione
configurando ruoli personalizzati
o l'utilizzo di altri ruoli predefiniti.
Per istruzioni su come concedere all'account deployer questo ruolo sull'identità del servizio, vedi autorizzazioni di deployment. Se l'account di servizio si trova in un progetto diverso da Servizio o revisione 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 informazioni.
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 servizio o una revisione 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. Consulta la documentazione su gestione dell'accesso 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
Se non hai ancora creato un account di servizio, puoi creare un e l'account di servizio gestito dall'utente IAM o in in Cloud Run.
Per configurare l'identità del servizio, utilizza la console Google Cloud gcloud CLI, l'API (YAML) quando crea un nuovo servizio o esegui il deployment di una nuova revisione oppure Terraform:
Console
Nella console Google Cloud, vai a Cloud Run:
Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.
Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni come preferisci, poi fai clic su Container, volumi, networking, sicurezza per espandere pagina di configurazione del servizio.
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 Esegui il deployment.
gcloud
Se non hai ancora creato un account di servizio, puoi creare un e l'account di servizio gestito dall'utente IAM.
Puoi aggiornare un servizio esistente per avere un nuovo account di servizio utilizzando il seguente comando:
gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
Sostituisci:
- SERVICE 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 anche impostare un account di servizio durante il deployment utilizzando il comando:
gcloud run deploy --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
example@myservice.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 servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'attributo
serviceAccountName:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Sostituisci
- SERVICE con il nome del tuo servizio 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
.
Crea o aggiorna il servizio utilizzando il comando seguente:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Per creare un account di servizio, aggiungi la seguente risorsa al file main.tf
esistente:
Crea o aggiorna un servizio Cloud Run e includi il tuo account di servizio:
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ù.