Configurare i secret per i job

Il tuo job potrebbe avere dipendenze che richiedono chiavi API, password, certificati o altre informazioni sensibili. Per Cloud Run, Google consiglia di archiviare questo tipo di informazioni sensibili in un secret creato in Secret Manager.

Puoi rendere disponibile un secret ai tuoi container in due modi:

  • Monta ogni secret come volume, in modo che sia disponibile per il container come file. La lettura di un volume recupera sempre il valore del secret da Secret Manager, quindi può essere utilizzato con la versione latest. 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.

Per saperne di più, consulta il documento Best practice di Secret Manager.

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

Durante la creazione del job, tutti i secret utilizzati, sia come variabile di ambiente sia montati come volume, vengono controllati per garantire che l'account di servizio utilizzato per eseguire il container abbia accesso. Se un controllo non va a buon fine, la creazione del job non riesce.

Durante l'esecuzione, all'avvio delle istanze:

  • Se il secret è una variabile di ambiente, il valore del secret viene recuperato prima dell'avvio dell'istanza, quindi se il recupero del secret non riesce, l'istanza non viene avviata.
  • Se il secret è montato come volume, non viene eseguito alcun controllo durante l'avvio dell'istanza. Tuttavia, durante l'esecuzione, se un secret non è accessibile, i tentativi di lettura del volume montato non andranno a buon fine.

La proprietà del volume 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, come nel caso dei job, il volume è di proprietà di root.

Prima di iniziare

  1. Enable the Secret Manager API.

    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 Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo job 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

Puoi rendere accessibile un secret al tuo job utilizzando la console Google Cloud , Google Cloud CLI o YAML:

Console

  1. Nella Google Cloud console, vai alla pagina dei job Cloud Run:

    Vai a Cloud Run

  2. Seleziona Job dal menu e fai clic su Deploy container per compilare la pagina delle impostazioni iniziali del job. Se stai configurando un job esistente, seleziona il job, poi fai clic su Modifica.

  3. Fai clic su Container, volumi, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Variabili e secret.

    immagine

    • Nella scheda Variabili e secret:

      • 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 quello 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 di 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.
  5. Fai clic su Crea o Aggiorna.

gcloud

  • Per specificare il secret in una variabile di ambiente durante la creazione di un nuovo job:

    gcloud run jobs create JOB_NAME \
    --image IMAGE_URL \
    --set-secrets ENV_VAR_NAME=SECRET_NAME:VERSION

    Sostituisci

    • JOB_NAME con il nome del job.
    • ENV_VAR_NAME con il nome della variabile di ambiente da utilizzare per il secret.
    • SECRET_NAME con il nome del secret nello stesso progetto, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per la versione più recente o un numero, ad esempio 2.
    • Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.

    Puoi specificare diverse coppie variabile di ambiente/secret utilizzando un elenco delimitato da virgole.

  • Per specificare il secret in una variabile di ambiente durante l'aggiornamento di un job:

    gcloud run jobs update JOB_NAME \
    --set-secrets ENV_VAR_NAME=SECRET_NAME:VERSION
  • Per montare il secret come volume durante la creazione di un job:

    gcloud run jobs create JOB_NAME \
    --image IMAGE_URL \
    --set-secrets=PATH=SECRET_NAME:VERSION

    Sostituisci:

    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
    • PATHcon il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
    • SECRET_NAME con il nome del secret nello stesso progetto, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.
  • Per aggiornare un secret in un job esistente:

    gcloud run jobs update JOB_NAME \
    --update-secrets=PATH=SECRET_NAME:VERSION

YAML

A causa dei vincoli relativi alla compatibilità delle API, le posizioni dei secret devono essere archiviate in un'annotazione.

  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. Per i secret esposti come variabili di ambiente:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - env:
                - name: SECRET_NAME
                  valueFrom:
                    secretKeyRef:
                      key: VERSION
                      name: SECRET_LOOKUP_NAME
                image: IMAGE_URL 

    Sostituisci:

    • JOB con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • SECRET_NAME con il nome del secret, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.
    • SECRET_LOOKUP_NAME con qualsiasi nome che abbia una sintassi valida per il nome secret (ad es. my-secret), può essere uguale a SECRET_NAME
  3. Per i secret montati come percorsi di file:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                volumeMounts:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                secret:
                  items:
                  - key: VERSION
                    path: FILENAME
                  secretName: SECRET_LOOKUP_NAME

    Sostituisci:

    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATHcon il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
    • PROJECT_NUMBER con il numero di progetto per il progetto in cui è stato creato il secret.
    • SECRET_NAME con il nome del secret, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.
    • SECRET_LOOKUP_NAME con qualsiasi nome che abbia una sintassi valida per il nome secret (ad es. my-secret), può essere uguale a SECRET_NAME
    • VOLUME_NAME con qualsiasi nome (ad es. my-volume), può essere uguale a SECRET_NAME

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_job nella configurazione Terraform:

Per i secret esposti come variabili di ambiente:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        env {
          name = "SECRET_NAME"

          value_source {
            secret_key_ref {
              secret = "SECRET_NAME"
              version = "VERSION"
            }
          }
        }
      }
    }
  }
}

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • REGION con la regione Google Cloud . Ad esempio europe-west1.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
  • SECRET_NAME con 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.

Per i secret montati come percorsi di file:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        volume_mounts {
          name       = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        secret {
          secret = "SECRET_NAME"
        }
      }
    }
  }
}

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • REGION con la regione Google Cloud . Ad esempio europe-west1.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
  • VOLUME_NAME con qualsiasi nome (ad es. my-volume), può essere uguale a SECRET_NAME
  • MOUNT_PATH con il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
  • SECRET_NAME con il nome del secret, ad esempio mysecret.

Fare riferimento ai secret di altri progetti

Puoi fare riferimento a un secret di un altro progetto se l'account di servizio del tuo progetto è stato autorizzato ad accedere al secret.

Console

  1. Nella Google Cloud console, vai alla pagina dei job Cloud Run:

    Vai a Cloud Run

  2. Seleziona Job dal menu e fai clic su Deploy container per compilare la pagina delle impostazioni iniziali del job. Se stai configurando un job esistente, seleziona il job, poi fai clic su Modifica.

  3. Fai clic su Container, volumi, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Variabili e secret.

    immagine

    • Nella scheda Variabili e secret:

      • 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 di 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 quello 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 di 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 di 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.

  5. Fai clic su Crea o Aggiorna.

gcloud

  • Per montare un secret come volume durante l'aggiornamento di un job:

    gcloud run jobs update JOB_NAME \
    --image IMAGE_URL \
    --update-secrets=PATH=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATHcon il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
    • PROJECT_NUMBER con il numero di progetto per il progetto in cui è stato creato il secret.
    • SECRET_NAME con il nome del secret, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.

YAML

  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

A causa dei vincoli relativi alla compatibilità delle API, le posizioni dei secret devono essere archiviate in un'annotazione.

  1. Per i secret esposti come variabili di ambiente:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME
        spec:
          template:
            spec:
              containers:
              - env:
                - name: SECRET_NAME
                  valueFrom:
                    secretKeyRef:
                      key: VERSION
                      name: SECRET_LOOKUP_NAME
                image: IMAGE_URL 

    Sostituisci:

    • JOB con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • SECRET_NAME con il nome del secret, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.
    • PROJECT_NUMBER con il numero di progetto per il progetto in cui è stato creato il secret.
    • SECRET_LOOKUP_NAME con qualsiasi nome che abbia una sintassi valida per il nome del secret (ad es. my-secret), può essere uguale a SECRET_NAME.
  2. Per i secret montati come percorsi di file:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                volumeMounts:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                secret:
                  items:
                  - key: VERSION
                    path: FILENAME
                  secretName: SECRET_LOOKUP_NAME

    Sostituisci:

    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATHcon il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
    • PROJECT_NUMBER con il numero di progetto per il progetto in cui è stato creato il secret.
    • SECRET_NAME con il nome del secret, ad esempio mysecret.
    • VERSION con la versione del secret. Utilizza latest per l'ultima versione o un numero, ad esempio 2.
    • SECRET_LOOKUP_NAME con qualsiasi nome che abbia una sintassi valida per il nome del secret (ad es. my-secret), può essere uguale a SECRET_NAME.
    • VOLUME_NAME con qualsiasi nome (ad es. my-volume), può essere uguale a SECRET_NAME.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_job nella configurazione Terraform:

Per i secret esposti come variabili di ambiente:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"
        env {
          name = "SECRET_NAME"
          value_source {
            secret_key_ref {
              secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
              version = "VERSION"
            }
          }
        }
      }
    }
  }
}

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • REGION con la regione Google Cloud . Ad esempio europe-west1.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
  • SECRET_NAME con il nome del secret, ad esempio mysecret.
  • PROJECT_ID con l'ID progetto in cui è stato creato il secret.
  • VERSION con la versione del secret. Utilizza latest per la versione più recente o un numero, ad esempio 2.

Per i secret montati come percorsi di file:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        volume_mounts {
          name       = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        secret {
          secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
        }
      }
    }
  }
}

Sostituisci:

  • JOB_NAME con il nome del tuo job Cloud Run.
  • REGION con la regione Google Cloud . Ad esempio europe-west1.
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
  • VOLUME_NAME con qualsiasi nome (ad es. my-volume), può essere uguale a SECRET_NAME
  • MOUNT_PATH con il percorso di montaggio del volume e il nome file del secret. Deve iniziare con una barra, ad esempio: /etc/secrets/dbconfig/password, dove /etc/secrets/dbconfig/ è il percorso di montaggio del volume e password è il nome file del secret.
  • PROJECT_ID con l'ID progetto in cui è stato creato il secret.
  • SECRET_NAME con il nome del secret, ad esempio mysecret.

Visualizza le impostazioni dei secret

Per visualizzare le impostazioni dei secret attuali per il tuo job Cloud Run:

Console

  1. Nella Google Cloud console, vai alla pagina dei job Cloud Run:

    Vai ai job Cloud Run

  2. Fai clic sull'offerta di lavoro che ti interessa per aprire la pagina Dettagli offerta di lavoro.

  3. Fai clic su Visualizza e modifica la configurazione del job.

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

gcloud

  1. Utilizza questo comando:

    gcloud run jobs describe JOB_NAME
  2. Individua l'impostazione dei secret nella configurazione restituita.

Percorsi non consentiti e limitazioni

Cloud Run non consente di montare i secret in /dev, /proc e /sys o nelle relative sottodirectory.

Se monti i secret su /tmp e utilizzi l'ambiente di esecuzione di prima generazione, consulta il problema noto relativo al montaggio dei secret su /tmp.

Cloud Run non consente di montare più secret nello stesso percorso perché due montaggi di volumi non possono essere montati 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.