Intégrer la journalisation à Google SecOps

Ce document explique comment intégrer Cloud Logging à Google Security Operations.

Cas d'utilisation

L'intégration Logging utilise les fonctionnalités Google SecOps pour prendre en charge les cas d'utilisation suivants :

  • Récupération des journaux d'analyse : exécutez des requêtes avancées pour trouver des événements de sécurité spécifiques dans votre environnement Google Cloud lors d'une investigation.

  • Chasse aux menaces automatisée : utilisez des playbooks pour interroger périodiquement les journaux à la recherche d'indicateurs de compromission (IoC) connus ou de schémas suspects.

Avant de commencer

Avant de configurer l'intégration Logging dans Google SecOps, effectuez les étapes préalables suivantes :

  1. Créez un compte de service et accordez-lui les rôles nécessaires.

  2. Choisissez et configurez l'une des méthodes d'authentification suivantes :

    • Option 1 : Workload Identity (recommandée) : cette méthode utilise des jetons d'accès temporaires de courte durée par le biais de l'emprunt d'identité d'un compte de service. Vous n'avez donc pas besoin de stocker de secrets.

    • Option 2 : clé JSON du compte de service : cette méthode repose sur un fichier de clé secrète statique et durable. N'utilisez cette méthode que si l'authentification Workload Identity n'est pas disponible dans votre environnement.

Créer un compte de service

Pour créer un compte de service pour l'intégration, procédez comme suit :

  1. Dans la console Google Cloud , accédez à IAM et administration > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Cliquez sur Ajouter > Créer un compte de service.

  3. Indiquez un nom (par exemple, "Intégration de la journalisation SecOps") et une description, puis cliquez sur Créer et continuer.

  4. À l'étape Autoriser ce compte de service à accéder au projet, ajoutez le rôle Lecteur de journaux (roles/logging.viewer).

  5. Cliquez sur OK. L'adresse e-mail de ce compte de service est utilisée lors de la configuration.

Configurer les identifiants Workload Identity

Choisissez cette méthode ou la méthode de clé JSON pour authentifier l'intégration. Nous vous recommandons d'utiliser une Workload Identity, car elle utilise

des jetons d'accès temporaires et éphémères à l'aide de l'emprunt d'identité d'un compte de service.

Identifier l'identité unique de l'instance

La dernière étape pour sécuriser l'accès consiste à accorder à votre instance Google SecOps l'autorisation d'usurper l'identité de votre compte de service.

  1. Dans Google SecOps, accédez à Content Hub > Intégrations de réponse.

  2. Recherchez et sélectionnez l'intégration Cloud Logging, puis saisissez l'adresse e-mail de votre compte de service dans Adresse e-mail Workload Identity.

  3. Saisissez un ID de projet valide dans ID du projet de quota.

  4. Cliquez sur Enregistrer > Tester. Le test devrait échouer.

  5. Cliquez sur close_small à droite de Test et recherchez le message d'erreur pour l'adresse e-mail de l'identité commençant par gke-init-python@... ou soar-python@....

  6. Copiez cette adresse e-mail unique.

Autoriser l'identité de l'instance dans Google Cloud

L'autorisation de l'identité unique récupérée permet l'emprunt d'identité du compte de service, ce qui permet à la plate-forme d'agir en votre nom sans clés statiques.

  1. Dans la console Google Cloud , accédez à IAM et administration > Comptes de service.

    Accéder à la page "Comptes de service"

  2. Sélectionnez le compte de service cible, puis accédez à Autorisations > Accorder l'accès.

  3. Collez l'adresse e-mail unique dans le champ Nouveaux comptes principaux, puis attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator).

Accorder l'accès au projet de quota

L'authentification avec une Workload Identity nécessite un Quota Project ID pour suivre l'utilisation de l'API et la facturation.

  1. Dans la console Google Cloud , accédez à IAM et administration > IAM, puis sélectionnez le projet utilisé pour l'ID du projet de quota.

    Accéder à IAM

  2. Recherchez votre compte de service, puis cliquez sur Modifier le compte principal.

  3. Cliquez sur Ajouter un autre rôle, puis sélectionnez Consommateur Service Usage (roles/serviceusage.serviceUsageConsumer).

  4. Cliquez sur Enregistrer.

Configurer une clé JSON

Les fichiers de clés secrètes statiques de longue durée nécessitent une gestion manuelle. Cette méthode ne doit être utilisée que si les identifiants Workload Identity ne sont pas disponibles.

  1. Dans la console Google Cloud , accédez à IAM et administration > Comptes de service, puis sélectionnez votre compte de service.

    Accéder à la page "Comptes de service"

  2. Accédez à l'onglet Clés, puis cliquez sur Ajouter une clé > Créer une clé.

  3. Sélectionnez le type de clé JSON, puis cliquez sur Créer.

  4. Copiez l'intégralité du contenu du fichier téléchargé et collez-le dans User's Service Account lors de la configuration.

Paramètres d'intégration

L'intégration Logging nécessite les paramètres suivants :

Paramètre Description
API Root

Facultatif.

URL de base de l'API Cloud Logging (par exemple, https://logging.googleapis.com).

User's Service Account

Facultatif.

Contenu complet du fichier JSON de la clé du compte de service.

N'utilisez ce paramètre que si vous vous authentifiez à l'aide d'une clé JSON.

Workload Identity Email

Facultatif.

Adresse e-mail du client de votre compte de service.

N'utilisez ce paramètre que si vous vous authentifiez à l'aide d'identifiants Workload Identity.

Project ID

Facultatif.

ID du projet à utiliser dans l'intégration.

Si aucune valeur n'est fournie, l'intégration récupère l'ID à partir des identifiants du compte de service.

Quota Project ID

Facultatif.

ID du projet utilisé pour l'utilisation de l'API et la facturation.

Ce paramètre est obligatoire lors de l'authentification à l'aide d'identifiants Workload Identity.

Organization ID

Facultatif.

ID d'organisation utilisé pour définir le champ d'application des requêtes.

Verify SSL

Facultatif.

Si cette option est sélectionnée, l'intégration valide le certificat SSL lors de la connexion au serveur de journalisation.

Cette option est activée par défaut.

Pour obtenir des instructions sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement, si nécessaire. Une fois que vous avez configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour savoir comment configurer et prendre en charge plusieurs instances, consultez Prise en charge de plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis Votre espace de travail et Effectuer une action manuelle.

Exécuter la requête

Utilisez l'action Exécuter une requête pour exécuter des requêtes personnalisées dans Logging.

Cette action ne s'applique pas aux entités Google SecOps.

Entrées d'action

L'action Exécuter la requête nécessite les paramètres suivants :

Paramètre Description
Project ID Optional

ID du projet à utiliser dans l'intégration.

Si vous ne définissez pas de valeur pour ce paramètre, l'intégration récupère l'ID du projet à partir de votre compte de service Google Cloud .

Organization ID Optional

ID d'organisation à utiliser dans l'intégration.

Si vous ne définissez pas de valeur pour ce paramètre, l'intégration récupère l'ID du projet à partir de votre compte de service Google Cloud .

Query Obligatoire

Requête permettant de trouver les journaux.

Time Frame Optional

Période à partir de laquelle récupérer les résultats.

Si vous sélectionnez Custom, configurez également le paramètre Start Time.

Voici les valeurs possibles :

  • Last Hour
  • Last 6 Hours
  • Last 24 Hours
  • Last Week
  • Last Month
  • Custom
La valeur par défaut est Last Hour.
Start Time Optional

Heure de début pour récupérer les résultats.

Ce paramètre est obligatoire si vous avez sélectionné l'option Custom pour le paramètre Time Frame.

Pour configurer ce paramètre, utilisez le format ISO 8601.

End Time Optional

Heure de fin pour récupérer les résultats.

Si vous ne définissez pas de valeur pour ce paramètre et que vous sélectionnez l'option Custom pour le paramètre Time Frame, l'action utilise l'heure actuelle comme heure de fin.

Pour configurer ce paramètre, utilisez le format ISO 8601.

Max Results To Return Optional

Nombre maximal de résultats à renvoyer.

La valeur par défaut est 50.

Sorties d'action

L'action Exécuter la requête fournit les sorties suivantes :

Type de résultat de l'action Disponibilité
Pièce jointe au mur des cas Non disponible
Lien vers le mur des cas Non disponible
Tableau du mur des cas Non disponible
Table d'enrichissement Non disponible
Résultat JSON Disponible
Messages de sortie Disponible
Résultat du script Disponible
Résultat JSON

L'exemple suivant décrit le résultat JSON reçu lors de l'utilisation de l'action Exécuter la requête :

[{
    "protoPayload": {
        "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
        "authenticationInfo": {
            "principalEmail": "system:clouddns"
        },
        "authorizationInfo": [
            {
                "granted": true,
                "permission": "io.k8s.coordination.v1.leases.update",
                "resource": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock"
            }
        ],
        "methodName": "io.k8s.coordination.v1.leases.update",
        "requestMetadata": {
            "callerIp": "192.0.2.6",
            "callerSuppliedUserAgent": "clouddns-leader-election"
        },
        "resourceName": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock",
        "serviceName": "k8s.io",
        "status": {
            "code": 0
        }
    },
    "insertId": "ID",
    "resource": {
        "type": "k8s_cluster",
        "labels": {
            "cluster_name": "CLUSTER_NAME",
            "project_id": "PROJECT_ID",
            "location": "us-central1"
        }
    },
    "timestamp": "2024-09-18T09:46:38.647428Z",
    "labels": {
        "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"system:clouddns\" of ClusterRole \"system:clouddns-role\" to User \"system:clouddns\"",
        "authorization.k8s.io/decision": "allow"
    },
    "logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
    "operation": {
        "id": "ID",
        "producer": "k8s.io",
        "first": true,
        "last": true
    },
    "receiveTimestamp": "2024-09-18T09:46:39.063264993Z"
}]
Messages de sortie

L'action Exécuter la requête fournit les messages de sortie suivants :

Message de sortie Description du message

Successfully executed query "QUERY" in Cloud Logging.

No results were found for the provided query.

L'action a réussi.
Error executing action "Execute Query". Reason: ERROR_REASON

Échec de l'action.

Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants.

Résultat du script

Le tableau suivant décrit les valeurs de sortie des résultats du script lorsque vous utilisez l'action Exécuter la requête :

Nom du résultat du script Valeur
is_success True ou False

Ping

Utilisez l'action Ping pour tester la connectivité à Logging.

Cette action ne s'applique pas aux entités Google SecOps.

Entrées d'action

Aucune.

Sorties d'action

L'action Ping fournit les résultats suivants :

Type de résultat de l'action Disponibilité
Pièce jointe au mur des cas Non disponible
Lien vers le mur des cas Non disponible
Tableau du mur des cas Non disponible
Table d'enrichissement Non disponible
Résultat JSON Non disponible
Messages de sortie Disponible
Résultat du script Disponible
Messages de sortie

L'action Ping fournit les messages de sortie suivants :

Message de sortie Description du message
Successfully connected to the Cloud Logging server with the provided connection parameters! L'action a réussi.
Failed to connect to the Cloud Logging server! Error is ERROR_REASON

Échec de l'action.

Vérifiez la connexion au serveur, les paramètres d'entrée ou les identifiants.

Résultat du script

Le tableau suivant décrit les valeurs de sortie des résultats du script lorsque vous utilisez l'action Ping :

Nom du résultat du script Valeur
is_success True ou False

Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.