gcp-secret-env
Version:
A simple tool to convert a google secret manager to an environment variable (in .env file or other)
384 lines (233 loc) • 8.89 kB
Markdown
# gcp-secret-env
## 🌍 Language Selection | Sélection de la Langue
[🇬🇧 English](#en) | [🇫🇷 Français](#fr)
<details id="en" open>
<summary>🇬🇧 English</summary>
## Description
gcp-secret-env is a simple CLI utility to retrieve secrets from Google Cloud Secret Manager and set them as environment variables or in JSON format (by default in a `.env` file, but you can specify another file).
It can be used both in a local development environment and in your CI/CD pipelines.
## Prerequisites
Before using `gcp-secret-env`, make sure you have:
1. Google Cloud SDK installed.
2. The necessary permissions to access Secret Manager.
3. Valid Google Cloud credentials.
To authenticate with Google Cloud, run the following command:
```bash
$ gcloud auth application-default login
```
By default, the tool will look for credentials in the `GOOGLE_APPLICATION_CREDENTIALS` environment variable or in the file `~/.config/gcloud/application_default_credentials.json`. If no valid credentials are found, an alert will be displayed.
## Usage
### Set credentials for a specific project
If you have multiple projects and want to use specific credentials, use the `-spc` (Set Project Credentials) flag:
```bash
$ npx gcp-secret-env -spc <project-name>
```
or
```bash
$ npx gcp-secret-env -spc=<project-name>
```
### Select a specific project
To use project-specific credentials, use the `-upc` (Use Project Credentials) flag:
```bash
$ npx gcp-secret-env -upc <project-name>
```
If the specified project does not exist, an error will be displayed.
### Retrieve the latest version of a secret
You need the project ID and the secret name:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name>
```
With project-specific credentials:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -upc <project-name>
```
### Retrieve a specific version of a secret
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -version <version>
```
### Create a new version of a secret from a `.env` file
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -save
```
### Specify a custom file or path
Use the `-file` flag to define a specific file containing the secrets:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -file <file-path>
```
or
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -file=<file-path>
```
If no file is specified, `.env` will be used by default.
### Use JSON format
Use the `-json` flag to retrieve or send secrets in JSON format:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -json
```
### Disable a secret version
To disable a specific version of a secret:
- Disable the latest version:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -disable latest
```
- Disable the previous version:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -disable -1
```
- Disable a specific version (e.g., version 3):
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -disable 3
```
### Destroy a secret version
Use `-destroy` to delete a specific secret version:
- Destroy the latest version:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -destroy latest
```
- Destroy the previous version:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -destroy -1
```
- Destroy a specific version (e.g., version 3):
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -destroy 3
```
### Combine multiple actions
You can combine multiple flags (`-save`, `-disable`, `-destroy`) for efficient secret management.
Example: create a new version of a secret, disable the previous version, and delete the one before that:
```bash
$ npx gcp-secret-env -id <project-id> -name <secret-name> -save -disable -1 -destroy -2
```
## Additional Notes
- All flags that accept a value can be used with or without `=`.
- The order of the flags does not matter, but the value must always follow the corresponding flag.
- If you use project-specific credentials, ensure they are correctly configured.
</details>
<details id="fr">
<summary>🇫🇷 Français</summary>
## Description
gcp-secret-env est un utilitaire CLI simple permettant de récupérer des secrets depuis Google Cloud Secret Manager et de les définir comme variables d'environnement ou en format JSON (par défaut dans un fichier `.env`, mais un autre fichier peut être spécifié).
Il peut être utilisé aussi bien dans un environnement de développement local que dans des pipelines CI/CD.
## Prérequis
Avant d'utiliser `gcp-secret-env`, assurez-vous d'avoir :
1. Google Cloud SDK installé.
2. Les permissions nécessaires pour accéder à Secret Manager.
3. Des identifiants Google Cloud valides.
Pour vous authentifier avec Google Cloud, exécutez la commande suivante :
```bash
$ gcloud auth application-default login
```
Par défaut, l'outil recherchera les identifiants dans la variable d'environnement `GOOGLE_APPLICATION_CREDENTIALS` ou dans le fichier `~/.config/gcloud/application_default_credentials.json`. Si aucun identifiant valide n'est trouvé, une alerte sera affichée.
## Utilisation
### Définir des identifiants pour un projet spécifique
Si vous avez plusieurs projets et souhaitez utiliser des identifiants spécifiques, utilisez le drapeau `-spc` (Set Project Credentials) :
```bash
$ npx gcp-secret-env -spc <nom-du-projet>
```
ou
```bash
$ npx gcp-secret-env -spc=<nom-du-projet>
```
### Sélectionner un projet spécifique
Pour utiliser des identifiants propres à un projet, utilisez le drapeau `-upc` (Use Project Credentials) :
```bash
$ npx gcp-secret-env -upc <nom-du-projet>
```
Si le projet spécifié n'existe pas, une erreur sera affichée.
### Récupérer la dernière version d'un secret
Vous avez besoin de l'ID du projet et du nom du secret :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret>
```
Avec des identifiants spécifiques à un projet :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -upc <nom-du-projet>
```
### Récupérer une version spécifique d'un secret
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -version <version>
```
### Créer une nouvelle version d'un secret à partir d'un fichier `.env`
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -save
```
### Spécifier un fichier ou chemin personnalisé
Utilisez le drapeau `-file` pour définir un fichier contenant les secrets :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -file <chemin-du-fichier>
```
ou
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -file=<chemin-du-fichier>
```
Si aucun fichier n'est spécifié, `.env` sera utilisé par défaut.
### Utiliser le format JSON
Utilisez le drapeau `-json` pour récupérer ou envoyer des secrets en format JSON :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -json
```
### Désactiver une version de secret
Pour désactiver une version spécifique d'un secret :
- Désactiver la dernière version :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -disable latest
```
- Désactiver la version précédente :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -disable -1
```
- Désactiver une version spécifique (ex: version 3) :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -disable 3
```
### Détruire une version de secret
Utilisez `-destroy` pour supprimer une version spécifique d'un secret :
- Détruire la dernière version :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -destroy latest
```
- Détruire la version précédente :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -destroy -1
```
- Détruire une version spécifique (ex: version 3) :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -destroy 3
```
### Combiner plusieurs actions
Vous pouvez combiner plusieurs drapeaux (`-save`, `-disable`, `-destroy`) pour une gestion efficace des secrets.
Exemple : créer une nouvelle version d'un secret, désactiver la version précédente et supprimer celle d'avant :
```bash
$ npx gcp-secret-env -id <id-du-projet> -name <nom-du-secret> -save -disable -1 -destroy -2
```
## Notes supplémentaires
- Tous les drapeaux qui acceptent une valeur peuvent être utilisés avec ou sans `=`.
- L'ordre des drapeaux n'a pas d'importance, mais la valeur doit toujours suivre le drapeau correspondant.
- Si vous utilisez des identifiants spécifiques à un projet, assurez-vous qu'ils sont correctement configurés.
</details>