Aller au contenu principal

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"]

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"]
Exécution sur une infrastructure GCP

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ètreDescriptionRequisValeur par défaut
typeDoit être défini sur "gcpsecretmanager"Oui
fetch_all_versionsIndique s'il faut collecter toutes les versions des secretsOui
projectsListe des IDs de projet GCP depuis lesquels collecter les secretsNonTous les projets accessibles
auth.auth_modeMéthode d'authentification : "service_account_key_file", "k8s" ou "default"Non"default"
modeMode d'intégration (l'un de : "read", "write", "read/write")Non"read"
envEnvironnement par défaut des secrets de cette source. GitGuardian déduit un environnement par secret et se replie sur cette valeurNon
ownerProprié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ètreDescriptionRequisValeur par défaut
auth.key_fileChemin vers le fichier de clé JSON du compte de serviceOui (pour le mode service_account_key_file)

Paramètres de Kubernetes Workload Identity Federation :

ParamètreDescriptionRequisValeur par défaut
auth.project_idID du projet GCP où se trouve le compte de serviceOui (pour le mode k8s)
auth.project_numberNuméro du projet GCPOui (pour le mode k8s)
auth.pool_idID du Workload Identity PoolOui (pour le mode k8s)
auth.provider_idID du Workload Identity ProviderOui (pour le mode k8s)
auth.gcp_service_account_nameNom du compte de service Google (sans @project.iam.gserviceaccount.com)Oui (pour le mode k8s)
auth.kubernetes_namespaceNamespace Kubernetes où se trouve le compte de serviceNon
auth.kubernetes_service_accountNom du compte de service Kubernetes à utiliser pour l'authentificationNon
auth.audienceAudience personnalisée pour le fournisseur WIFNonFormat d'URL de fournisseur WIF standard
auth.token_expiration_secondsDurée d'expiration du token en secondesNon1800 (30 minutes)

Authentification​

GGScout prend en charge trois méthodes d'authentification pour Google Cloud :

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​

  1. 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é
  2. Pour les déploiements GKE : utilisez Kubernetes Workload Identity Federation pour l'authentification la plus sécurisée et sans clé
  3. Évitez les fichiers de clé de compte de service en production lorsque c'est possible — utilisez plutôt Application Default Credentials ou Workload Identity
  4. Suivez le principe du moindre privilège pour les permissions IAM
  5. Activez fetch_all_versions pour suivre les modifications de vos secrets au fil du temps
  6. Si vous devez utiliser des fichiers de clé de compte de service, stockez-les en toute sécurité et renouvelez-les régulièrement
  7. Utilisez des projets distincts pour différents environnements
  8. 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 tableau resource_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.