Configura l'identità del servizio per le istanze

Questa pagina mostra come configurare e visualizzare l'identità del servizio che controlla l'accesso alle Cloud de Confiance by S3NS API dalle istanze Cloud Run.

Un'istanza Cloud Run ha un'identità di servizio che viene utilizzata come account autenticato per accedere alle Cloud de Confiance by S3NS API dal tuo container dell'istanza Cloud Run. Per saperne di più sull'identità del servizio, consulta la guida Introduzione all'identità del servizio.

Come viene utilizzata l'identità del servizio

In Cloud Run, l'identità del servizio è un account di servizio che è sia una risorsa sia un'entità.

  • Identità del servizio come risorsa: per collegare un account di servizio come identità del servizio, l'account del deployer deve avere accesso alla risorsa dell'identità del servizio. Alcune operazioni, come la creazione o l'aggiornamento di un'istanza, richiedono che l'account del deployer disponga delle autorizzazioni per la risorsa dell'identità del servizio.
  • Identità del servizio come entità: per accedere alle Cloud de Confiance API da un'istanza Cloud Run, devi concedere all' identità del servizio i ruoli o le autorizzazioni richiesti per le operazioni che vuoi che la tua istanza esegua.

La sezione successiva illustra i ruoli richiesti per concedere all'account del deployer l'accesso alla risorsa dell'identità del servizio e per concedere i ruoli o le autorizzazioni di cui l'entità del account di servizio ha bisogno.

Ruoli obbligatori

Tu o il tuo amministratore dovete concedere ruoli e autorizzazioni IAM per l'account del deployer e l'identità del servizio.

Fai clic per visualizzare i ruoli richiesti per l'account del deployer

Per ottenere le autorizzazioni necessarie per collegare un account di servizio come identità del servizio all'istanza, tu o il tuo amministratore dovete concedere al tuo account del deployer il ruolo Utente account di servizio (roles/iam.serviceAccountUser) per il service account utilizzato come identità del servizio.

Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.actAs necessaria per collegare un account di servizio all' istanza. Potresti anche ottenere questa autorizzazione configurando ruoli personalizzati o utilizzando altri ruoli predefiniti.

Per istruzioni su come concedere questo ruolo all'account del deployer per l'identità del servizio, consulta Autorizzazioni di deployment. Se il account di servizio si trova in un progetto diverso dall' istanza Cloud Run, tu o il tuo amministratore dovete anche configurare un ruolo IAM per l' agente di servizio Cloud Run e configurare una policy dell'organizzazione. Per maggiori dettagli, consulta Utilizzare i service account in altri progetti.

Fai clic per visualizzare i ruoli richiesti per l'identità del servizio

Per consentire all'identità del servizio di accedere alle Cloud de Confiance API da Cloud Run, tu o il tuo amministratore dovete concedere all'identità del servizio le autorizzazioni o i ruoli richiesti dalle operazioni che volete eseguire. Per accedere a librerie client Cloud specifiche, consulta la Cloud de Confiance documentazione del Cloud de Confiance servizio.

Se un'istanza Cloud Run non accede ad altri Cloud de Confiance servizi, non devi concedere all'identità del servizio alcun ruolo o autorizzazione e puoi utilizzare il service account predefinito assegnato al progetto.

Ricevere consigli per creare service account dedicati

Quando crei un nuovo account di servizio dalla Cloud de Confiance console, il passaggio facoltativo "Concedi a questo account di servizio l'accesso al progetto" riguarda qualsiasi accesso aggiuntivo richiesto. Ad esempio, un servizio Cloud Run potrebbe richiamare un altro servizio Cloud Run privato, oppure accedere a un database Cloud SQL, entrambi richiedono ruoli IAM specifici. Per ulteriori informazioni, consulta la documentazione sulla gestione dell'accesso.

Il motore per suggerimenti fornisce automaticamente anche consigli per creare service account dedicati con il set minimo di autorizzazioni richieste.

Configurare l'identità del servizio

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

Per configurare un'identità del servizio, utilizza gcloud CLI o YAML:

gcloud

Se non hai ancora creato un account di servizio, creane uno gestito dall'utente account di servizio in IAM.

Puoi aggiornare un'istanza esistente per configurare un account di servizio utilizzando il seguente comando:

gcloud beta run instances update INSTANCE --service-account SERVICE_ACCOUNT

Sostituisci quanto segue:

  • INSTANCE: il nome dell'istanza.
  • SERVICE_ACCOUNT: il account di servizio associato alla nuova identità. Questo valore è l'indirizzo email del account di servizio, nel formato SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com, dove SERVICE_ACCOUNT_NAME è il nome del service account e PROJECT_ID è l'ID del progetto. Puoi anche impostare un account di servizio durante il deployment utilizzando il comando:
gcloud beta run instances deploy INSTANCE --image IMAGE_URL --service-account SERVICE_ACCOUNT

Sostituisci quanto segue:

  • INSTANCE: il nome dell'istanza.
  • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest..
  • SERVICE_ACCOUNT: il account di servizio associato alla nuova identità. Questo valore è l'indirizzo email del account di servizio, nel formato SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.

YAML

  1. Se stai creando una nuova istanza, salta questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. L'esempio seguente contiene la configurazione YAML:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      serviceAccountName: SERVICE_ACCOUNT

    Sostituisci quanto segue:

    • INSTANCE: il nome dell'istanza Cloud Run.
    • SERVICE_ACCOUNT: il account di servizio associato a la nuova identità. Questo valore è l'indirizzo email del service account, ad esempio, SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.
  3. Crea o aggiorna l'istanza utilizzando il seguente comando:

    gcloud beta run instances replace instance.yaml

Utilizzare i service account in altri progetti

Se configuri un account di servizio da un Cloud de Confiance progetto diverso dalla risorsa Cloud Run, procedi nel seguente modo:

  1. Tu o il tuo amministratore dovete concedere il ruolo Utente account di servizio (roles/iam.serviceAccountUser) per il service account che utilizzate come identità del servizio.

    Console

    1. Vai alla pagina Service account della Cloud de Confiance console:

      Vai ad Account di servizio

    2. Seleziona l'indirizzo email del account di servizio che stai utilizzando come identità del servizio.

    3. Fai clic sulla scheda Entità con accesso.

    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 Amministratore o Sviluppatore.

    6. Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Service account > 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.s3ns.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio a cui stai collegando la risorsa Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto in cui si trova il account di servizio.
    • PRINCIPAL: l'account del deployer per cui stai aggiungendo l' associazione, 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) per il service account che utilizzate come identità del servizio. L'agente di servizio segue il formato di service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    Console

    1. Vai alla pagina Service account della Cloud de Confiance console:

      Vai ad Account di servizio

    2. Seleziona l'indirizzo email del account di servizio che stai utilizzando come identità del servizio.

    3. Fai clic sulla scheda Autorizzazioni.

    4. Fai clic sul pulsante Concedi accesso.

    5. Inserisci l'indirizzo email del service agent. Ad esempio: service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    6. Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Service account > Creatore token account di servizio.

    7. Fai clic su Salva.

    gcloud

    Utilizza 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.s3ns.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio a cui stai collegando la risorsa Cloud Run.
    • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto in cui si trova il account di servizio.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: il numero del progetto in cui si trova Cloud Run.

    Il comando stampa la policy di autorizzazione aggiornata per il service account gestito dall'utente.

  3. Il progetto contenente questo account di servizio richiede che la policy dell'organizzazione iam.disableCrossProjectServiceAccountUsage sia impostata su false o non applicata a livello di cartella o ereditata dalle impostazioni a livello di progetto. Per impostazione predefinita, è impostata su true.

    Console

    1. Vai alla pagina Policy dell'organizzazione nella Cloud de Confiance console:

      Vai a Policy dell'organizzazione

    2. Nel selettore di progetti, seleziona l'organizzazione e il progetto per cui vuoi disabilitare l'utilizzo account di servizio tra i progetti.

    3. Seleziona la policy Disabilita l'utilizzo account di servizio tra i progetti.

    4. Fai clic su Gestisci policy.

    5. In Origine policy, seleziona Esegui override della policy della risorsa padre.

    6. Fai clic su Aggiungi una regola.

    7. In Applicazione forzata, seleziona Off.

    8. Per applicare la policy, fai clic su Imposta policy.

    gcloud

    Nel progetto che contiene il account di servizio, assicurati che il vincolo della policy dell'organizzazione iam.disableCrossProjectServiceAccountUsage non sia applicato in modo forzato. Questo vincolo viene applicato in modo forzato per impostazione predefinita.

    Per disabilitare questo vincolo della policy 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 il account di servizio.

Puoi applicare le appartenenze ai ruoli direttamente alla risorsa del account di servizio o ereditare dai livelli superiori nella gerarchia delle risorse.

Passaggi successivi