Intégration Google Secret Manager
GGScout prend en charge l'intégration avec Google Secret Manager pour collecter et surveiller vos secrets. Ce guide vous aidera à mettre en place et configurer l'intégration.
Fonctionnalités prises en charge
- Collecte de plusieurs versions de secrets
- Plusieurs méthodes d'authentification (compte de service, Kubernetes Workload Identity, Application Default Credentials)
- Prise en charge native de l'infrastructure GCP (détection automatique du endpoint de métadonnées)
- Collecte de secrets spécifiques à un projet
- Accès basé sur les rôles IAM
Configuration
Pour configurer GGScout afin qu'il fonctionne avec Google Secret Manager, ajoutez la configuration suivante à votre fichier ggscout.toml :
Authentification par fichier de clé de compte de service
Utilisez un fichier de clé JSON pour l'authentification :
[sources.gcp]
type = "gcpsecretmanager"
fetch_all_versions = true
projects = ["some-project-id-441517"]
mode = "read"
env = "production"
owner = "devops-team@example.com"
auth.auth_mode = "service_account_key_file"
auth.key_file = ".secure_files/.gcp_key.json"
[[sources.gcp.include]]
resource_ids = ["app-*", "database-*", "api-key"]
[[sources.gcp.exclude]]
resource_ids = ["test-*", "temp-*", "old-secret"]
Application Default Credentials (recommandé pour GCP)
Lorsque vous exécutez ggscout sur une infrastructure GCP (GCE, GKE, Cloud Run, etc.), utilisez Application Default Credentials pour une authentification automatique :
[sources.gcp]
type = "gcpsecretmanager"
fetch_all_versions = true
projects = ["some-project-id-441517"]
mode = "read"
env = "production"
owner = "devops-team@example.com"
auth.auth_mode = "default"
[[sources.gcp.include]]
resource_ids = ["app-*", "database-*", "api-key"]
[[sources.gcp.exclude]]
resource_ids = ["test-*", "temp-*", "old-secret"]
Lorsque vous utilisez auth_mode = "default", ggscout détecte automatiquement son environnement et utilise la méthode d'authentification la plus appropriée :
- Sur GCE/GKE : appelle automatiquement le endpoint de métadonnées de GCP pour récupérer les identifiants
- Avec GOOGLE_APPLICATION_CREDENTIALS : utilise le fichier de clé de compte de service spécifié par la variable d'environnement
- Développement local : se replie sur les identifiants de
gcloud auth application-default login
C'est l'approche recommandée pour les déploiements de production sur une infrastructure GCP.
Kubernetes Workload Identity Federation
Pour les clusters GKE utilisant Workload Identity :
[sources.gcp]
type = "gcpsecretmanager"
fetch_all_versions = true
projects = ["some-project-id-441517"]
mode = "read"
env = "production"
owner = "devops-team@example.com"
auth.auth_mode = "k8s"
auth.project_id = "my-gcp-project"
auth.project_number = "123456789012"
auth.pool_id = "my-workload-identity-pool"
auth.provider_id = "my-provider"
auth.gcp_service_account_name = "ggscout-sa"
auth.kubernetes_namespace = "ggscout" # Optional
auth.kubernetes_service_account = "ggscout-k8s-sa" # Optional
[[sources.gcp.include]]
resource_ids = ["app-*", "database-*", "api-key"]
[[sources.gcp.exclude]]
resource_ids = ["test-*", "temp-*", "old-secret"]
Paramètres de configuration
| Paramètre | Description | Requis | Valeur par défaut |
|---|---|---|---|
type | Doit être défini sur "gcpsecretmanager" | Oui | |
fetch_all_versions | Indique s'il faut collecter toutes les versions des secrets | Oui | |
projects | Liste des IDs de projet GCP depuis lesquels collecter les secrets | Non | Tous les projets accessibles |
auth.auth_mode | Méthode d'authentification : "service_account_key_file", "k8s" ou "default" | Non | "default" |
mode | Mode d'intégration (l'un de : "read", "write", "read/write") | Non | "read" |
env | Environnement par défaut des secrets de cette source. GitGuardian déduit un environnement par secret et se replie sur cette valeur | Non | |
owner | Propriétaire de cette source (un e-mail, généralement celui d'un employé ou d'une équipe) | Non | |
[[sources.<name>.include]] | Table des motifs resource_id à inclure (voir ci-dessous) | Non | |
[[sources.<name>.exclude]] | Table des motifs resource_id à exclure (voir ci-dessous) | Non |
GitGuardian déduit l'environnement de chaque secret à partir de ses labels et annotations tels que env ou environment, et n'utilise le env au niveau de la source que lorsqu'aucun n'en nomme un. L'ID du projet et le nom du secret ne sont pas lus.
Paramètres d'authentification par fichier de clé de compte de service :
| Paramètre | Description | Requis | Valeur par défaut |
|---|---|---|---|
auth.key_file | Chemin vers le fichier de clé JSON du compte de service | Oui (pour le mode service_account_key_file) |
Paramètres de Kubernetes Workload Identity Federation :
| Paramètre | Description | Requis | Valeur par défaut |
|---|---|---|---|
auth.project_id | ID du projet GCP où se trouve le compte de service | Oui (pour le mode k8s) | |
auth.project_number | Numéro du projet GCP | Oui (pour le mode k8s) | |
auth.pool_id | ID du Workload Identity Pool | Oui (pour le mode k8s) | |
auth.provider_id | ID du Workload Identity Provider | Oui (pour le mode k8s) | |
auth.gcp_service_account_name | Nom du compte de service Google (sans @project.iam.gserviceaccount.com) | Oui (pour le mode k8s) | |
auth.kubernetes_namespace | Namespace Kubernetes où se trouve le compte de service | Non | |
auth.kubernetes_service_account | Nom du compte de service Kubernetes à utiliser pour l'authentification | Non | |
auth.audience | Audience personnalisée pour le fournisseur WIF | Non | Format d'URL de fournisseur WIF standard |
auth.token_expiration_seconds | Durée d'expiration du token en secondes | Non | 1800 (30 minutes) |
Authentification
GGScout prend en charge trois méthodes d'authentification pour Google Cloud :
1. Application Default Credentials (recommandé pour GCP)
Le mode d'authentification default déduit automatiquement sa configuration en fonction de l'environnement :
- Exécution sur une infrastructure GCP (GCE, GKE, Cloud Run) : appelle automatiquement le endpoint de métadonnées de GCP pour récupérer les identifiants de l'instance ou du workload
- Variable d'environnement GOOGLE_APPLICATION_CREDENTIALS définie : utilise le fichier de clé de compte de service spécifié
- Développement local : se replie sur les identifiants de
gcloud auth application-default login
C'est la méthode la plus sécurisée et la plus pratique lorsque vous exécutez ggscout sur une infrastructure GCP, car elle élimine le besoin de gérer des fichiers de clé de compte de service.
2. Fichier de clé de compte de service
Spécifiez explicitement un chemin de fichier de clé JSON pour l'authentification. Cette méthode fonctionne dans n'importe quel environnement mais nécessite de gérer et de sécuriser le fichier de clé.
3. Kubernetes Workload Identity Federation
Utilisez les tokens de compte de service Kubernetes avec GCP Workload Identity Federation. C'est la méthode la plus sécurisée pour les déploiements GKE car elle :
- Élimine le besoin de fichiers de clé de compte de service
- Fournit des identifiants à courte durée de vie, automatiquement renouvelés
- Suit les bonnes pratiques de sécurité cloud-native
Prérequis : Avant de configurer l'intégration, assurez-vous d'avoir activé l'API Cloud Resource Manager dans votre compte GCP, en plus de l'API Secret Manager.
Variables d'environnement
Pour l'authentification par fichier de clé de compte de service :
GOOGLE_APPLICATION_CREDENTIALS: chemin vers le fichier de clé du compte de service (lors de l'utilisation du mode default)
Pour Application Default Credentials :
- Aucune variable d'environnement requise lors de l'exécution sur une infrastructure GCP
GOOGLE_APPLICATION_CREDENTIALS: facultatif, peut être utilisé pour spécifier un fichier de clé
Bonnes pratiques
- Utilisez Application Default Credentials (
auth_mode = "default") lorsque vous exécutez sur une infrastructure GCP (GCE, GKE, Cloud Run) pour une authentification automatique et sécurisée sans gérer de fichiers de clé - Pour les déploiements GKE : utilisez Kubernetes Workload Identity Federation pour l'authentification la plus sécurisée et sans clé
- Évitez les fichiers de clé de compte de service en production lorsque c'est possible — utilisez plutôt Application Default Credentials ou Workload Identity
- Suivez le principe du moindre privilège pour les permissions IAM
- Activez
fetch_all_versionspour suivre les modifications de vos secrets au fil du temps - Si vous devez utiliser des fichiers de clé de compte de service, stockez-les en toute sécurité et renouvelez-les régulièrement
- Utilisez des projets distincts pour différents environnements
- Lors d'un déploiement sur GCP, tirez parti de la détection automatique du endpoint de métadonnées pour une authentification transparente
Note :
- Utilisez les tables
[[sources.<name>.include]]et[[sources.<name>.exclude]]pour spécifier plusieurs règles d'inclusion/exclusion. Chaque table doit avoir un tableauresource_ids. - Les motifs prennent en charge les caractères génériques (*) uniquement à la fin pour la correspondance par préfixe. Pour des correspondances exactes, spécifiez le nom complet sans caractères génériques.