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à di 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 di deployer deve avere accesso alla risorsa identità di servizio. Alcune operazioni, come la creazione o l'aggiornamento di un servizio o di una revisione, richiedono che l'account di deployment disponga delle autorizzazioni per la risorsa identità del servizio.
  • Identità del servizio come principale: per accedere alle API Google Cloud da un servizio o una revisione Cloud Run, devi concedere all'identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni che vuoi che il servizio o la revisione esegua.

La sezione successiva illustra i ruoli richiesti per concedere all'account di deployment l'accesso alla risorsa di identità di servizio e per concedere l'accesso per il principale dell'account di servizio.

Ruoli obbligatori

Tu o il tuo amministratore dovete concedere i ruoli e le autorizzazioni IAM per l'account di deployment e l'identità di servizio.

Fai clic per visualizzare i ruoli richiesti per l'account di deployment

Per ottenere le autorizzazioni necessarie per associare un account di servizio come identità di servizio al servizio o alla revisione, tu o il tuo amministratore deve assegnare al tuo account di deployer il ruolo Utente account di servizio (roles/iam.serviceAccountUser) nell'account di servizio utilizzato come identità di servizio.

Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.actAs , necessaria per associare un account di servizio al servizio o alla 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 di deployment questo ruolo nell'identità del servizio, consulta 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. Per maggiori dettagli, consulta la sezione Utilizzare gli account di servizio in altri progetti.

Fai clic per visualizzare i ruoli richiesti per l'identità di 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.

Ricevere consigli per creare account di servizio dedicati

Quando crei un nuovo account di servizio dalla console Google Cloud, il passaggio facoltativo "Concede all'account di servizio l'accesso al progetto" è per qualsiasi accesso aggiuntivo richiesto. Ad esempio, un servizio Cloud Run potrebbe invocare un altro servizio Cloud Run privato o accedere a un database Cloud SQL, entrambi i quali richiedono ruoli IAM specifici. Consulta la documentazione su gestione dell'accesso per ulteriori informazioni.

Il servizio di consigli fornisce anche automaticamente consigli per creare account di servizio dedicati con l'insieme minimo di autorizzazioni richieste.

Configura identità servizio

Se non hai ancora creato un account di servizio, puoi creare un account di servizio gestito dall'utente in IAM o in Cloud Run.

Per configurare l'identità del servizio, utilizza la console Google Cloud, gcloud CLI, l'API (YAML) quando crei 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 Esegui il deployment del contenitore e seleziona Servizio per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale delle impostazioni, poi fai clic su Container, volumi, networking, sicurezza per espandere 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 account di servizio gestito dall'utente in 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 servizio.
  • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità: questo valore è l'indirizzo email dell'account di servizio, 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 di Google.
  • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità: questo valore è l'indirizzo email dell'account di servizio, ad esempio example@myservice.iam.gserviceaccount.com.

YAML

Se non hai ancora creato un account di servizio, puoi creare un account di servizio gestito dall'utente in 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 alla nuova identità: questo valore è l'indirizzo email dell'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     = "id-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  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 il tuo amministratore dovete concedere il ruolo Utente account di servizio (roles/iam.serviceAccountUser) all'account di servizio che utilizzi come identità del 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 sul pulsante Concedi 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 il ruolo Account di servizio > Utente account di servizio.

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

    • 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 il tuo amministratore dovete concedere all'agente di servizio della risorsa Cloud Run il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) nell'account di servizio che utilizzi come identità di servizio. L'agente di servizio segue il formato di 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 si trova l'account 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 che il valore org-policyiam.disableCrossProjectServiceAccountUsage sia impostato su false o non applicato a livello di cartella o ereditato dalle impostazioni a livello di progetto. L'opzione predefinita è true.

    Console

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

      Vai a Criteri dell'organizzazione

    2. Nel selettore dei progetti, seleziona l'organizzazione e il progetto per cui vuoi disattivare l'utilizzo dei service account tra i progetti.

    3. Seleziona il criterio Disattiva l'utilizzo dei service account tra i 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 forzata, seleziona Off.

    8. Per applicare il criterio, fai clic su Imposta criterio.

    gcloud

    Nel progetto che contiene l'account di servizio, assicurati che il iam.disableCrossProjectServiceAccountUsage vincolo del criterio dell'organizzazione non sia applicato. 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