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 Google Cloud de votre organisation ou de votre dossier vers un emplacement centralisé.

Présentation

Les récepteurs agrégés combinent et acheminent les entrées de journal à partir des ressources contenues dans une organisation ou un dossier vers une destination.

Si vous souhaitez contrôler les entrées de journal pouvant être interrogées dans ces ressources ou acheminées via les collecteurs de ces ressources, vous pouvez configurer un collecteur agrégé pour qu'il n'intercepte pas ou intercepte les entrées de journal:

  • Un récepteur agrégé non intercepteur achemine les entrées de journal via des récepteurs dans les ressources enfants. Avec ce collecteur, vous conservez la visibilité des entrées de journal dans les ressources dans lesquelles elles ont été générées. Les récepteurs non intercepteurs ne sont pas visibles par les ressources enfants.

    Par exemple, vous pouvez créer un récepteur agrégé non intercepteur qui achemine toutes les entrées de journal générées à partir des dossiers d'une organisation vers un bucket de journaux central. Les entrées de journal sont stockées dans le bucket de journaux central, ainsi que dans les ressources dans lesquelles elles ont été générées.

  • Un récepteur agrégé intercepteur empêche l'acheminement des entrées de journal via les récepteurs dans les ressources enfants, à l'exception des récepteurs _Required. Ce récepteur peut être utile pour éviter que des copies en double des entrées de journal ne soient stockées à plusieurs endroits.

    Prenons l'exemple des journaux d'audit pour l'accès aux données, qui peuvent être volumineux et coûteux à stocker en plusieurs exemplaires. Si vous avez activé les journaux d'audit pour l'accès aux données, vous pouvez créer un récepteur d'interception au niveau du dossier qui achemine tous les journaux d'audit pour l'accès aux données vers un projet central à des fins d'analyse. Ce récepteur intercepteur empêche également les récepteurs des ressources enfants de router des copies des journaux ailleurs.

    Les récepteurs d'interception empêchent les journaux d'être transmis via le routeur de journaux des ressources enfants, sauf si les journaux correspondent également au récepteur _Required. Étant donné que les journaux sont interceptés, ils ne sont pas pris en compte dans les métriques basées sur les journaux ni dans les règles d'alerte basées sur les journaux des ressources enfants. Vous pouvez afficher les récepteurs d'interception sur la page Routeur de journaux des ressources enfants.

Pour en savoir plus sur la gestion des récepteurs, consultez la section Acheminer les journaux vers des destinations compatibles: gérer les récepteurs.

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

Destinations compatibles

Vous pouvez utiliser des récepteurs agrégés non intercepteurs pour acheminer des entrées de journal au sein des mêmes organisations et dossiers vers les destinations suivantes:

  • Bucket Cloud Logging: permet de stocker des données dans Cloud Logging. Un bucket de journaux peut stocker des entrées de journal reçues par plusieurs projets Google Cloud. Le bucket de journaux peut se trouver dans le même projet que les entrées de journal ou dans un autre projet. Pour savoir comment afficher les entrées de journal stockées dans des buckets de journaux, consultez les pages Présentation de l'interrogation et de l'affichage des journaux et Afficher les journaux acheminés vers des buckets Cloud Logging.

    Vous pouvez combiner vos données de journalisation dans le cloud avec d'autres données en mettant à niveau un bucket de journaux pour utiliser Log Analytics, puis en créant un ensemble de données associé, qui est un ensemble de données en lecture seule pouvant être interrogé par les pages BigQuery Studio et Looker Studio.

  • Ensemble de données BigQuery: permet de stocker les entrées de journal dans un ensemble de données BigQuery enregistrable. L'ensemble de données BigQuery peut se trouver dans le même projet que les entrées de journal ou dans un autre projet. Vous pouvez utiliser les fonctionnalités d'analyse des données massives sur les entrées de journal stockées. Pour savoir comment afficher les entrées de journal routées vers BigQuery, consultez la section Afficher les journaux routés vers BigQuery.

  • Bucket Cloud Storage: permet de stocker les entrées de journal dans Cloud Storage. Le bucket Cloud Storage peut se trouver dans le même projet que les entrées de journal ou dans un autre projet. Les entrées de journaux sont stockées sous forme de fichiers JSON. Pour en savoir plus sur l'affichage des entrées de journal acheminées vers Cloud Storage, consultez la section Afficher les journaux acheminés vers Cloud Storage.
  • Sujet Pub/Sub: permet d'intégrer des tiers. Les entrées de journal sont mises en forme au format JSON, puis acheminées vers un sujet Pub/Sub. Le sujet peut se trouver dans le même projet que les entrées de journal ou dans un autre projet. Pour savoir comment afficher les entrées de journal acheminées vers Pub/Sub, consultez la section Afficher les journaux acheminés vers Pub/Sub.

  • Projet Google Cloud: redirigez les entrées de journal vers un autre projet Google Cloud. Dans cette configuration, les récepteurs du projet de destination traitent les entrées de journal.

Bonnes pratiques pour intercepter les écoutes

Lorsque vous créez un collecteur d'interception, nous vous recommandons d'effectuer les opérations suivantes:

  • Déterminez si les ressources enfants ont besoin d'un contrôle indépendant du routage de leurs entrées de journal. Si une ressource enfant a besoin d'un contrôle indépendant de certaines entrées de journal, assurez-vous que votre évier d'interception ne les achemine pas.

  • Ajoutez des coordonnées à la description d'un intercepteur. Cela peut être utile si les personnes qui gèrent le collecteur d'interception sont différentes de celles qui gèrent les projets dont les entrées de journal sont interceptées.

  • Testez la configuration de votre récepteur en créant d'abord un récepteur agrégé non intercepteur pour vous assurer que les entrées de journal appropriées sont acheminées.

Égouffoirs agrégés et VPC Service Controls

Les limites suivantes s'appliquent lorsque vous utilisez des éponges agrégées et VPC Service Controls:

  • Les récepteurs agrégés peuvent accéder aux données des projets situés à l'intérieur d'un périmètre de service. Pour empêcher les récepteurs agrégés d'accéder aux données d'un périmètre, nous vous recommandons d'utiliser IAM pour gérer les autorisations de journalisation.

  • VPC Service Controls ne permet pas d'ajouter des ressources de dossier ou d'organisation à des périmètres de service. Par conséquent, vous ne pouvez pas utiliser VPC Service Controls pour protéger les journaux au niveau des dossiers et de l'organisation, y compris les journaux agrégés. Pour gérer les autorisations Logging au niveau du dossier ou de l'organisation, nous vous recommandons d'utiliser IAM.

  • Si vous acheminez des journaux à l'aide d'un récepteur au niveau d'un dossier ou d'une organisation vers une ressource protégée par un périmètre de service, vous devez ajouter une règle d'entrée au périmètre de service. La règle d'entrée doit autoriser l'accès à la ressource à partir du compte de service utilisé par le récepteur agrégé. Pour en savoir plus, consultez les articles suivants :

  • Lorsque vous spécifiez une règle d'entrée ou de sortie pour un périmètre de service, vous ne pouvez pas utiliser ANY_SERVICE_ACCOUNT et ANY_USER_ACCOUNT en tant que type d'identité lorsque vous utilisez un récepteur de journaux pour acheminer les journaux vers des ressources Cloud Storage. Toutefois, vous pouvez utiliser ANY_IDENTITY comme type d'identité.

Avant de commencer

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

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

  • Vous disposez de l'un des rôles IAM suivants pour l'organisation ou le dossier Google Cloud à partir duquel vous redirigez 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.

  • Vous disposez d'une ressource dans une destination compatible ou vous pouvez en créer une.

    La destination doit être créée avant le récepteur, via Google Cloud CLI, la console Google Cloud ou les API Google Cloud. Vous pouvez créer la destination dans n'importe quel projet Google Cloud de n'importe quelle organisation, mais vous devez vous assurer que le compte de service du récepteur dispose des autorisations d'écriture sur la destination.

  • 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.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    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é

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. Effectuez l'une des opérations suivantes :

    • Pour créer un récepteur intercepteur, dans le menu Select sink service (Sélectionner un service de récepteur), sélectionnez Google Cloud project (Projet Google Cloud), puis saisissez le nom complet de la destination. Pour en savoir plus sur la syntaxe, consultez la section Formats de chemin de destination.

    • Pour créer un récepteur non intercepteur, accédez au menu Sélectionner un service de récepteur, puis effectuez l'une des opérations suivantes:

      • Pour acheminer les entrées de journal vers un autre projet Google Cloud, sélectionnez Projet Google Cloud, puis saisissez le nom complet de la destination. Pour en savoir plus sur la syntaxe, consultez la section Formats de chemin de destination.

      • Pour acheminer les entrées de journal vers un service appartenant au même projet Google Cloud, sélectionnez l'une des options suivantes:

        • Ensemble de données BigQuery: sélectionnez ou créez l'ensemble de données particulier qui recevra les entrées de journal routées. Vous pouvez également utiliser des tables partitionnées.
        • Bucket Cloud Storage: sélectionnez ou créez le bucket Cloud Storage spécifique qui recevra les entrées de journal routées.
        • Sujet Pub/Sub: sélectionnez ou créez le sujet particulier qui recevra les entrées de journal routées.
        • Splunk: sélectionnez le sujet Pub/Sub du service Splunk.
      • Pour acheminer des entrées de journal vers un service situé dans un autre projet Google Cloud, procédez comme suit:

        1. Sélectionnez Autre ressource.
        2. Saisissez le nom complet de la destination. Pour en savoir plus sur la syntaxe, consultez la section Formats de chemin de destination.

          Par exemple, si la destination de votre récepteur est un sujet Pub/Sub, destination se présente comme suit:

          pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
          
  6. Dans le panneau Sélectionner les journaux à inclure dans le récepteur, effectuez l'une des opérations suivantes:

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

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

  7. Terminez la boîte de dialogue en saisissant une expression de filtre dans le champ Créer un filtre d'inclusion 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 de journalisation. 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.

    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 les entrées de journal d'un projet spécifique d'être acheminées 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 des 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. Accordez au compte de service du récepteur l'autorisation d'écrire des entrées de journal sur la destination de votre récepteur. Pour en savoir plus, consultez la section 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 collecteur créé, vous ne pouvez plus modifier son nom.
    • SINK_DESTINATION: service ou projet vers lequel vous souhaitez acheminer vos entrées de journal.
    • INCLUSION_FILTER: filtre d'inclusion d'un récepteur. Pour obtenir des exemples de filtres, consultez la section Créer des 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"
    

    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 la section Définir les autorisations des destinations.

REST

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

  1. Définissez le champ parent comme l'organisation ou le dossier Google Cloud 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 la section Créer des 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 la section 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 la section Définir les autorisations des destinations.

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

Créer des filtres pour les récepteurs agrégés

Comme tout récepteur, votre récepteur agrégé contient un filtre qui sélectionne les entrées de journal individuelles. Pour obtenir des exemples de filtres que vous pouvez utiliser pour créer votre récepteur agrégé, consultez la section Exemples de requêtes avec l'explorateur de journaux.

Voici quelques exemples de comparaisons de filtres pouvant vous servir si vous utilisez la fonctionnalité de récepteurs agrégés. 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.

Notez que la longueur d'un filtre ne peut pas dépasser 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 un récepteur agrégé, pour chaque ressource enfant de l'organisation ou du dossier, les filtres d'inclusion et d'exclusion du récepteur sont appliqués à chaque entrée de journal envoyée à la ressource enfant. Une entrée de journal qui correspond au filtre d'inclusion et qui n'est pas exclue est acheminée.

Si vous souhaitez que votre récepteur achemine 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 une instance Compute Engine écrite dans un enfant de cette organisation sont acheminées par le collecteur agrégé vers la destination.

Toutefois, il peut arriver que vous souhaitiez 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 acheminer 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 également joindre les instructions avec une clause OR.

Les filtres suivants limitent les entrées de journal à des projets, dossiers ou organisations Google Cloud 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 acheminer uniquement les entrées de journal écrites dans les instances Compute Engine qui ont été écrites 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 des 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 journal depuis une ressource surveillée spécifique dans un projet Google 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 les entrées de journal vers une destination autre qu'un bucket de journaux dans le projet en cours, un compte de service pour ce récepteur est requis. 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 pour la ressource sous-jacente n'existe, Logging crée le compte de service. La journalisation utilise le même compte de service pour tous les collecteurs 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, la journalisation utilise un compte de service partagé pour tous les collecteurs de la ressource sous-jacente.

L'identité de l'auteur d'un collecteur est l'identifiant du compte de service associé à ce collecteur. Tous les récepteurs ont une identité de rédacteur, sauf s'ils écrivent dans un bucket de journaux du projet Google Cloud actuel.

Pour acheminer des entrées de journal 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 évier, 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. La chaîne serviceAccount: fait partie de l'identité du compte de service. Exemple :

      serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
      
    5. Ajoutez le compte de service en tant que principal IAM dans le projet de 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. Sélectionnez le projet de destination.

      3. Cliquez sur Accorder l'accès.

      4. Attribuez au compte de service le rôle IAM requis:

        • Pour les destinations Cloud Storage, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Créateur d'objets Storage (roles/storage.objectCreator).
        • Pour les destinations BigQuery, ajoutez l'identité du rédacteur du récepteur en tant qu'entité principale à l'aide d'IAM, puis attribuez-lui le rôle Éditeur de données BigQuery (roles/bigquery.dataEditor).
        • Pour les destinations Pub/Sub, y compris Splunk, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Éditeur Pub/Sub (roles/pubsub.publisher).
        • Pour les destinations des buckets Logging situées dans des projets Google Cloud différents, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Écrivain de bucket de journaux (roles/logging.bucketWriter).
        • Pour les destinations de projets Google Cloud, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Rédacteur de journaux (roles/logging.logWriter). Plus précisément, un principal a besoin de l'autorisation logging.logEntries.route.

gcloud

  1. Assurez-vous de disposer d'un accès Propriétaire au projet Google 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 évier, 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 collecteur créé, vous ne pouvez plus modifier son nom.

    Exécutez la commande gcloud logging sinks describe:

    gcloud logging sinks describe SINK_NAME
    
  3. Si les détails du sink 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. La chaîne serviceAccount: fait partie de l'identité du compte de service.

    L'identité du rédacteur du compte de service se présente comme suit:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  5. Pour ajouter le compte de service en tant que principal IAM dans le projet de destination, appelez la commande gcloud projects add-iam-policy-binding.

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

    • PROJECT_ID: identifiant du projet.
    • PRINCIPAL: identifiant du compte principal auquel vous souhaitez accorder le rôle. Les identifiants 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 pouvant être utilisés pour PRINCIPAL, consultez la section Identifiants principaux.
    • ROLE: rôle IAM.

      • Pour les destinations Cloud Storage, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Créateur d'objets Storage (roles/storage.objectCreator).
      • Pour les destinations BigQuery, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Éditeur de données BigQuery (roles/bigquery.dataEditor).
      • Pour les destinations Pub/Sub, y compris Splunk, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Éditeur Pub/Sub (roles/pubsub.publisher).
      • Pour les destinations des buckets Logging situées dans des projets Google Cloud différents, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Écrivain de bucket de journaux (roles/logging.bucketWriter).
      • Pour les destinations de projets Google Cloud, ajoutez l'identité du rédacteur du récepteur en tant que principal à l'aide d'IAM, puis attribuez-lui le rôle Rédacteur de journaux (roles/logging.logWriter). Plus précisément, un principal a besoin de l'autorisation logging.logEntries.route.

    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.

Étape suivante