Aller au contenu principal

Tags personnalisés

Utiliser les tags personnalisés

Les tags personnalisés offrent une façon flexible d'organiser et de gérer les objets tels que les incidents et honeytokens dans votre workspace. Contrairement aux tags GitGuardian, qui sont prédéfinis et appliqués automatiquement aux objets, les tags personnalisés vous permettent de définir vos propres labels sous forme de clés et valeurs. Vous pouvez assigner ces tags personnalisés aux incidents et honeytokens, vous permettant de les filtrer et rechercher selon des caractéristiques spécifiques pertinentes pour votre organisation.

Pour plus d'informations sur les tags GitGuardian pour les incidents, voir la documentation Tags GitGuardian.

Des limitations s'appliquent aux tags personnalisés, selon votre plan :

  • Personal : tags max par workspace : 100 (10 clés × 10 valeurs), tags max par ressource : 1
  • Business and Trial : tags max par workspace : 2 500 (50 clés × 50 valeurs), tags max par ressource : 10
  • Limite de caractères par tag : 100 (50 pour la clé, 50 pour la valeur)

Catégoriser vos incidents

Les tags personnalisés fournissent une façon flexible d'organiser les incidents. Vous pouvez créer vos propres tags personnalisés sous forme de clés et valeurs, les assigner aux incidents et les utiliser pour filtrer et rechercher les incidents selon des caractéristiques spécifiques. Notez que vous devez avoir les permissions « Can edit » ou être manager pour assigner ou retirer des tags personnalisés des incidents.

Catégoriser vos honeytokens

Les tags personnalisés fournissent une façon flexible d'organiser les honeytokens. Vous pouvez créer vos propres tags personnalisés sous forme de clés et valeurs, les assigner aux honeytokens et les utiliser pour filtrer et rechercher les honeytokens selon des caractéristiques spécifiques.

Gérer les tags personnalisés

Allez dans Settings > Workspace > Tags pour accéder à la page de paramètres des tags. De là, vous pouvez voir les tags existants et combien d'incidents ou honeytokens sont catégorisés sous eux. Notez que vous devez être manager pour gérer les tags personnalisés.

Tags settings

Créer des tags personnalisés

Vous pouvez créer de nouvelles clés et valeurs depuis la page de paramètres des tags. Notez que vous pouvez créer un tag à un seul mot.

Éditer ou supprimer des tags personnalisés

Sur la page de paramètres des tags, à droite du nom du tag, cliquez sur le menu platform icon, puis sélectionnez Edit ou Delete pour faire apparaître l'option d'éditer ou supprimer le tag. Notez que la suppression d'un tag n'est pas réversible, même s'il est utilisé dans des incidents ou honeytokens. Cependant, il est toujours possible de le supprimer, ce qui le retirera de tout incident et honeytoken.

De même, si vous éditez un tag, la modification sera appliquée à tous les incidents et honeytokens qui utilisent ce tag.

Exemples d'usage

  • Créer une clé env avec des valeurs telles que prod, test, staging, etc.
  • Créer une clé place avec des valeurs telles que codebase, docker, jenkins, jira, slack, etc., pour représenter la localisation où le honeytoken est déployé.
  • Créer une clé team avec des valeurs représentant vos équipes et indiquant quel scope est couvert par un honeytoken.
  • Créer un seul tag reviewed pour indiquer que les incidents fermés ont été examinés et validés après résolution.

Exemple Python3

Voici un exemple Python3 de comment automatiser l'application d'un tag personnalisé depuis un custom webhook :

  1. Créez un Service Account Token dans GitGuardian avec les permissions de lecture et écriture de tags personnalisés et incidents.

  2. Recevez une nouvelle occurrence via un custom webhook :

    Exemple du payload webhook
    {
    "source": "GitGuardian",
    "timestamp": "2025-03-23T09:10:24.594597Z",
    "action": "new_occurrence",
    "message": "A new occurrence has been detected for this incident.",
    "target_user": "GitGuardian",
    "incident": {
    "id": 31605,
    "date": "2025-03-16T08:23:40Z",
    "detector": {
    "name": "aws_iam",
    "display_name": "AWS Keys",
    "nature": "specific",
    "family": "Api",
    "detector_group_name": "aws_iam",
    "detector_group_display_name": "AWS Keys"
    },
    "secret_hash": "xxx",
    "secret_revoked": false,
    "occurrence_count": 5,
    "status": "assigned",
    "regression": false,
    "assignee_email": "bruce.wayne@charadriidae.org",
    "severity": "high",
    "validity": "not_checked",
    "ignored_at": null,
    "ignore_reason": null,
    "resolved_at": null,
    "gitguardian_url": "https://dashboard.gitguardian.com/workspace/1/incidents/xxx",
    "share_url": null
    },
    "occurrence": {
    "id": 1234,
    "incident_id": 1243,
    "kind": "RLTM",
    "sha": "xxx",
    "author_name": "GitHub",
    "author_info": "noreply@github.com",
    "date": "2025-03-23T09:10:23.529812Z",
    "presence": "visible",
    "url": "https://github.com/charadriidae/wrybill-new-zealand/commit/123#diff-xxx",
    "matches": [],
    "filepath": "TestJS.js",
    "change_type": "addition",
    "source": {
    "id": 710,
    "url": "https://github.com/charadriidae/wrybill-new-zealand",
    "type": "github",
    "full_name": "wrybill",
    "health": "at_risk",
    "open_incidents_count": 5,
    "closed_incidents_count": 0,
    "visibility": "private",
    "last_scan": {
    "status": "finished",
    "date": "2025-02-18T17:07:59.079520Z"
    },
    "external_id": "github_id"
    }
    }
    }
  3. Appliquez un tag personnalisé selon l'URL source (par exemple, si elle contient "wrybill", appliquez le tag personnalisé bird:wrybill).

    Référez-vous à la documentation API GitGuardian pour les incidents.

    Exemple d'appel API pour appliquer un tag personnalisé
    PATCH https://api.gitguardian.com/v1/incidents/secrets/31605
    {
    "custom_tags": [
    {
    "key": "bird",
    "value": "wrybill"
    }
    ]
    }
    Exemple du script python
    import os
    import requests

    # Set the GitGuardian service account token and API base URL outside the function
    GITGUARDIAN_API_KEY = os.getenv("GITGUARDIAN_API_KEY")
    GITGUARDIAN_API_BASE_URL = os.getenv("GITGUARDIAN_API_BASE_URL", "https://api.gitguardian.com") # Default to the main GitGuardian API URL, use https://my-gg-instance.com/exposed/v1 for self-hosted

    # Function to apply a custom tag based on the incident_id
    def apply_custom_tag(incident_id, tag_key, tag_value):
    url = f"{GITGUARDIAN_API_BASE_URL}/v1/incidents/secrets/{incident_id}"
    headers = {
    "Authorization": f"Token {GITGUARDIAN_API_KEY}",
    "Content-Type": "application/json"
    }
    data = {
    "custom_tags": [
    {
    "key": tag_key,
    "value": tag_value
    }
    ]
    }

    # Send the PATCH request to apply the custom tag
    response = requests.patch(url, json=data, headers=headers)

    if response.status_code == 200:
    print(f"Successfully applied custom tag: {tag_key}:{tag_value}")
    else:
    print(f"Failed to apply custom tag. Status code: {response.status_code}, {response.text}")

    # Function to process and extract data from the webhook payload
    def process_webhook(webhook_payload):
    # Extract incident ID and URL from the webhook payload
    incident_id = webhook_payload.get('incident', {}).get('id')
    secret_url = webhook_payload.get('occurrence', {}).get('url')

    if incident_id and secret_url:
    return incident_id, secret_url
    else:
    print("Error: Missing incident ID or URL in the webhook.")
    return None, None


    def main(webhook_payload):
    # Retrieve the incident_id and secret_url from the webhook payload
    incident_id, secret_url = process_webhook(webhook_payload)

    if incident_id and secret_url:
    # Check if the secret_url contains the string "wrybill"
    if "wrybill" in secret_url:
    # Apply the custom tag "bird:wrybill"
    apply_custom_tag(incident_id, "bird", "wrybill")
    else:
    print("No matching URL found for tag application.")
    else:
    print("Invalid webhook payload.")