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 aide à mettre en place et configurer l'intégration.
Fonctionnalités prises en charge
- Collecte de plusieurs versions de secrets
- Plusieurs méthodes d'authentification (service account, Kubernetes Workload Identity, Application Default Credentials)
- Prise en charge native de l'infrastructure GCP (détection automatique de l'endpoint metadata)
- Collecte de secrets par 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é Service Account
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 l'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 l'endpoint metadata GCP pour récupérer les identifiants
- Avec GOOGLE_APPLICATION_CREDENTIALS : utilise le fichier de clé service account spécifié par la variable d'environnement
- Développement local : se rabat sur les identifiants de
gcloud auth application-default login
C'est l'approche recommandée pour les déploiements en production sur l'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 project IDs 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 (parmi : « read », « write », « read/write ») | Non | "read" |
env | Libellé d'environnement pour catégoriser les secrets (par ex. « production », « staging », « development ») | Non | |
owner | Propriétaire de cette source (un e-mail, généralement d'un employé ou d'une équipe) | Non | |
[[sources.<name>.include]] | Table de motifs de resource_id à inclure (voir ci-dessous) | Non | |
[[sources.<name>.exclude]] | Table de motifs de resource_id à exclure (voir ci-dessous) | Non |
Paramètres d'authentification par fichier de clé Service Account :
| Paramètre | Description | Requis | Valeur par défaut |
|---|---|---|---|
auth.key_file | Chemin vers le fichier de clé JSON du service account | Oui (pour le mode service_account_key_file) |
Paramètres Kubernetes Workload Identity Federation :
| Paramètre | Description | Requis | Valeur par défaut |
|---|---|---|---|
auth.project_id | Project ID GCP où se trouve le service account | Oui (pour le mode k8s) | |
auth.project_number | Project Number GCP | Oui (pour le mode k8s) | |
auth.pool_id | Workload Identity Pool ID | Oui (pour le mode k8s) | |
auth.provider_id | Workload Identity Provider ID | Oui (pour le mode k8s) | |
auth.gcp_service_account_name | Nom du Google Service Account (sans @project.iam.gserviceaccount.com) | Oui (pour le mode k8s) | |
auth.kubernetes_namespace | Namespace Kubernetes où se trouve le service account | Non | |
auth.kubernetes_service_account | Nom du service account Kubernetes à utiliser pour l'authentification | Non | |
auth.audience | Audience personnalisée pour le provider WIF | Non | Format d'URL standard du provider WIF |
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 :