Agréger et stocker les journaux de votre organisation

Ce document explique comment gérer les journaux générés par les ressources contenues dans votre organisation Google Cloud à l'aide d'un récepteur agrégé non interceptant.

Vous pouvez configurer un récepteur agrégé de sorte qu'il intercepte ou non, selon que vous souhaitez contrôler les journaux pouvant être interrogés ou acheminés via les récepteurs 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. Ensuite, dans le projet Google Cloud, vous créez un récepteur de journaux qui achemine les journaux d'audit agrégés vers un bucket de journaux.

Pour en savoir plus sur les récepteurs agrégés, consultez Classer et acheminer les journaux au niveau de l'organisation et du dossier 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 journaux agrégés.

  2. Ensuite, vous allez créer un récepteur agrégé non interceptant au niveau de l'organisation pour acheminer les journaux vers le projet Google Cloud.

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

  4. Enfin, vous allez interroger et afficher vos journaux à partir de la page "Explorateur de journaux".

Avant de commencer

Vérifiez les éléments suivants :

  • Pour obtenir les autorisations nécessaires pour attribuer des rôles aux comptes principaux, demandez à votre administrateur de vous attribuer le rôle IAM Propriétaire (roles/owner) sur un projet.

  • 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 page Récepteurs agrégés et limites de VPC Service Controls.

Créer un bucket de journaux

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

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

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Dans un terminal Cloud 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.
    • 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 bien été créé:

    gcloud logging buckets list --project=PROJECT_ID
    
  4. Facultatif: Définissez la durée de conservation des journaux dans le bucket. Cet exemple étend la conservation des journaux stockés dans le bucket à 365 jours :

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

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

Vous allez acheminer les entrées de journal vers un bucket de journaux en créant un récepteur. Un récepteur inclut un filtre d'inclusion, un filtre d'exclusion facultatif et une destination. Dans ce tutoriel, la destination est votre nouveau bucket de journaux. Pour en savoir plus sur les récepteurs, consultez la section Acheminer les journaux vers les 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, effectuez les remplacements suivants et exécutez la commande gcloud logging sinks create:

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

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

  • Incluez les indicateurs suivants:

    • --log-filter : utilisez cette option pour 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, tous les journaux de votre projet Google Cloud sont acheminés vers la destination.
    • --description : utilisez cette option pour décrire l'objectif ou le cas d'utilisation du récepteur.

    exécutez la commande suivante :

    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 des ressources contenues dans une organisation ou un dossier vers une destination.

Dans ce tutoriel, vous allez créer un récepteur agrégé non interceptant. 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. Par conséquent, vous pouvez stocker plusieurs copies d'une entrée de journal.

Vous pouvez créer des récepteurs d'interception. Pour en savoir plus, consultez la section Classer et acheminer les journaux au niveau de l'organisation et du dossier pour prendre en charge des destinations.

Configurer le récepteur au niveau de l'organisation

Pour créer un récepteur agrégé non interceptant 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.
    • PROJECT_ID: identifiant du projet dans lequel le bucket de journaux est stocké.
    • 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 pour que les journaux de tous les projets Google Cloud de votre organisation soient également inclus. 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 votre presse-papiers.

Accorder l'accès au récepteur

Après avoir créé le récepteur agrégé, vous devez l'autoriser à écrire des journaux dans le projet que vous avez défini comme destination. Vous pouvez accorder une 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 les autorisations de destination.

Pour autoriser votre récepteur à écrire des journaux, 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.

  4. Dans le champ Nouveaux comptes principaux, ajoutez le compte de service sans le préfixe serviceAccount:.

  5. Dans le menu Sélectionnez un rôle, choisissez Rédacteur de journaux.

  6. Cliquez sur Enregistrer.

Générer des journaux 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érer des journaux d'audit qui doivent être acheminés vers votre bucket de journaux.

    • Si votre organisation comporte de nombreux projets Google Cloud, le trafic des journaux d'audit peut être suffisant pour éviter d'en créer un à des fins de 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 de la section intitulée Afficher les journaux dans la page "Explorateur de journaux" pour afficher les journaux d'audit. Veillez à sélectionner la vue _AllLogs.

Configurer l'accès en lecture à une vue de journal 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 toutes les entrée de journal stockées dans le bucket de journaux.

Pour empêcher un compte principal d'accéder à 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, ainsi qu'une condition IAM qui limite l'attribution à la vue de journal.

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

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

Dans les étapes suivantes, vous allez attribuer à un compte principal le rôle roles/logging.viewAccessor ainsi qu'une condition IAM qui limite l'attribution à 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.

    Assurez-vous d'avoir sélectionné le projet Google Cloud que vous utilisez pour agréger les journaux.

  2. Cliquez sur Ajouter.

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

  4. Dans le menu Sélectionnez un rôle, choisissez Accesseur de vues de journaux.

  5. 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 page 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 de journal:

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

  6. Cliquez sur Enregistrer pour enregistrer la liaison.

Afficher les journaux dans la page "Explorateur de journaux"

Pour afficher les journaux 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 niveau d'accès, sélectionnez Recherche par espace de stockage.

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

  5. Cliquez sur Appliquer.

    L'explorateur de journaux est actualisé pour afficher les journaux 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.