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.

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

Contrôler l'accès à une vue de journal

Cloud Logging utilise des stratégies IAM pour contrôler qui a accès aux vues de journaux. Des stratégies IAM peuvent exister au niveau des ressources, des projets, des dossiers et de l'organisation. Pour Cloud Logging, vous pouvez créer une stratégie IAM pour chaque vue de journal. Pour déterminer si un compte principal est autorisé à effectuer une action, IAM évalue toutes les stratégies applicables, avec la première évaluation au niveau des ressources.

Les comptes principaux ayant le rôle roles/logging.viewAccessor sur un projet Google Cloud peuvent accéder aux vues et aux journaux de n'importe quel bucket de journaux du projet.

Pour limiter un compte principal à une vue de journal spécifique, effectuez l'une des opérations suivantes:

  • Créez une stratégie IAM pour la vue de journal, puis ajoutez une liaison IAM à cette stratégie qui accorde au compte principal l'accès à la vue de journal.

    Si vous créez un grand nombre de vues de journaux, nous vous recommandons cette approche.

  • Accordez au compte principal le rôle IAM roles/logging.viewAccessor, mais associez une condition IAM à l'autorisation. Le fichier de stratégie d'un projet Google Cloud peut contenir au maximum 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 en savoir plus, consultez la section de ce document intitulée Accorder l'accès à une vue de journal.

Vues de journaux créées automatiquement

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.

Filtre de vue du journal

Chaque vue de journal contient un filtre qui détermine les entrées de journal qui y sont visibles. 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 dont vous avez besoin pour créer et gérer des vues de journaux, ainsi que pour accorder l'accès à ces vues, demandez à votre administrateur de vous attribuer les rôles IAM suivants 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 de journal et si vous souhaitez ajouter des liaisons à la stratégie IAM de la vue de journal ou du projet Google Cloud. Pour en savoir plus, consultez la section Contrôler 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.

Accordez ensuite aux comptes principaux l'accès à la vue de votre journal.

Accorder l'accès à une vue de journal

Pour limiter un compte principal à une vue de journaux spécifique d'un bucket de journaux défini par l'utilisateur, ajoutez une liaison de rôle à la vue de journaux ou au projet Google Cloud qui stocke le bucket de journaux. Lorsque vous créez un grand nombre de vues de journaux, nous vous recommandons d'ajouter des liaisons à la vue de journal.

Vue du journal: ajouter des liaisons de rôles

Cette section explique comment ajouter une liaison de rôle à une vue de journal et comment répertorier les liaisons associées à une vue de journal.

Ajouter une liaison de rôle à une vue de journal

Pour mettre à jour le fichier de stratégie IAM d'une vue de journal, procédez comme suit.

gcloud

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

  • VIEW_ID: identifiant de la vue du journal.
  • 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. Exemple :user:my-user@example.com Pour obtenir la liste complète des formats acceptés par PRINCIPAL_ID, consultez la section Identifiants principaux.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.

Exécutez la commande gcloud logging views add-iam-policy-binding:

Linux, macOS ou Cloud Shell

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Voici un exemple de réponse à l'ajout d'une liaison unique:

Updated IAM policy for logging view [projects/PROJECT_ID/locations/global/buckets/BUCKET_NAME/views/VIEW_ID].
bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Console

Non compatible. Pour ajouter une liaison à une vue de journal, utilisez la Google Cloud CLI.

Répertorier les liaisons de rôles dans une vue de journal

Pour répertorier les liaisons IAM pour une vue de journal, procédez comme suit.

gcloud

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 get-iam-policy:

Linux, macOS ou Cloud Shell

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Lorsqu'une vue de journal ne contient aucune liaison, la réponse ne contient qu'un champ etag. Voici une illustration de la réponse lorsqu'une vue de journal contient une seule liaison:

bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Console

Non compatible. Pour répertorier les liaisons pour une vue de journal, utilisez la Google Cloud CLI.

Projet Google Cloud: ajouter des liaisons de rôles

Cette section explique comment ajouter une liaison de rôle à un projet Google Cloud et répertorier les liaisons associées à un projet.

Ajouter une liaison de rôle à un projet

Pour ajouter une liaison de rôle au fichier de stratégie IAM d'un projet Google Cloud, procédez comme suit.

gcloud

  1. Créez un fichier JSON ou yaml avec votre condition.

    Par exemple, vous pouvez créer un fichier nommé condition.yaml avec le contenu suivant:

    expression: "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
    title: "My title"
    description: "My description"
    
  2. Facultatif: Pour vérifier que le fichier JSON ou YAML est correctement formaté, exécutez la commande suivante:

    gcloud alpha iam policies lint-condition --condition-from-file=condition.yaml
    
  3. Mettez à jour la stratégie IAM sur le projet Google Cloud en appelant la méthode 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. Exemple :user:my-user@example.com Pour obtenir la liste complète des formats acceptés par PRINCIPAL_ID, consultez la section Identifiants principaux.

    Exécutez la commande gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --condition-from-file=condition.yaml
    

    La réponse à la commande précédente inclut toutes les liaisons de rôles.

    - condition:
        description: My description
        expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
        title: My title
      members:
      - PRINCIPAL
      role: roles/logging.viewAccessor
    

Console

Dans le projet dans lequel vous avez créé le bucket de 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. 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.

Répertorier les liaisons de rôles sur un projet

Pour répertorier les liaisons de rôles sur un projet Google Cloud, procédez comme suit.

gcloud

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

  • PROJECT_ID: identifiant du projet.

Exécutez la commande gcloud projects get-iam-policy:

gcloud projects get-iam-policy PROJECT_ID

La réponse à la commande précédente inclut toutes les liaisons de rôles.

- condition:
    description: My description
    expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
    title: My title
  members:
  - PRINCIPAL
  role: roles/logging.viewAccessor

Console

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.

La page IAM répertorie tous les comptes principaux, leurs rôles IAM et toutes les conditions associées à ces rôles.

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

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