Générer et acheminer des journaux au niveau de l'organisation et du dossier vers des destinations compatibles

Ce document explique comment créer des récepteurs agrégés. Les récepteurs agrégés vous permettent de combiner et d'acheminer les journaux générés par les ressources de votre organisation ou de votre dossier vers un emplacement centralisé.Google Cloud

Avant de commencer

Avant de créer un récepteur, vérifiez les points suivants :

  • Vous connaissez le comportement des récepteurs agrégés. Pour en savoir plus sur ces récepteurs, consultez Présentation des récepteurs agrégés.

  • Vous disposez d'un dossier ou d'une organisation Google Cloud dont vous pouvez consulter les entrées de journaux dans l'explorateur de journaux.

  • Vous disposez de l'un des rôles IAM suivants pour l'organisation ou le dossierGoogle Cloud à partir duquel vous acheminez les entrées de journal.

    • Propriétaire (roles/owner)
    • Administrateur Logging (roles/logging.admin)
    • Rédacteur de configuration des journaux (roles/logging.configWriter)

    Les autorisations contenues dans ces rôles vous permettent de créer, supprimer ou modifier des récepteurs. Pour en savoir plus sur la définition des rôles IAM, consultez le guide du contrôle des accès de Logging.

  • La destination du récepteur agrégé existe ou vous pouvez la créer.

    Lorsque la destination est un projet Google Cloud , celui-ci peut se trouver dans n'importe quelle organisation. Toutes les autres destinations peuvent se trouver dans n'importe quel projet de n'importe quelle organisation.

  • Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Créer un récepteur agrégé

Pour configurer un récepteur agrégé, créez-le, puis accordez-lui les autorisations d'écriture dans la destination. Cette section explique comment créer un récepteur agrégé. Pour savoir comment accorder des autorisations au récepteur, consultez la section Définir les autorisations de destination sur cette page.

Vous pouvez créer jusqu'à 200 récepteurs par dossier ou organisation.

Console

Pour créer un récepteur agrégé pour votre dossier ou votre organisation, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Routeur de journaux :

    Accéder au routeur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Sélectionnez un dossier ou une organisation existant.

  3. Cliquez sur Créer un récepteur.

  4. Dans le panneau Détails du récepteur, saisissez les informations suivantes :

    • Nom du récepteur : indiquez un identifiant pour le récepteur. Notez qu'après avoir créé le récepteur, vous ne pouvez pas le renommer, mais vous pouvez le supprimer et en créer un autre.

    • Description du récepteur (facultatif) : décrivez l'objectif ou le cas d'utilisation du récepteur.

  5. Dans le menu Sélectionner le service de récepteur, sélectionnez le type de destination, puis remplissez la boîte de dialogue pour spécifier la destination. Vous pouvez sélectionner une destination existante ou en créer une.

    • Pour un récepteur d'interception, sélectionnez Google Cloud project, puis saisissez le nom complet du projet de destination Google Cloud  :

      logging.googleapis.com/projects/DESTINATION_PROJECT_ID
      
    • Pour un récepteur sans interception, sélectionnez la destination, puis saisissez son nom complet. Les destinations suivantes sont acceptées :

      • Google Cloud project

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID
        
      • Bucket Cloud Logging

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
        
      • Ensemble de données BigQuery

        Vous devez saisir le nom complet d'un ensemble de données accessible en écriture. L'ensemble de données peut être une table partitionnée ou fragmentée par date. Ne saisissez pas le nom d'un ensemble de données associé. Les ensembles de données associés sont en lecture seule.

        bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
        
      • Bucket Cloud Storage

        storage.googleapis.com/BUCKET_NAME
        
      • Sujet Pub/Sub

        pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
        
      • Splunk

        Saisissez le sujet Pub/Sub de votre service Splunk.

  6. Dans le panneau Sélectionner les journaux à inclure dans le récepteur, sélectionnez les ressources à inclure dans le récepteur.

    • Pour un récepteur d'interception, sélectionnez Intercepter les journaux ingérés par cette organisation et toutes les ressources enfants.

    • Pour un récepteur non intercepteur, sélectionnez Inclure les journaux ingérés par cette ressource et toutes les ressources enfants.

  7. Dans le champ Créer un filtre d'inclusion, saisissez une expression de filtre correspondant aux entrées de journal que vous souhaitez inclure. Si vous ne définissez pas de filtre, toutes les entrées de journal de la ressource sélectionnée sont acheminées vers la destination.

    Par exemple, vous pouvez créer un filtre pour acheminer tous les journaux d'audit d'accès aux données vers un seul bucket Logging. Ce filtre se présente comme suit :

    LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
    

    Pour obtenir des exemples de filtres, consultez la section Créer des filtres pour les récepteurs agrégés de cette page.

    Notez que la longueur d'un filtre ne peut pas dépasser 20 000 caractères.

  8. Facultatif : Pour vérifier que le filtre saisi est correct, sélectionnez Prévisualiser les journaux. L'explorateur de journaux s'ouvre dans un nouvel onglet avec le filtre prérempli.

  9. Facultatif : Dans le panneau Sélectionner les journaux à exclure du récepteur, procédez comme suit :

    1. Dans le champ Nom du filtre d'exclusion, saisissez un nom.

    2. Dans la section Créer un filtre d'exclusion, saisissez une expression de filtre correspondant aux entrées de journal que vous souhaitez exclure. Vous pouvez également utiliser la fonction sample pour sélectionner une partie des entrées de journal à exclure.

      Par exemple, pour empêcher le routage des entrées de journaux d'un projet spécifique vers la destination, ajoutez le filtre d'exclusion suivant :

      logName:projects/PROJECT_ID
      

      Pour exclure des entrées de journaux de plusieurs projets, utilisez l'opérateur logique OR pour joindre les clauses logName.

    Vous pouvez créer jusqu'à 50 filtres d'exclusion par récepteur. Notez que la longueur d'un filtre ne peut pas dépasser 20 000 caractères.

  10. Cliquez sur Créer un récepteur.

  11. Pour terminer la configuration de votre récepteur agrégé, accordez au compte de service du récepteur l'autorisation d'écrire des entrées de journal dans la destination de votre récepteur. Pour en savoir plus, consultez Définir les autorisations des destinations.

gcloud

Pour créer un récepteur agrégé, utilisez la commande logging sinks create :

  1. Pour créer un récepteur, appelez la commande gcloud logging sinks create et assurez-vous d'inclure l'option --include-children.

    Avant d'utiliser la commande suivante, effectuez les remplacements suivants :

    • SINK_NAME : nom du récepteur de journaux. Une fois le récepteur créé, vous ne pouvez plus le renommer.
    • SINK_DESTINATION : service ou projet vers lequel vous souhaitez acheminer vos entrées de journal. Pour en savoir plus sur le format de ces destinations, consultez Formats des chemins de destination.
    • INCLUSION_FILTER : filtre d'inclusion pour un récepteur. Pour obtenir des exemples de filtres, consultez Créer des filtres pour les récepteurs agrégés.
    • FOLDER_ID : ID du dossier. Pour créer un récepteur au niveau de l'organisation, remplacez --folder=FOLDER_ID par -- organization=ORGANIZATION_ID.

    Exécutez la commande gcloud logging sinks create :

    gcloud logging sinks create SINK_NAME \
      SINK_DESTINATION  --include-children \
      --folder=FOLDER_ID --log-filter="INCLUSION_FILTER"
    

    Vous pouvez également fournir les options suivantes :

    • Pour créer un récepteur d'interception, incluez l'option --intercept-children.

    Par exemple, si vous créez un récepteur agrégé au niveau du dossier et dont la destination est un sujet Pub/Sub, votre commande peut ressembler à ceci :

    gcloud logging sinks create SINK_NAME \
      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID --include-children \
      --folder=FOLDER_ID --log-filter="logName:activity"
  2. Accordez au compte de service du récepteur l'autorisation d'écrire sur la destination du récepteur. Pour en savoir plus, consultez Définir les autorisations des destinations.

REST

Pour créer un récepteur agrégé, utilisez la méthode d'API Logging organizations.sinks.create ou folders.sinks.create. Préparez les arguments de la méthode comme suit :

  1. Définissez le champ parent comme l' Google Cloud organisation ou le dossier dans lequel créer le récepteur. Le parent doit correspondre à l'un des éléments suivants :

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
  2. Dans l'objet LogSink du corps de la requête de la méthode, effectuez l'une des opérations suivantes :

    • Définissez includeChildren sur True.

    • Pour créer un récepteur d'interception, définissez également le champ interceptChildren sur True.

  3. Définissez le champ filter pour qu'il corresponde aux entrées de journal que vous souhaitez inclure.

    Pour obtenir des exemples de filtres, consultez Créer des filtres pour les récepteurs agrégés.

    La longueur d'un filtre ne peut pas dépasser 20 000 caractères.

  4. Définissez les champs LogSink restants comme vous le feriez pour n'importe quel récepteur. Pour en savoir plus, consultez Acheminer les journaux vers des destinations compatibles.

  5. Appelez organizations.sinks.create ou folders.sinks.create pour créer le récepteur.

  6. Accordez au compte de service du récepteur l'autorisation d'écrire sur la destination du récepteur. Pour en savoir plus, consultez Définir les autorisations des destinations.

L'application des modifications apportées à un récepteur peut prendre quelques minutes.

Filtres pour les récepteurs agrégés

Cette section fournit des exemples de filtres que vous pouvez utiliser dans un récepteur agrégé. Pour obtenir d'autres exemples, consultez Exemples de requêtes avec l'explorateur de journaux.

Certains exemples utilisent la notation suivante :

  • : désigne l'opérateur de la sous-chaîne. Ne remplacez pas l'opérateur =.
  • ... représente les comparaisons de filtres supplémentaires, le cas échéant.
  • Les variables sont indiquées par un texte coloré. Remplacez-les par des valeurs valides.

La longueur d'un filtre est limitée à 20 000 caractères.

Pour en savoir plus sur la syntaxe de filtrage, consultez la page Langage de requête Logging.

Sélectionner la source du journal

Pour acheminer les entrées de journal de toutes les ressources enfants, ne spécifiez pas de projet, de dossier ni d'organisation dans les filtres d'inclusion et d'exclusion de votre récepteur. Par exemple, supposons que vous configuriez un récepteur agrégé pour une organisation avec le filtre suivant :

resource.type="gce_instance"

Avec le filtre précédent, les entrées de journal dont le type de ressource est "Instances Compute Engine" et qui sont écrites dans un enfant de cette organisation sont acheminées par le collecteur agrégé vers la destination.

Toutefois, vous pouvez être amené à utiliser un récepteur agrégé pour acheminer les entrées de journal uniquement à partir de ressources enfants spécifiques. Par exemple, pour des raisons de conformité, vous pouvez stocker les journaux d'audit de dossiers ou de projets spécifiques dans leur propre bucket Cloud Storage. Dans ce cas, configurez votre filtre d'inclusion pour spécifier chaque ressource enfant dont vous souhaitez que les entrées de journal soient routées. Si vous souhaitez acheminer les entrées de journal d'un dossier et de tous les projets qu'il contient, le filtre doit lister le dossier et chacun des projets qu'il contient, et joindre également les instructions avec une clause OR.

Les filtres suivants limitent les entrées de journal à des projets, dossiers ou organisations spécifiques Google Cloud  :

logName:"projects/PROJECT_ID/logs/" AND ... 
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ... 
logName:"folders/FOLDER_ID/logs/" AND ... 
logName:"organizations/ORGANIZATION_ID/logs/" AND ... 

Par exemple, pour n'acheminer que les entrées de journal écrites dans les instances Compute Engine et dans le dossier my-folder, utilisez le filtre suivant :

logName:"folders/my-folder/logs/" AND resource.type="gce_instance"

Avec le filtre précédent, les entrées de journal écrites dans une ressource autre que my-folder, y compris les entrées de journal écrites dans les projets Google Cloud qui sont des enfants de my-folder, ne sont pas acheminées vers la destination.

Sélectionner la ressource surveillée

Pour acheminer des entrées de journaux depuis une ressource surveillée spécifique dans un projetGoogle Cloud , utilisez plusieurs comparaisons afin de spécifier précisément la ressource :

logName:"projects/PROJECT_ID/logs" AND
resource.type=RESOURCE_TYPE AND
resource.labels.instance_id=INSTANCE_ID

Pour une liste des types de ressources, consultez la page Types de ressources surveillées.

Sélectionner un échantillon d'entrées de journal

Pour acheminer un échantillon aléatoire d'entrées de journal, ajoutez la fonction intégrée sample. Par exemple, pour acheminer uniquement 10 % des entrées de journal correspondant à votre filtre actuel, utilisez cette addition :

sample(insertId, 0.10) AND ...

Pour en savoir plus, consultez la section concernant la fonction sample.

Pour en savoir plus sur les filtres Cloud Logging, consultez la page Langage de requête Logging.

Définir les autorisations de la destination

Cette section explique comment accorder à Logging les autorisations Identity and Access Management pour écrire des entrées de journal dans la destination de votre récepteur. Pour obtenir la liste complète des rôles et des autorisations dans Logging, consultez la page Contrôle des accès.

Lorsque vous créez ou mettez à jour un récepteur qui achemine des entrées de journal vers une destination autre qu'un bucket de journaux dans le projet actuel, un compte de service est requis pour ce récepteur. Logging crée et gère automatiquement le compte de service pour vous :

  • Depuis le 22 mai 2023, lorsque vous créez un récepteur et qu'aucun compte de service n'existe pour la ressource sous-jacente, Logging crée le compte de service. La journalisation utilise le même compte de service pour tous les récepteurs de la ressource sous-jacente. Les ressources peuvent être un projet Google Cloud , une organisation, un dossier ou un compte de facturation.
  • Avant le 22 mai 2023, Logging créait un compte de service pour chaque récepteur. Depuis le 22 mai 2023, Logging utilise un compte de service partagé pour tous les récepteurs de la ressource sous-jacente.

L'identité du rédacteur d'un récepteur est l'identifiant du compte de service associé à ce récepteur. Tous les récepteurs disposent d'une identité de rédacteur, sauf s'ils écrivent dans un bucket de journaux du projet Google Cloud actuel. L'adresse e-mail de l'identité du rédacteur identifie le compte principal qui doit avoir accès à l'écriture de données dans la destination.

Pour acheminer des entrées de journaux vers une ressource protégée par un périmètre de service, vous devez ajouter le compte de service de ce récepteur à un niveau d'accès, puis l'attribuer au périmètre de service de destination. Cela n'est pas nécessaire pour les récepteurs non agrégés. Pour en savoir plus, consultez la page VPC Service Controls : Cloud Logging.

Pour définir les autorisations afin que votre récepteur soit acheminé vers sa destination, procédez comme suit :

Console

  1. Pour obtenir des informations sur le compte de service de votre récepteur, procédez comme suit :

    1. Dans la console Google Cloud , accédez à la page Routeur de journaux :

      Accéder au routeur de journaux

      Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

    2. Sélectionnez Menu, puis Afficher les détails du récepteur. L'identité du rédacteur apparaît dans le panneau Détails du récepteur.

    3. Si la valeur du champ writerIdentity contient une adresse e-mail, passez à l'étape suivante. Lorsque la valeur est None, vous n'avez pas besoin de configurer les autorisations de destination.

    4. Copiez l'identité du rédacteur du récepteur dans votre presse-papiers. L'exemple suivant illustre une identité de rédacteur :

      serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
      
  2. Accordez au compte principal spécifié par l'identité du rédacteur du récepteur l'autorisation d'écrire des données de journaux dans la destination :

    1. Dans la console Google Cloud , accédez à la page IAM :

      Accéder à IAM

      Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

    2. Dans la barre d'outils de la console Google Cloud , sélectionnez le projet qui stocke la destination du récepteur agrégé. Si la destination est un projet, sélectionnez-le.

    3. Cliquez sur Accorder l'accès.

    4. Saisissez le compte principal spécifié par l'identité du rédacteur du récepteur, puis accordez un rôle IAM :

gcloud

  1. Assurez-vous de disposer d'un accès Propriétaire au projetGoogle Cloud contenant la destination. Si vous ne disposez pas d'un accès Propriétaire à la destination du récepteur, demandez à un propriétaire du projet d'ajouter l'identité du rédacteur en tant que principal.

  2. Pour obtenir des informations sur le compte de service de votre récepteur, appelez la méthode gcloud logging sinks describe.

    Avant d'utiliser la commande suivante, effectuez les remplacements suivants :

    • SINK_NAME : nom du récepteur de journaux. Une fois le récepteur créé, vous ne pouvez plus le renommer.

    Exécutez la commande gcloud logging sinks describe :

    gcloud logging sinks describe SINK_NAME
    
  3. Si les détails du récepteur contiennent un champ intitulé writerIdentity, passez à l'étape suivante. Lorsque les détails n'incluent pas de champ writerIdentity, vous n'avez pas besoin de configurer les autorisations de destination pour le récepteur.

  4. Copiez l'identité du rédacteur du récepteur dans votre presse-papiers. L'exemple suivant illustre une identité de rédacteur :

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  5. Accordez à l'identité du rédacteur du récepteur l'autorisation d'écrire des données de journaux dans la destination en appelant la commande gcloud projects add-iam-policy-binding.

    Avant d'utiliser la commande suivante, effectuez les remplacements suivants :

    • PROJECT_ID : identifiant du projet. Sélectionnez le projet qui stocke la destination du récepteur agrégé. Si la destination est un projet, sélectionnez-le.
    • PRINCIPAL : identifiant du compte principal auquel vous souhaitez accorder le rôle. Les identifiants des comptes principaux se présentent généralement sous la forme suivante : PRINCIPAL-TYPE:ID. Par exemple, user:my-user@example.com. Pour obtenir la liste complète des formats que peut prendre PRINCIPAL, consultez Identifiants principaux.
    • ROLE : rôle IAM. Attribuez à l'identité du rédacteur du récepteur un rôle IAM en fonction de la destination du récepteur de journaux :

    Exécutez la commande gcloud projects add-iam-policy-binding :

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
    

REST

Nous vous recommandons d'utiliser la console Google Cloud ou Google Cloud CLI pour attribuer un rôle au compte de service.

Étapes suivantes