Agréger et stocker les journaux de votre organisation

Ce document explique comment gérer les entrées de journal générées par les ressources contenues dans votre organisation Google Cloud à l'aide d'un collecteur agrégé non intercepteur.

Vous pouvez configurer un collecteur agrégé pour qu'il intercepte ou non les entrées de journal, selon que vous souhaitez contrôler les entrées de journal pouvant être interrogées ou acheminées via les collecteurs des ressources enfants. Dans ce tutoriel, vous allez créer un récepteur agrégé qui achemine les journaux d'audit de votre organisation vers un projet Google Cloud, qui achemine ensuite les journaux d'audit agrégés vers un bucket de journaux.

Pour en savoir plus sur les récepteurs agrégés, consultez la section Générer et acheminer des journaux au niveau de l'organisation et des dossiers vers des destinations compatibles.

Dans ce tutoriel, vous allez effectuer les étapes suivantes:

  1. Commencez par créer un bucket de journaux et un récepteur de journaux dans le projet Google Cloud dans lequel vous souhaitez stocker vos entrées de journal agrégées.

  2. Vous allez ensuite créer un récepteur agrégé non intercepteur au niveau de l'organisation pour acheminer les entrées de journal vers le projet Google Cloud contenant le bucket de journaux.

  3. Vous configurez ensuite l'accès en lecture aux vues de journaux sur le nouveau bucket de journaux.

  4. Enfin, vous interrogez et affichez vos entrées de journal depuis la page de l'explorateur de journaux.

Avant de commencer

Vérifiez les éléments suivants :

  • Pour obtenir les autorisations nécessaires pour configurer un collecteur agrégé, demandez à votre administrateur de vous accorder les rôles IAM suivants dans votre organisation:

    • Pour créer des buckets et des récepteurs de journaux dans un projet : Rédacteur de configuration des journaux (roles/logging.configWriter) : votre projet
    • Pour créer un récepteur agrégé : Rédacteur de configuration des journaux (roles/logging.configWriter) : votre organisation
    • Pour attribuer des rôles à des principaux : Propriétaire (roles/owner) : votre projet

    Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

  • Si vous utilisez VPC Service Controls, vous devez ajouter une règle d'entrée au périmètre de service. Pour en savoir plus sur les limites de VPC Service Controls, consultez la section Évacuations agrégées et limites de VPC Service Controls.
  • 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.

Créer un bucket de journaux

Les buckets de journaux stockent les entrées de journal acheminées à partir d'autres projets, dossiers ou organisations Google Cloud. Pour en savoir plus, consultez la section Configurer les buckets de journaux.

Pour créer le bucket de journaux dans le projet Google Cloud dans lequel vous souhaitez agréger des entrées de journal, procédez comme suit:

  1. Ouvrez une interface système.

    Par exemple, pour utiliser Cloud Shell, procédez comme suit:

    1. Accédez à Google Cloud Console :

      Accéder à Google Cloud Console

    2. Dans la barre d'outils, cliquez sur  Activer Cloud Shell.
  2. Dans le shell, exécutez la commande gcloud logging buckets create.

    Avant d'exécuter la commande suivante, effectuez les remplacements suivants:

    • BUCKET_NAME: nom du bucket de journaux.
    • LOCATION: emplacement du bucket de journaux. Une fois le bucket de journaux créé, vous ne pouvez plus modifier son emplacement.
    • PROJECT_ID: identifiant du projet dans lequel créer le bucket de journaux.

    Exécutez la commande gcloud logging buckets create:

     gcloud logging buckets create BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID
    
  3. Vérifiez que le bucket de journaux a été créé:

    gcloud logging buckets list --project=PROJECT_ID
    

    La réponse de la commande est une liste des buckets de journaux de votre projet.

  4. Les buckets de journaux sont associés à des durées de conservation configurables. Si vous souhaitez définir la période de conservation des entrées de journal dans votre bucket de journaux, utilisez la commande gcloud logging buckets update. Par exemple, la commande suivante étend la conservation des entrées de journal stockées dans le bucket de journaux à 365 jours:

    gcloud logging buckets update BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID \
       --retention-days=365
    

    Pour en savoir plus sur les options, consultez gcloud logging buckets update.

Créer le récepteur de journaux au niveau du projet

Pour acheminer des entrées de journal vers un bucket de journaux, vous devez créer un récepteur. Un récepteur inclut un filtre d'inclusion, des filtres d'exclusion et une destination. Dans ce tutoriel, vous allez configurer un filtre d'inclusion et la destination de votre nouveau bucket de journaux. Votre récepteur ne contient aucun filtre d'exclusion. Pour en savoir plus sur les récepteurs, consultez la section Acheminer les journaux vers des destinations compatibles.

Pour créer un récepteur qui achemine les entrées de journal vers le bucket de journaux que vous venez de créer, exécutez la commande gcloud logging sinks create.

Avant d'exécuter la commande suivante, effectuez les remplacements suivants:

  • PROJECT_LEVEL_SINK_NAME: nom du récepteur de journaux au niveau du projet.
  • SINK_DESTINATION: bucket de journaux vers lequel vos entrées de journal sont acheminées. Le format du chemin de destination d'un bucket de journaux est le suivant:

    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • PROJECT_ID: identifiant du projet dans lequel créer le collecteur de journaux. Définissez cette option sur le même projet que celui dans lequel vous avez créé le bucket de journaux.

  • Incluez les options suivantes:

    • --log-filter : cette option permet de définir un filtre correspondant aux entrées de journal que vous souhaitez inclure dans votre récepteur. Dans ce tutoriel, le filtre est défini pour sélectionner toutes les entrées du journal d'audit. Si vous ne définissez pas de filtre, toutes les entrées de journal de votre projet Google Cloud sont acheminées vers la destination.
    • --description: utilisez cette option pour décrire l'objectif ou le cas d'utilisation du récepteur.

Exécutez la commande gcloud logging sinks create:

gcloud logging sinks create PROJECT_LEVEL_SINK_NAME SINK_DESTINATION
--project=PROJECT_ID
--log-filter='logName:cloudaudit.googleapis.com' \
--description="Audit logs from my organization" \

Créer le récepteur agrégé

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.

Dans ce tutoriel, vous allez créer un collecteur agrégé non intercepteur. Cela signifie que chaque entrée de journal acheminée par le récepteur agrégé est également acheminée par les récepteurs de la ressource d'où provient l'entrée de journal. Par exemple, un journal d'audit provenant d'un projet est acheminé par le récepteur agrégé et les récepteurs de ce projet. Vous pouvez donc stocker plusieurs copies d'une entrée de journal.

Vous pouvez créer des sinks d'interception. Pour en savoir plus, consultez la section Générer et acheminer des journaux au niveau de l'organisation et des dossiers vers des destinations compatibles.

Configurer le récepteur au niveau de l'organisation

Pour créer un récepteur agrégé qui n'intercepte pas et qui achemine les entrées de journal vers un projet, procédez comme suit:

  1. Exécutez la commande gcloud logging sinks create.

    Avant d'exécuter 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.
    • PROJECT_ID: identifiant du projet qui stocke le bucket de journaux.
    • ORGANIZATION_ID: identifiant de l'organisation.

    Exécutez la commande gcloud logging sinks create:

    gcloud logging sinks create SINK_NAME \
    logging.googleapis.com/projects/PROJECT_ID  \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="Audit logs from my organization" \
      --organization=ORGANIZATION_ID \
      --include-children
    

    L'option --include-children est importante. Cette option garantit que les entrées de journal de tous les projets et dossiers Google Cloud de votre organisation sont acheminées. Pour en savoir plus, consultez la section Générer et acheminer des journaux au niveau de l'organisation vers des destinations compatibles.

  2. Vérifiez que le récepteur a été créé:

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. Obtenez le nom du compte de service :

    gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID
    

    La sortie ressemble à ceci :

    writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.com
    
  4. Copiez la valeur du champ serviceAccount dans le presse-papiers.

Accorder l'accès au récepteur

Après avoir créé le récepteur agrégé, vous devez autoriser le récepteur à écrire des entrées de journal dans le projet que vous avez défini comme destination. Vous pouvez accorder l'autorisation à l'aide de la console Google Cloud ou en modifiant la stratégie IAM (Identity and Access Management), comme décrit dans la section Définir des autorisations de destination.

Pour autoriser votre récepteur à écrire des entrées de journal, procédez comme suit:

  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 Google Cloud contenant votre bucket de journaux.

  3. Cliquez sur Accorder l'accès, puis ajoutez le compte de service en tant que nouveau compte principal. N'incluez pas le préfixe serviceAccount:.

  4. Dans le menu Sélectionner un rôle, sélectionnez Rédacteur de journaux.

  5. Cliquez sur Enregistrer.

Générer des entrées de journal pour faciliter la validation du récepteur

Pour vérifier que votre récepteur agrégé est correctement configuré, procédez comme suit:

  1. Générez des entrées de journaux d'audit à transmettre à votre bucket de journaux.

    • Si votre organisation comporte plusieurs projets Google Cloud, vous disposez peut-être d'un trafic de journaux d'audit suffisant, et vous n'avez donc pas besoin d'en créer pour validation. Passez à l'étape suivante.

    • Sinon, accédez à un autre projet, créez une instance de VM Compute Engine, puis supprimez l'instance que vous avez créée. Les journaux d'audit sont écrits lorsqu'une VM est créée, démarrée et supprimée.

  2. Suivez la procédure décrite dans la section Afficher les journaux sur la page "Explorateur de journaux" pour afficher vos journaux d'audit. Veillez à sélectionner la vue _AllLogs.

Configurer l'accès en lecture à une vue de journaux sur un bucket de journaux

Lorsque vous créez un bucket de journaux, Cloud Logging crée automatiquement une vue de journal nommée _AllLogs. Cette vue inclut chaque entrée de journal stockée dans le bucket de journaux.

Pour limiter l'accès d'un principal à des entrées de journal spécifiques, créez une vue de journal, puis effectuez l'une des opérations suivantes:

  • Attribuez-lui le rôle roles/logging.viewAccessor avec une condition IAM qui limite l'octroi à la vue des journaux.

  • Dans la stratégie IAM associée à la vue des journaux, accordez un accès au compte principal. Nous vous recommandons d'utiliser cette approche lorsque vous créez un grand nombre de vues de journaux.

Pour en savoir plus sur ces deux approches, consultez la page Contrôler l'accès à une vue de journal.

Dans les étapes suivantes, vous attribuez à un principal le rôle roles/logging.viewAccessor, ainsi qu'une condition IAM qui limite l'octroi à la vue nommée _AllLogs:

  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 Google Cloud contenant le bucket de journaux.

  3. Cliquez sur Ajouter.

  4. Dans le champ Nouveau compte principal, ajoutez un compte principal.

  5. Dans le menu Sélectionner un rôle, sélectionnez Accesseur de vues de journaux.

    Si vous n'ajoutez pas de condition à ce rôle, le compte principal a accès à toutes les vues de journaux de tous les buckets de journaux définis par l'utilisateur dans le projet Google Cloud.

  6. Ajoutez une condition IAM à la liaison:

    1. Cliquez sur Ajouter une condition, puis saisissez un titre et une description.
    2. Dans le menu Type de condition, faites défiler la liste jusqu'à Ressource, puis sélectionnez Nom.
    3. Dans le menu Opérateur, sélectionnez Se termine par.
    4. Dans le champ Valeur, saisissez le nom complet de la vue des journaux:

      locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs
      
    5. Cliquez sur Enregistrer pour enregistrer la condition.

  7. Cliquez sur Enregistrer pour enregistrer la liaison.

Afficher les entrées de journal sur la page de l'explorateur de journaux

Pour afficher les entrées de journal dans votre bucket de journaux, procédez comme suit:

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

    Accéder à l'explorateur 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 Affiner le niveau d'accès.

  3. Dans le panneau Affiner le champ d'application, sélectionnez Vue des journaux.

  4. Sélectionnez la ou les vues de journal dont vous souhaitez afficher les entrées. Par exemple, pour afficher toutes les entrées de journal, sélectionnez la vue _AllLogs.

  5. Cliquez sur Appliquer.

    L'explorateur de journaux s'actualise pour afficher les entrées de journal de votre bucket de journaux. Pour en savoir plus sur l'utilisation de l'explorateur de journaux, consultez la page Utiliser l'explorateur de journaux.