Configurer les vues de journaux dans un bucket de journaux

Ce document explique comment créer et gérer des vues de journaux sur vos buckets Cloud Logging à l'aide de la gcloud CLI. Les vues de journaux vous offrent un contrôle avancé et précis sur l'accès aux journaux dans vos buckets de journaux.

Pour obtenir des informations générales sur le modèle de stockage Logging, consultez la page Présentation du routage et du stockage.

À propos des vues de journaux

Les vues de journaux vous permettent d'accorder à un utilisateur l'accès uniquement à un sous-ensemble des journaux stockés dans un bucket de journaux. Prenons l'exemple d'un scénario dans lequel vous stockez les journaux de votre organisation dans un projet central. Vous pouvez créer une vue de journal pour chaque projet contribuant aux journaux dans le bucket de journaux. Vous pouvez ensuite accorder à chaque utilisateur l'accès à une ou plusieurs vues de journaux, et ainsi limiter les journaux qu'ils peuvent consulter.

Cloud Logging crée automatiquement une vue _AllLogs pour chaque bucket de journaux et une vue _Default pour le bucket de journaux _Default:

  • Vue _AllLogs: vous pouvez consulter tous les journaux du bucket de journaux.
  • Vue _Default: vous pouvez afficher tous les journaux d'audit qui ne concernent pas l'accès aux données dans le bucket de journaux.

Vous ne pouvez pas modifier les vues créées automatiquement par Cloud Logging. Toutefois, vous pouvez supprimer la vue _AllLogs.

Vous pouvez créer jusqu'à 30 vues de journal par bucket de journaux.

Chaque vue de journal contient un filtre qui limite les entrées de journal visibles dans la vue. Les filtres peuvent contenir des opérateurs logiques AND et NOT. Toutefois, ils ne peuvent pas inclure d'opérateurs logiques OR. Les filtres peuvent comparer les valeurs suivantes:

  • Une source de données utilisant la fonction source La fonction source renvoie les entrées de journal d'une ressource particulière dans la hiérarchie des organisations, des dossiers et des projets Google Cloud.

  • Un ID de journal utilisant la fonction log_id La fonction log_id renvoie les entrées de journal correspondant à l'argument LOG_ID donné dans le champ logName.

  • Un type de ressource valide utilisant la comparaison resource.type= FIELD_NAME.

Par exemple, le filtre suivant capture les entrées de journal stdout Compute Engine d'un projet Google Cloud appelé myproject:

source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")

Pour en savoir plus sur la syntaxe de filtrage, consultez Comparaisons.

Avant de commencer

Avant de créer ou de mettre à jour une vue de journal, procédez comme suit:

  1. Si vous ne l'avez pas déjà fait, dans le projet Google Cloud approprié, créez un bucket Logging pour lequel vous souhaitez configurer une vue de journal personnalisée.

  2. Pour obtenir les autorisations nécessaires pour créer, afficher, mettre à jour et supprimer des vues de journaux, demandez à votre administrateur de vous attribuer le rôle IAM Rédacteur de configuration des journaux (roles/logging.configWriter) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

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

  3. Installez Google Cloud CLI.

  4. Déterminez les journaux que vous souhaitez inclure dans la vue. Utilisez ces informations pour spécifier le filtre de la vue du journal.

  5. Déterminez qui doit avoir accès à la vue du journal. Les comptes principaux disposant du rôle roles/logging.viewAccessor peuvent consulter les journaux dans n'importe quelle vue de journal. Cependant, Cloud Logging accepte les conditions IAM. Les conditions vous permettent d'accorder à un compte principal l'accès à une vue de journal spécifique. Pour en savoir plus, consultez Accorder l'accès à une vue de journal.

Créer une vue de journal

Pour créer une vue de journal, exécutez la commande gcloud logging views update. Vous pouvez créer jusqu'à 30 vues de journal par bucket de journaux.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • VIEW_ID: identifiant de la vue du journal.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.
  • FILTER: filtre définissant la vue du journal. Lorsque ce champ est vide, la vue de journal inclut tous les journaux. Par exemple, pour filtrer les journaux d'instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue du journal. Par exemple, vous pouvez saisir la ligne suivante pour la description "Compute logs".

Exécutez la commande gcloud logging views create:

Linux, macOS ou Cloud Shell

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Cette commande ne fournit pas de réponse. Pour confirmer les modifications, vous pouvez exécuter la commande gcloud logging views list.

Répertorier les vues de journaux d'un bucket de journaux

Pour répertorier les vues de journaux créées pour un bucket de journaux, utilisez la commande gcloud logging views list.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.

Exécutez la commande gcloud logging views list:

Linux, macOS ou Cloud Shell

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Les données de réponse sont une liste de vues de journaux. Pour chaque vue de journal, le filtre est affiché avec les dates de création et de dernière mise à jour. Lorsque les dates de création et de mise à jour sont vides, la vue de journal a été créée lors de la création du projet Google Cloud. L'exemple de sortie suivant montre que deux ID de vue, _AllLogs et compute, se trouvent sur le bucket de journaux interrogé:

VIEW_ID: _AllLogs
FILTER:
CREATE_TIME:
UPDATE_TIME:

VIEW_ID: compute
FILTER: resource.type="gce_instance"
CREATE_TIME: 2024-02-20T17:41:17.405162921Z
UPDATE_TIME: 2024-02-20T17:41:17.405162921Z

Accorder l'accès à une vue de journal

Les comptes principaux disposant du rôle roles/logging.viewAccessor sur un projet Google Cloud peuvent consulter les journaux dans n'importe quelle vue de journal. Cependant, Cloud Logging accepte les conditions IAM. Les conditions vous permettent d'accorder à un compte principal l'accès à une vue de journal spécifique.

Les conditions IAM sont spécifiées dans la liaison de rôle pour un projet Google Cloud. Une stratégie d'autorisation est limitée à 20 liaisons de rôle qui incluent le même rôle et le même compte principal, mais des expressions de condition différentes.

Pour ajouter des utilisateurs à une vue afin de leur permettre d'accéder aux journaux, procédez comme suit :

gcloud

  1. Récupérez la stratégie IAM du projet et écrivez-la dans un fichier local au format JSON. Avant d'exécuter la commande suivante, remplacez PROJECT_ID par l'ID du projet qui contient le bucket de journaux:

    gcloud projects get-iam-policy PROJECT_ID --format json > output.json
    
  2. Modifiez le fichier JSON que vous avez créé et ajoutez une condition IAM permettant à l'utilisateur de lire le bucket de journaux que vous avez créé.

    Par exemple, l'exemple suivant spécifie une liaison qui accorde le rôle "roles/logging.viewAccessor" aux membres spécifiés, mais seulement pour une seule vue de journal:

    {
      "bindings": [
        {
          "members": [
            "user:username@gmail.com"
          ],
          "role": "roles/logging.viewAccessor",
          "condition": {
              "title": "Bucket reader condition example",
              "description": "Grants logging.viewAccessor role to user username@gmail.com for the VIEW_ID log view.",
              "expression":
                "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
          }
        }
      ],
      "etag": "BwWd_6eERR4=",
      "version": 3
    }
  3. Mettez à jour la stratégie IAM :

    gcloud projects set-iam-policy PROJECT_ID output.json
    

Console

Dans le projet dans lequel vous avez créé le bucket de journaux, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM :

    Accéder à IAM

  2. Cliquez sur Accorder l'accès.

  3. Dans le champ Nouveaux comptes principaux, ajoutez le compte de messagerie de l'utilisateur.

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

    Ce rôle fournit aux utilisateurs un accès en lecture à toutes les vues. Pour limiter l'accès des utilisateurs à une vue spécifique, ajoutez une condition basée sur le nom de la ressource.

    1. Cliquez sur Ajouter une condition IAM.

    2. Saisissez un titre et une description pour la condition.

    3. Dans le menu déroulant Type de condition, sélectionnez Ressource > Nom.

    4. Dans le menu déroulant Opérateur, sélectionnez est.

    5. Dans le champ Valeur, saisissez l'ID de la vue des journaux, en incluant le chemin d'accès complet à la vue.

      Exemple :

      projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
    6. Cliquez sur Enregistrer pour ajouter la condition.

  5. Cliquez sur Enregistrer pour définir les autorisations.

Mettre à jour une vue de journal

Pour mettre à jour ou modifier une vue de journal, utilisez la commande gcloud logging views update. Si vous ne connaissez pas l'ID de la vue, consultez la section Répertorier les vues de journaux.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • VIEW_ID: identifiant de la vue du journal.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.
  • FILTER: filtre définissant la vue du journal. Lorsque ce champ est vide, la vue de journal inclut tous les journaux. Par exemple, pour filtrer les journaux d'instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue du journal. Par exemple, vous pouvez saisir la ligne suivante pour la description "New description for the log view".

Exécutez la commande gcloud logging views update:

Linux, macOS ou Cloud Shell

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Cette commande ne fournit pas de réponse. Pour confirmer les modifications, vous pouvez exécuter la commande gcloud logging views describe.

Supprimer une vue de journal

Pour supprimer une vue de journal, exécutez la commande gcloud logging views delete. Si vous ne connaissez pas l'ID de la vue, consultez la section Répertorier les vues de journaux.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • VIEW_ID: identifiant de la vue du journal.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.

Exécutez la commande gcloud logging views delete:

Linux, macOS ou Cloud Shell

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

La réponse confirme la suppression. L'exemple suivant montre la réponse à la suppression d'une vue de journal nommée tester:

Deleted [tester].

Décrire une vue de journal

Pour obtenir des informations détaillées sur une vue de journal, exécutez la commande gcloud logging views describe. Si vous ne connaissez pas l'ID de la vue, consultez la section Répertorier les vues de journaux.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • VIEW_ID: identifiant de la vue du journal.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.

Exécutez la commande gcloud logging views describe:

Linux, macOS ou Cloud Shell

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

La réponse inclut toujours la description et le nom complet de la vue de journal. Il inclut également le filtre, lorsque le champ de filtre n'est pas vide. Voici un exemple de réponse:

createTime: '2024-02-20T17:41:17.405162921Z'
filter: resource.type="gce_instance"
name: projects/my-project/locations/global/buckets/my-bucket/views/compute
updateTime: '2024-02-20T17:41:17.405162921Z'

Afficher les journaux associés à une vue de journal

Pour afficher les journaux dans une vue de journal, assurez-vous de disposer du rôle Accesseur de vue des journaux (roles/logging.viewAccessor) pour la vue de journal:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Explorateur de journaux :

    Accéder à l'explorateur de journaux

  2. Cliquez sur Affiner le champ d'application pour afficher le panneau Affiner le champ d'application. Vous pouvez alors sélectionner le bucket de journaux et la vue de journaux que vous souhaitez utiliser pour afficher vos journaux.

Panneau "Affiner le champ d'application"

Pour en savoir plus, consultez la documentation sur l'explorateur de journaux.

Étapes suivantes

Configurer l'accès au niveau du champ