Configura identità servizio

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

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

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

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

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

  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 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 forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • 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.

  1. 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
  2. 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.
  3. 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:

resource "google_service_account" "cloudrun_service_identity" {
  account_id = "my-service-account"
}

Crea o aggiorna un servizio Cloud Run e includi il tuo account di servizio:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloud-run-srv"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    service_account = google_service_account.cloudrun_service_identity.email
  }
}

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