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

Les récepteurs agrégés dans Cloud Logging vous permettent de combiner et d'acheminer les entrées de journal de toutes les ressources d'un dossier ou d'une organisation vers une destination centrale. Vous pouvez configurer un récepteur agrégé comme interceptant ou non interceptant, définir des filtres pour contrôler les entrées de journal acheminées et accorder au récepteur l'autorisation d'écrire dans sa destination.

Limites

Lorsque vous configurez un récepteur agrégé, les limites suivantes s'appliquent :

  • Un chemin de destination ne peut inclure qu'un point de terminaison de service global, tel que pubsub.googleapis.com. Vous ne pouvez pas inclure de point de terminaison de service régional (REP) tel que pubsub.LOCATION.rep.googleapis.com. Pour obtenir la liste des chemins de destination acceptés, consultez Formats des chemins de destination.

  • Le routage des données de journaux vers des sujets Pub/Sub avec des restrictions de transit n'est pas pris en charge. Si vous configurez un récepteur de journaux vers un sujet Pub/Sub avec des restrictions en transit, vous risquez de voir des erreurs de configuration topic_region_not_allowed et des journaux supprimés.

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, consultez Présentation des récepteurs agrégés.

  • Vous disposez d'un dossier ou d'une organisation Cloud de Confiance by S3NS avec des entrées de journal que vous pouvez consulter dans l'explorateur de journaux.

  • Vous disposez de l'un des rôles Identity and Access Management suivants pour l' Cloud de Confiance organisation ou le dossier à partir desquels 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. La destination peut se trouver dans n'importe quel projet Cloud de Confiance et dans n'importe quelle organisation. Pour obtenir la liste des destinations compatibles et de leurs limites, consultez Destinations compatibles.

  • Sélectionnez l'interface que vous prévoyez d'utiliser :

    Console

    Lorsque vous utilisez la console Cloud de Confiance pour accéder aux services et aux API Cloud de Confiance by S3NS , vous n'avez pas besoin de configurer l'authentification.

    gcloud

    Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :

    gcloud init

    REST

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

      Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée.

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

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 en savoir plus sur l'attribution d'autorisations au récepteur, consultez Définir des autorisations de destination.

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 Cloud de Confiance , accédez à la page Routeur de journaux :

    Accéder à la page 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. 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 ProjetCloud de Confiance , puis saisissez le nom complet du projetCloud de Confiance de destination :

      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 :

      • Cloud de Confiance project

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID
        
      • Bucket de journalisation

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
        
      • Sujet Pub/Sub

        N'indiquez pas le nom d'un sujet Pub/Sub qui applique des restrictions de transit.

        pubsub.googleapis.com/projects/DESTINATION_PROJECT_ID/topics/TOPIC_ID
        
  6. Dans le panneau Choisissez des 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 sans interception, 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 des 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, consultez Filtres pour les récepteurs agrégés.

    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 Choisir les journaux à exclure du récepteur, procédez comme suit :

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

    2. Dans le champ 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 exclure les entrées de journal d'un projet spécifique de l'acheminement vers la destination, ajoutez le filtre d'exclusion suivant :

      logName:projects/PROJECT_ID
      

      Pour exclure des entrées de journal 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. Sélectionnez 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 de destination.

gcloud

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

  1. Pour créer un récepteur, exécutez la commande gcloud logging sinks create et incluez l'option --include-children.

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

    • SINK_NAME : nom du récepteur de journaux. Vous ne pouvez pas modifier le nom d'un récepteur après l'avoir créé.
    • 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 "Inclure" pour un récepteur. Pour obtenir des exemples, consultez Filtres pour les récepteurs agrégés.
    • FOLDER_ID : ID du dossier. Si vous souhaitez 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"
    

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

    Par exemple, si vous créez un récepteur agrégé au niveau du dossier dont la destination est un sujet Pub/Sub, votre commande peut se présenter comme suit :

    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 dans la destination du récepteur. Pour en savoir plus, consultez Définir des autorisations de destination.

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 sur l'organisation ou le dossier Cloud de Confiance 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, consultez Filtres pour les récepteurs agrégés.

    La longueur d'un filtre ne doit 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 dans la destination du récepteur. Pour en savoir plus, consultez Définir des autorisations de destination.

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

Définir les autorisations de la destination

Cette section explique comment accorder à l'identité de l'auteur d'un récepteur de journaux les autorisations IAM dont elle a besoin pour que le récepteur puisse écrire des entrées de journal dans sa destination. L'identité du rédacteur correspond à l'ID du compte de service associé au récepteur. Cette identité inclut une adresse e-mail qui identifie le compte principal devant avoir accès à l'écriture de données dans la destination.

Vous n'avez pas besoin de définir d'autorisations de destination lorsqu'un récepteur de journaux achemine les entrées de journal vers un bucket de journaux du même projet. Pour cette configuration, aucun compte de service n'est requis. Pour toutes les autres configurations, Logging crée et gère automatiquement le compte de service d'un récepteur de journaux, et vous devez définir les autorisations de destination :

  • Depuis le 22 mai 2023, Logging utilise le même compte de service pour tous les récepteurs de la ressource sous-jacente. Les ressources peuvent être un projetCloud de Confiance , 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.

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 Cloud de Confiance , accédez à la page Routeur de journaux :

      Accéder à la page 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. Les identités de l'auteur peuvent varier en fonction de la ressource à laquelle appartient votre récepteur, mais elles sont toujours précédées du préfixe serviceAccount:. Voici un exemple d'identité de rédacteur :

      serviceAccount:service-123456789012@gcp-sa-logging.s3ns-system.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 journal dans la destination :

    1. Dans la console Cloud de Confiance , 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 Cloud de Confiance , 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 projetCloud de Confiance qui contient 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 compte principal.

  2. Pour obtenir des informations sur le compte de service de votre récepteur, exécutez la commande gcloud logging sinks describe.

    Avant d'exécuter 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.s3ns-system.iam.gserviceaccount.com
    
  5. Accordez à l'identité de l'auteur du récepteur l'autorisation d'écrire des données de journal dans la destination en exécutant 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é. Lorsque la destination est un projet, sélectionnez ce projet.
    • 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, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com. Pour obtenir la liste complète des formats que peut avoir PRINCIPAL, consultez Identifiants principaux.
    • ROLE : un 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 Cloud de Confiance ou la Google Cloud CLI pour attribuer un rôle au compte de service.

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 à l'aide de 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 ce filtre, le récepteur agrégé achemine les entrées de journal des instances Compute Engine de n'importe quelle ressource enfant de cette organisation 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 router les entrées de journal. 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 les instructions à l'aide d'une clause OR.

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

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 générées par les instances Compute Engine et provenant du dossier my-folder, utilisez le filtre suivant :

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

Avec ce filtre, les entrées de journaux provenant de n'importe quelle ressource autre que my-folder, y compris les entrées de journaux provenant de projets Cloud de Confiance qui sont des enfants de my-folder, ne sont pas acheminées vers la destination.

Sélectionner la ressource surveillée

Pour acheminer les entrées de journal d'une seule ressource surveillée spécifique dans un projetCloud de Confiance , utilisez plusieurs comparaisons pour spécifier exactement 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 Logging, consultez Langage de requête Logging.

Étapes suivantes