Aller au contenu principal

Configurer les intégrations

ggscout s'intègre à divers Secrets Managers, systèmes CI/CD et composants d'infrastructure pour collecter et surveiller les secrets. Cette page couvre comment configurer et utiliser les intégrations pour la découverte et la surveillance de secrets.

Modes d'intégration

Les sources peuvent être configurées avec différents modes opérationnels :

  • read — collecte uniquement les données depuis la source (par défaut)
  • write — écrit uniquement des données vers la source
  • read/write — collecte et écrit les données vers la source
[sources.my-source]
type = "source_type"
mode = "read/write" # Supports both operations

Fichier de configuration

Le fichier de configuration de ggscout utilise le format TOML pour décrire :

  • Comment ggscout communique avec la plateforme GitGuardian
  • Comment accéder aux différents Secrets Managers pour collecter les secrets

Exemple de configuration :

[gitguardian]
# SaaS US
endpoint = "https://api.gitguardian.com/v1"
# SaaS EU
# endpoint = "https://api.eu1.gitguardian.com/v1"
# Self-hosted
# endpoint = "https://my-gg-instance.com/exposed/v1"
api_token = "${GITGUARDIAN_API_KEY}"

[sources.my-hashicorp-vault]
# This lets ggscout know what source to contact
type = "hashicorpvault"
# And this lets ggscout know how to contact it
vault_address = "${HASHICORP_VAULT_ADDRESS}"
auth.auth_mode = "token"
auth.token = "${HASHICORP_VAULT_TOKEN}"

# Many vaults support secret versioning. Set this to false if you only
# want to collect the latest version of the vault secrets
fetch_all_versions = true
# Allow ggscout instance to read from and write to that vault
mode = "read/write" # "read" and "write" are other possible values
# Will help assess policy breaches and their severity
env = "staging"
# Optional: specify the owner of this source
owner = "devops-team@example.com"

# Configure another vault to collect here
# [sources.my-other-vault]
# type = "gcpsecretmanager"

Le fichier de configuration prend en charge la lecture de variables d'environnement ("${GITGUARDIAN_API_KEY}") à la place de valeurs en clair.
Vous pouvez définir ces variables dans un fichier .env :

GITGUARDIAN_API_KEY=<your-gitguardian-api-key>

HASHICORP_VAULT_ADDRESS=<your-vault-url>
HASHICORP_VAULT_TOKEN=<your-vault-token>

Référez-vous à la section Secrets Managers pour configurer correctement la collecte des secrets.

Types d'intégrations pris en charge

ggscout prend en charge plusieurs types d'intégrations dans différentes catégories. Le tableau ci-dessous montre toutes les intégrations disponibles et leurs capacités :

Type d'intégrationNom de l'intégrationIdentifiant de typeÉcriture prise en charge
Secrets ManagersHashiCorp Vaulthashicorpvault✅ Oui
AWS Secrets Managerawssecretsmanager✅ Oui
CyberArk Secrets Manager SaaScyberarksaas✅ Oui
CyberArk Secrets Manager Self-Hostedcyberarkselfhosted✅ Oui
Akeylessakeyless✅ Oui
Delinea Secret Serverdelineasecretserver✅ Oui
Azure Key Vaultazurekeyvault❌ Non
Google Secret Managergcpsecretmanager❌ Non
Systèmes CI/CDGitLab CIgitlabci❌ Non
InfrastructureKubernetesk8s❌ Non
info

Les intégrations qui ne prennent pas en charge l'écriture peuvent toujours être utilisées pour la découverte et la surveillance de secrets avec la commande fetch-and-send. Seules les intégrations avec écriture peuvent être utilisées avec la commande sync-secrets.

Référez-vous à la section Synchronisation de secrets pour plus de détails sur sync-secrets.

Paramètres de configuration communs

Toutes les intégrations Secrets Managers prennent en charge les paramètres communs suivants en plus de leur configuration spécifique :

Catégorisation d'environnement

  • env : libellé d'environnement pour catégoriser les secrets (par ex. « production », « staging », « development »). Cela aide à organiser et filtrer les secrets par environnement cible.

Propriété de la source

  • owner : propriétaire de cette source (un e-mail, généralement d'un employé ou d'une équipe). Ce champ est optionnel et aide à identifier qui est responsable de la gestion de la source.

Filtrage des ressources

  • [[sources.<name>.include]] : table de motifs de resource_id à inclure. Seuls les secrets correspondant à ces motifs seront collectés.
  • [[sources.<name>.exclude]] : table de motifs de resource_id à exclure. Les secrets correspondant à ces motifs seront ignorés.

Chaque table include ou exclude doit avoir un tableau resource_ids. Vous pouvez préciser plusieurs tables include ou exclude pour différents ensembles de motifs.

Les motifs prennent en charge les wildcards (*) uniquement à la fin pour la correspondance par préfixe. Pour des correspondances exactes, indiquez le nom complet sans wildcards.

Exemple de configuration

[sources.my-vault]
type = "hashicorpvault"
vault_address = "${HASHICORP_VAULT_ADDRESS}"
fetch_all_versions = true
mode = "read"
env = "production"
owner = "devops-team@example.com"

[[sources.my-vault.include]]
resource_ids = ["app/*", "database/*", "api-key"]

[[sources.my-vault.exclude]]
resource_ids = ["test/*", "temp/*", "old-secret"]

auth.auth_mode = "token"
auth.token = "${HASHICORP_VAULT_TOKEN}"

Dans cet exemple :

  • Motifs préfixés : "app/*" et "database/*" correspondent à tous les secrets commençant par ces préfixes
  • Correspondances exactes : "api-key" ne correspond qu'au secret portant exactement ce nom