Configurare i secret per i pool di worker

Il tuo pool di worker potrebbe richiedere chiavi API, password, certificati o altre informazioni sensibili per le sue dipendenze. Per Cloud Run, Google consiglia di archiviare queste informazioni sensibili in un secret creato in Secret Manager.

Rendi disponibile un secret ai tuoi contenitori in uno dei seguenti modi:

  • Quando monti ogni secret come volume, Cloud Run lo rende disponibile per il container come file. Quando legge un volume, Cloud Run recupera sempre il valore del secret da Secret Manager per utilizzare il valore con la versione più recente. Questo metodo funziona bene anche con la rotazione dei secret.
  • Passa un secret utilizzando le variabili di ambiente. Le variabili di ambiente vengono risolte all'avvio dell'istanza, quindi se utilizzi questo metodo, Google consiglia di bloccare il secret su una versione specifica anziché utilizzare latest come versione.

Per saperne di più, consulta le best practice di Secret Manager.

Come vengono controllati i secret durante il deployment e l'esecuzione

Durante il deployment del pool di worker, Cloud Run controlla tutti i secret che utilizzi. Il controllo garantisce che il account di servizio che esegue il container abbia l'autorizzazione per accedere a questi secret.

Durante l'esecuzione, all'avvio delle istanze:

  • Se il secret è una variabile di ambiente, Cloud Run recupera il valore del secret prima di avviare l'istanza. Se il processo di recupero del secret non va a buon fine, l'istanza non viene avviata.
  • Se monti il secret come volume, Cloud Run non esegue controlli durante l'avvio dell'istanza. Tuttavia, durante l'esecuzione, se un secret è inaccessibile, i tentativi di lettura del volume montato non vanno a buon fine.

Proprietà del volume

La proprietà di un volume secret Cloud Run varia in base all'ambiente di esecuzione e al tipo di deployment.

Quando monti un volume secret utilizzando l'ambiente di esecuzione di seconda generazione, che è sempre il caso del pool di worker, la radice è proprietaria del volume.

Prima di iniziare

  1. Enable the Secret Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Utilizza un secret esistente o creane uno in Secret Manager, come descritto in Creare un secret.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i secret, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per consentire a Cloud Run di accedere al secret, l'identità del servizio deve disporre del seguente ruolo:

Per istruzioni su come aggiungere l'entità dell'identità del servizio al ruolo Funzione di accesso di Secret Manager, vedi Gestire l'accesso ai secret.

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo pool di worker Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Rendere accessibile un secret a Cloud Run

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.

Puoi rendere accessibile un secret al tuo pool di worker utilizzando la console Google Cloud o Google Cloud CLI quando esegui il deployment di un nuovo pool di worker o aggiorni un pool di worker esistente e quando esegui il deployment di una revisione. Fai clic sulla scheda che preferisci:

Console

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

    Vai a Cloud Run

  2. Seleziona Worker pool dal menu e fai clic su Esegui il deployment del container per configurare un nuovo worker pool. Compila la pagina delle impostazioni iniziali del pool di worker, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione.

  3. Se stai configurando un pool di worker esistente, fai clic sul pool di worker e poi su Modifica e implementa nuova revisione.

  4. Segui i passaggi per montare il secret come volume o esporlo come variabile di ambiente.

    • Per esporre il secret come variabile di ambiente:

      1. Fai clic sulla scheda Container.
      2. Nella scheda Variabili e secret, fai clic su Fai riferimento a un secret.
      3. Nel campo Nome 1, inserisci il nome della variabile di ambiente.
      4. Dall'elenco Secret, seleziona il segreto che vuoi utilizzare.
      5. Nell'elenco Versione 1, seleziona la versione del secret a cui fare riferimento.
      6. Fai clic su Fine.
      7. Fai clic su Crea o Esegui il deployment.
    • Per montare il secret come volume:

      1. Fai clic sulla scheda Volumi e seleziona Aggiungi volume.
      2. Nell'elenco Tipo di volume, seleziona Secret.
      3. Nel campo Nome volume, inserisci un nome o accetta il nome predefinito.
      4. Dall'elenco Secret, seleziona il segreto che vuoi utilizzare.
      5. Nel campo Percorso 1, inserisci il nome del file da montare.
      6. Nell'elenco Versione 1, seleziona la versione del secret a cui fare riferimento. Per impostazione predefinita, è selezionata l'ultima versione. Se vuoi, puoi selezionare una versione specifica.
      7. Fai clic su Fine.
      8. Vai alla scheda Container per montare il secret nel container.
      9. Nella scheda Montaggi volumi, fai clic su Monta volume.
      10. Nell'elenco Nome 1, seleziona il nome del volume.
      11. Nel campo Percorso di montaggio 1, inserisci il percorso di montaggio per questo secret. Questa è la directory in cui vengono inserite tutte le versioni del secret.
      12. Fai clic su Fine.
      13. Fai clic su Crea o Esegui il deployment.

gcloud

  • Per esporre il secret come variabile di ambiente quando esegui il deployment di un pool di worker, esegui questo comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION

    Sostituisci quanto segue:

    • WORKER_POOL: il nome del pool di worker.
    • IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • ENV_VAR_NAME: il nome della variabile di ambiente che vuoi utilizzare con il secret.
    • SECRET_NAME: il nome del secret nello stesso progetto, ad esempio mysecret.
    • VERSION: la versione secret. Utilizza latest per la versione più recente o un numero, ad esempio 2.
  • Per aggiornare più secret contemporaneamente, separa le opzioni di configurazione per ogni secret con una virgola. Il seguente comando aggiorna un secret montato come volume e un altro secret esposto come variabile di ambiente. Per aggiornare i secret esistenti, esegui questo comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
  • Per cancellare i secret esistenti e rendere accessibile un nuovo secret al pool di worker, utilizza il flag --set-secrets:

    gcloud beta run worker-pools update WORKER_POOL \
    --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"

Fai riferimento ai secret di altri progetti

Per fare riferimento a un secret di un altro progetto, verifica che l'account del pool di worker del tuo progetto abbia accesso al secret.

Console

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

    Vai a Cloud Run

  2. Seleziona Worker pool dal menu e fai clic su Esegui il deployment del container per configurare un nuovo worker pool. Compila la pagina delle impostazioni iniziali del pool di worker, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione.

  3. Se stai configurando un pool di worker esistente, fai clic sul pool di worker e poi su Modifica e implementa nuova revisione.

  4. Segui i passaggi per montare il secret come volume o esporlo come variabile di ambiente.

    • Per esporre il secret come variabile di ambiente:

      1. Fai clic sulla scheda Container.
      2. Nella scheda Variabili e secret, fai clic su Fai riferimento a un secret.
      3. Nel campo Nome 1, inserisci il nome della variabile di ambiente.
      4. Nell'elenco Secret, fai clic su Inserisci il secret manualmente.
      5. Inserisci l'ID risorsa del secret nel seguente formato:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Sostituisci quanto segue:

        • PROJECT_NUMBER con il numero del tuo progetto Google Cloud . Per istruzioni dettagliate su come trovare il numero del progetto, vedi Creazione e gestione dei progetti.

        • SECRET_NAME: il nome del secret in Secret Manager.

      6. Nell'elenco Versione 1, seleziona la versione del secret a cui fare riferimento.

      7. Fai clic su Fine.

      8. Fai clic su Crea o Esegui il deployment.

    • Per montare il secret come volume:

      1. Fai clic sulla scheda Volumi e seleziona Aggiungi volume.
      2. Nell'elenco Tipo di volume, seleziona Secret.
      3. Nel campo Nome volume, inserisci un nome o accetta il nome predefinito.
      4. Nell'elenco Secret, fai clic su Inserisci il secret manualmente.
      5. Inserisci l'ID risorsa del secret nel seguente formato:

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Sostituisci quanto segue:

        • PROJECT_NUMBER con il numero del tuo progetto Google Cloud . Per istruzioni dettagliate su come trovare il numero del progetto, vedi Creazione e gestione dei progetti.

        • SECRET_NAME: il nome del secret in Secret Manager.

      6. Nel campo Percorso 1, inserisci il nome del file da montare.

      7. Nell'elenco Versione 1, seleziona la versione del secret a cui fare riferimento. Per impostazione predefinita, è selezionata l'ultima versione. Se vuoi, puoi selezionare una versione specifica.

      8. Fai clic su Fine.

      9. Vai alla scheda Container per montare il secret nel container.

      10. Nella scheda Montaggi volumi, fai clic su Monta volume.

      11. Nell'elenco Nome 1, seleziona il nome del volume.

      12. Nel campo Percorso di montaggio 1, inserisci il percorso di montaggio per questo secret. Questa è la directory in cui vengono inserite tutte le versioni del secret.

      13. Fai clic su Fine.

      14. Fai clic su Crea o Esegui il deployment.

gcloud

Per fare riferimento a un secret come variabile di ambiente, esegui questo comando:

gcloud beta run worker-pools deploy WORKER_POOL \
--image IMAGE_URL \
--update-secrets=ENV_VAR_NAME=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION

Sostituisci quanto segue:

  • WORKER_POOL: il nome del pool di worker.
  • IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • PROJECT_NUMBER con il numero di progetto del progetto in cui è stato creato il secret.
  • SECRET_NAME: il nome del secret, ad esempio mysecret.
  • VERSION con la versione del secret. Utilizza latest per la versione più recente o un numero, ad esempio 2.

Visualizza le impostazioni dei secret

Per visualizzare le impostazioni dei secret correnti per il pool di worker Cloud Run:

Console

  1. Nella console Google Cloud , vai alla pagina dei pool di worker Cloud Run:

    Vai ai pool di worker Cloud Run

  2. Fai clic sul pool di worker che ti interessa per aprire la pagina Dettagli pool di worker.

  3. Fai clic su Modifica ed esegui il deployment di una nuova revisione.

  4. Individua l'impostazione dei secret nei dettagli di configurazione.

gcloud

  1. Utilizza questo comando:

    gcloud beta run worker-pools describe WORKER_POOL
  2. Individua l'impostazione dei secret nella configurazione restituita.

Rimuovi i secret da un worker pool

Puoi rimuovere i secret da un pool di worker utilizzando la console Google Cloud o gcloud CLI:

Console

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

    Vai a Cloud Run

  2. Seleziona il pool di worker dall'elenco e fai clic su Modifica e esegui il deployment della nuova revisione.

  3. Fai clic sulla scheda Container.

  4. Per eliminare i secret montati come volume, seleziona la scheda Montaggi volume, passa il puntatore sopra il secret che vuoi rimuovere, quindi fai clic su Elimina.

  5. Per eliminare i secret esposti come variabile di ambiente, seleziona la scheda Variabili e secret, passa il puntatore sopra il secret che vuoi rimuovere, quindi fai clic su Elimina.

  6. Fai clic su Esegui il deployment.

gcloud

Puoi rimuovere tutti i secret da un pool di worker o specificare uno o più secret da rimuovere:

  • Per rimuovere tutti i secret, esegui questo comando:
  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --clear-secrets

Sostituisci quanto segue:

  • WORKER_POOL: il nome del pool di worker.
  • IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

  • Per specificare un elenco di secret da rimuovere, utilizza il flag --remove-secrets. Il seguente comando rimuove un secret montato come volume e un altro secret esposto come variabile di ambiente:

  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH

Sostituisci quanto segue:

  • WORKER_POOL: il nome del pool di worker.
  • IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • ENV_VAR_NAME: il nome della variabile di ambiente.
  • SECRET_FILE_PATH: il percorso completo del secret. Ad esempio, /mnt/secrets/primary/latest, dove /mnt/secrets/primary/ è il percorso di montaggio e latest è il percorso del secret. Puoi anche specificare i percorsi di montaggio e dei secret separatamente:

    --set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION

Utilizzare i secret nel codice

Per esempi di accesso ai secret nel codice come variabili di ambiente, consulta il tutorial sull'autenticazione degli utenti finali, in particolare la sezione Gestire la configurazione sensibile con Secret Manager.

Percorsi non consentiti e limitazioni

Si applicano le seguenti limitazioni al montaggio dei secret:

  • Cloud Run non consente di montare secret in /dev, /proc e /sys o nelle relative sottodirectory.
  • Cloud Run non consente di montare più secret nello stesso percorso perché non è possibile montare due volumi nella stessa posizione.

Eseguire l'override di una directory

Se il secret viene montato come volume in Cloud Run e l'ultima directory nel percorso di montaggio del volume esiste già, tutti i file o le cartelle nella directory esistente diventano inaccessibili.

Ad esempio, se un secret denominato my-secret viene montato sul percorso /etc/app_data, tutti i contenuti all'interno della directory app_data verranno sovrascritti e l'unico file visibile è /etc/app_data/my-secret.

Per evitare di sovrascrivere i file in una directory esistente, crea una nuova directory per il montaggio del secret, ad esempio /etc/app_data/secrets, in modo che il percorso di montaggio del secret sia /etc/app_data/secrets/my-secret.