Configurer des secrets pour les pools de nœuds de calcul

Votre pool de workers peut nécessiter des clés API, des mots de passe, des certificats ou d'autres informations sensibles pour ses dépendances. Pour Cloud Run, Google vous recommande de stocker ces informations sensibles dans un secret que vous créez dans Secret Manager.

Pour mettre un secret à disposition de vos conteneurs, vous avez deux possibilités :

  • Lorsque vous installez chaque secret en tant que volume, Cloud Run le met à la disposition du conteneur sous forme de fichiers. Lors de la lecture d'un volume, Cloud Run récupère toujours la valeur du secret depuis Secret Manager pour utiliser la valeur avec la dernière version. Cette méthode fonctionne également avec la rotation des secrets.
  • Transmettre un secret à l'aide de variables d'environnement. Les variables d'environnement sont résolues au moment du démarrage de l'instance. Ainsi, si vous utilisez cette méthode, Google vous recommande d'épingler le secret à une version particulière plutôt que d'utiliser latest comme version.

Pour en savoir plus, consultez les bonnes pratiques de Secret Manager.

Vérification des secrets lors du déploiement et de l'exécution

Lors du déploiement du pool de nœuds de calcul, Cloud Run vérifie tous les secrets que vous utilisez. Cette vérification permet de s'assurer que le compte de service qui exécute le conteneur est autorisé à accéder à ces secrets.

Lors de l'exécution, lorsque les instances démarrent :

  • Si le secret est une variable d'environnement, Cloud Run récupère sa valeur avant de démarrer l'instance. Si le processus de récupération du secret échoue, l'instance ne démarre pas.
  • Si vous installez le secret en tant que volume, Cloud Run n'effectue aucune vérification au démarrage de l'instance. Toutefois, pendant l'exécution, si un secret est inaccessible, les tentatives de lecture du volume installé échoueront.

Propriété des volumes

La propriété d'un volume secret Cloud Run diffère selon l'environnement d'exécution et le type de déploiement.

Lorsque vous installez un volume secret à l'aide de l'environnement d'exécution de deuxième génération, ce qui est toujours le cas pour le pool de nœuds de calcul, la racine est propriétaire du volume.

Avant de commencer

  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. Utilisez un secret existant ou créez-en un dans Secret Manager, comme décrit dans la section Créer un secret.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer les secrets, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour autoriser Cloud Run à accéder au secret, l'identité du service doit disposer du rôle suivant :

Pour savoir comment ajouter le compte principal d'identité de service au rôle Accesseur de secrets de Secret Manager, consultez la section Gérer l'accès aux secrets.

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre pool de nœuds de calcul Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Rendre un secret accessible à Cloud Run

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez rendre un secret accessible à votre pool de nœuds de calcul à l'aide de la console Google Cloud ou de Google Cloud CLI lorsque vous déployez un nouveau pool de nœuds de calcul ou mettez à jour un pool de nœuds de calcul existant et déployez une révision. Cliquez sur l'onglet de votre choix :

Console

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Pools de nœuds de calcul dans le menu, puis cliquez sur Déployer un conteneur pour configurer un nouveau pool de nœuds de calcul. Remplissez la page initiale des paramètres du pool de nœuds de calcul, puis cliquez sur Conteneur(s), Volumes, Mise en réseau, Sécurité pour développer la page de configuration.

  3. Si vous configurez un pool de nœuds de calcul existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  4. Suivez les étapes pour installer le secret en tant que volume ou l'exposer en tant que variable d'environnement.

    • Pour exposer le secret en tant que variable d'environnement :

      1. Cliquez sur l'onglet Conteneur(s).
      2. Dans l'onglet Variables et secrets, cliquez sur Référencer un secret.
      3. Dans le champ Nom 1, saisissez le nom de la variable d'environnement.
      4. Dans la liste Secret, sélectionnez le secret que vous souhaitez utiliser.
      5. Dans la liste Version 1, sélectionnez la version du secret à référencer.
      6. Cliquez sur OK.
      7. Cliquez sur Créer ou Déployer.
    • Pour installer un secret en tant que volume, procédez comme suit :

      1. Cliquez sur l'onglet Volumes, puis sélectionnez Ajouter un volume.
      2. Dans la liste Type de volume, sélectionnez Secret.
      3. Dans le champ Nom du volume, saisissez un nom ou acceptez le nom par défaut.
      4. Dans la liste Secret, sélectionnez le secret que vous souhaitez utiliser.
      5. Dans le champ Chemin d'accès 1, saisissez le nom du fichier à installer.
      6. Dans la liste Version 1, sélectionnez la version du secret à référencer. La dernière version est sélectionnée par défaut. Si vous le souhaitez, vous pouvez sélectionner une version spécifique.
      7. Cliquez sur OK.
      8. Accédez à l'onglet Conteneur(s) pour installer votre secret dans le conteneur.
      9. Dans l'onglet Installations de volume, cliquez sur Installer le volume.
      10. Dans la liste Nom 1, sélectionnez le nom de votre volume.
      11. Dans le champ Chemin d'installation 1, saisissez le chemin d'installation de ce secret. Il s'agit du répertoire dans lequel toutes les versions de votre secret sont placées.
      12. Cliquez sur OK.
      13. Cliquez sur Créer ou Déployer.

gcloud

  • Pour exposer le secret en tant que variable d'environnement lorsque vous déployez un pool de nœuds de calcul, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

    • WORKER_POOL : nom de votre pool de nœuds de calcul.
    • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • ENV_VAR_NAME : nom de la variable d'environnement que vous souhaitez utiliser avec le secret.
    • SECRET_NAME : nom du secret dans le même projet, par exemple mysecret.
    • VERSION : version du secret. Utilisez latest pour la version la plus récente, ou un nombre, par exemple 2.
  • Pour mettre à jour plusieurs secrets en même temps, séparez les options de configuration de chaque secret par une virgule. La commande suivante met à jour un secret installé en tant que volume et un autre secret exposé en tant que variable d'environnement. Pour mettre à jour les secrets existants, exécutez la commande suivante :

    gcloud beta run worker-pools deploy WORKER_POOL \
    --image IMAGE_URL \
    --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
  • Pour effacer les secrets existants et rendre un nouveau secret accessible au pool de nœuds de calcul, utilisez l'option --set-secrets :

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

Référencer des secrets provenant d'autres projets

Pour référencer un secret provenant d'un autre projet, vérifiez que le compte du pool de nœuds de calcul de votre projet a accès au secret.

Console

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Pools de nœuds de calcul dans le menu, puis cliquez sur Déployer un conteneur pour configurer un nouveau pool de nœuds de calcul. Remplissez la page initiale des paramètres du pool de nœuds de calcul, puis cliquez sur Conteneur(s), Volumes, Mise en réseau, Sécurité pour développer la page de configuration.

  3. Si vous configurez un pool de nœuds de calcul existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  4. Suivez les étapes pour installer le secret en tant que volume ou l'exposer en tant que variable d'environnement.

    • Pour exposer le secret en tant que variable d'environnement :

      1. Cliquez sur l'onglet Conteneur(s).
      2. Dans l'onglet Variables et secrets, cliquez sur Référencer un secret.
      3. Dans le champ Nom 1, saisissez le nom de la variable d'environnement.
      4. Dans la liste Secret, cliquez sur Saisir le secret manuellement.
      5. Saisissez l'ID de ressource du secret au format suivant :

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER par le numéro de votre Google Cloud projet. Pour obtenir des instructions détaillées sur la recherche de votre numéro de projet, consultez Créer et gérer des projets.

        • SECRET_NAME : nom du secret dans Secret Manager.

      6. Dans la liste Version 1, sélectionnez la version du secret à référencer.

      7. Cliquez sur OK.

      8. Cliquez sur Créer ou Déployer.

    • Pour installer un secret en tant que volume, procédez comme suit :

      1. Cliquez sur l'onglet Volumes, puis sélectionnez Ajouter un volume.
      2. Dans la liste Type de volume, sélectionnez Secret.
      3. Dans le champ Nom du volume, saisissez un nom ou acceptez le nom par défaut.
      4. Dans la liste Secret, cliquez sur Saisir le secret manuellement.
      5. Saisissez l'ID de ressource du secret au format suivant :

        projects/PROJECT_NUMBER/secrets/SECRET_NAME
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER par le numéro de votre Google Cloud projet. Pour obtenir des instructions détaillées sur la recherche de votre numéro de projet, consultez Créer et gérer des projets.

        • SECRET_NAME : nom du secret dans Secret Manager.

      6. Dans le champ Chemin d'accès 1, saisissez le nom du fichier à installer.

      7. Dans la liste Version 1, sélectionnez la version du secret à référencer. La dernière version est sélectionnée par défaut. Si vous le souhaitez, vous pouvez sélectionner une version spécifique.

      8. Cliquez sur OK.

      9. Accédez à l'onglet Conteneur(s) pour installer votre secret dans le conteneur.

      10. Dans l'onglet Installations de volume, cliquez sur Installer le volume.

      11. Dans la liste Nom 1, sélectionnez le nom de votre volume.

      12. Dans le champ Chemin d'installation 1, saisissez le chemin d'installation de ce secret. Il s'agit du répertoire dans lequel toutes les versions de votre secret sont placées.

      13. Cliquez sur OK.

      14. Cliquez sur Créer ou Déployer.

gcloud

Pour faire référence à un secret en tant que variable d'environnement, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • WORKER_POOL : nom de votre pool de nœuds de calcul.
  • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • PROJECT_NUMBER par le numéro du projet dans lequel le secret a été créé.
  • SECRET_NAME : nom du secret, par exemple, mysecret.
  • VERSION par la version de secret. Utilisez latest pour la version la plus récente, ou un nombre, par exemple 2.

Afficher les paramètres des secrets

Pour afficher les paramètres actuels des secrets pour votre pool de nœuds de calcul Cloud Run :

Console

  1. Dans la console Google Cloud , accédez à la page "Pools de nœuds de calcul Cloud Run" :

    Accéder aux pools de nœuds de calcul Cloud Run

  2. Cliquez sur le pool de nœuds de calcul qui vous intéresse pour ouvrir la page Détails du pool de nœuds de calcul.

  3. Cliquez sur Modifier et déployer la nouvelle révision.

  4. Localisez le paramètre des secrets dans les détails de la configuration.

gcloud

  1. Exécutez la commande suivante :

    gcloud beta run worker-pools describe WORKER_POOL
  2. Recherchez le paramètre des secrets dans la configuration renvoyée.

Supprimer des secrets d'un pool de nœuds de calcul

Vous pouvez supprimer les secrets d'un pool de nœuds de calcul à l'aide de la console Google Cloud ou de gcloud CLI :

Console

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez votre pool de nœuds de calcul dans la liste, puis cliquez sur Modifier et déployer la nouvelle révision.

  3. Cliquez sur l'onglet Conteneur(s).

  4. Pour supprimer des secrets montés en tant que volume, sélectionnez l'onglet Montages de volume, puis pointez sur le secret que vous souhaitez supprimer et cliquez sur Supprimer.

  5. Pour supprimer des secrets exposés en tant que variable d'environnement, sélectionnez l'onglet Variables et secrets, pointez sur le secret que vous souhaitez supprimer, puis cliquez sur Supprimer.

  6. Cliquez sur Déployer.

gcloud

Vous pouvez supprimer tous les secrets d'un pool de nœuds de calcul ou spécifier un ou plusieurs secrets à supprimer :

  • Pour supprimer tous les secrets, exécutez la commande suivante :
  gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \
  --clear-secrets

Remplacez les éléments suivants :

  • WORKER_POOL : nom de votre pool de nœuds de calcul.
  • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

  • Pour spécifier une liste de secrets à supprimer, utilisez le flag --remove-secrets. La commande suivante supprime un secret installé en tant que volume et un autre secret exposé en tant que variable d'environnement :

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

Remplacez les éléments suivants :

  • WORKER_POOL : nom de votre pool de nœuds de calcul.
  • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • ENV_VAR_NAME : nom de la variable d'environnement.
  • SECRET_FILE_PATH : chemin d'accès complet du secret. Par exemple, /mnt/secrets/primary/latest, où /mnt/secrets/primary/ est le chemin d'installation et latest le chemin d'accès au secret. Vous pouvez également spécifier le chemin d'installation et le chemin d'accès au secret séparément :

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

Utiliser des secrets dans votre code

Pour obtenir des exemples sur l'accès aux secrets de votre code en tant que variables d'environnement, reportez-vous au tutoriel sur l'authentification de l'utilisateur final, en particulier la section Gérer une configuration sensible avec Secret Manager.

Chemins et limites non autorisés

Les limites suivantes s'appliquent au montage des secrets :

  • Cloud Run ne vous permet pas d'installer des secrets sur /dev, /proc et /sys, ni dans leurs sous-répertoires.
  • Cloud Run ne vous permet pas d'installer plusieurs secrets sur le même chemin d'accès, car deux installations de volume ne peuvent pas être installées au même emplacement.

Remplacer un répertoire

Si le secret est installé en tant que volume dans Cloud Run et que le dernier répertoire du chemin d'installation du volume existe déjà, tous les fichiers ou dossiers du répertoire existant deviennent inaccessibles.

Par exemple, si un secret nommé my-secret est installé sur le chemin d'accès /etc/app_data, tout le contenu du répertoire app_data sera écrasé et le seul fichier visible est /etc/app_data/my-secret.

Pour éviter d'écraser des fichiers dans un répertoire existant, créez un nouveau répertoire pour installer le secret, par exemple /etc/app_data/secrets, afin que le chemin d'installation du secret soit /etc/app_data/secrets/my-secret.