Configura identità servizio

Un job 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 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 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 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. 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

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. Se stai configurando un nuovo job, fai clic sulla scheda Job e compila il la pagina iniziale delle impostazioni del job, se preferisci. Se stai configurando un'istanza job esistente, fai clic sul job e poi 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 applicabile.
  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 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 forma LOCATION-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.

  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 a la nuova identità: questo valore è l'indirizzo email per l'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 altro progetto Google Cloud rispetto alla risorsa Cloud Run, segui questi passaggi:

  1. 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

    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 stai utilizzando come servizio. e identità di base.

    3. Fai clic sulla scheda Autorizzazioni.

    4. Fai clic su Concedi l'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 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 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 stai utilizzando come servizio. e identità di base.

    3. Fai clic sulla scheda Autorizzazioni.

    4. Fai clic su Concedi l'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

    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 .

  3. 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

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

      Vai a Criteri dell'organizzazione

    2. Dal selettore di progetti, scegli l'organizzazione e il progetto per per cui vuoi disabilitare l'utilizzo degli account di servizio tra progetti.

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

    4. Fai clic su Gestisci criterio.

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

    6. Fai clic su Aggiungi una regola.

    7. In Applicazione, 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 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