Configurer des vues de journaux sur un bucket de journaux

Ce document explique comment créer et gérer des vues de journaux dans vos buckets Cloud Logging à l'aide de la gcloud CLI. Les vues de journaux vous permettent de contrôler de manière précise et avancée qui a accès aux journaux dans vos buckets de journaux.

Pour en savoir plus sur le modèle de stockage de la journalisation, 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 un accès à un sous-ensemble uniquement des journaux stockés dans un bucket de journaux. Par exemple, imaginons que vous stockiez les journaux de votre organisation dans un projet central. Vous pouvez créer une vue de journal pour chaque projet qui fournit des journaux au 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 journaux

Cloud Logging utilise des stratégies IAM pour contrôler qui a accès aux vues des journaux. Les stratégies IAM peuvent exister au niveau des ressources, des projets, des dossiers et des organisations. 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, la première évaluation étant effectuée au niveau de la ressource.

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

Pour accorder à un principal un accès à une seule vue de journal spécifique, procédez comme suit:

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

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

  • Attribuez au principal le rôle IAM roles/logging.viewAccessor sur le projet contenant la vue des journaux, mais joignez une condition IAM pour limiter l'attribution à la vue des journaux spécifique. Si vous omettez la condition, vous accordez au principal un accès à toutes les vues de journaux. Le fichier de stratégie d'un projet Google Cloud est limité à 20 liaisons de rôle qui incluent le même rôle et le même compte principal, mais différentes expressions de condition.

Pour en savoir plus, consultez la section Accorder l'accès à une vue de journal de ce document.

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 afficher tous les journaux du bucket de journaux.
  • Vue _Default: vous pouvez afficher tous les journaux d'audit autres que ceux d'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 des journaux

Chaque vue de journal contient un filtre qui détermine 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 l'une des 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 spécifié 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 la section Comparaisons.

Avant de commencer

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

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

  2. Pour obtenir les autorisations nécessaires pour créer et gérer des vues de journaux, et pour accorder l'accès à ces vues, demandez à votre administrateur de vous accorder les rôles IAM suivants sur 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.

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

  4. Déterminez les journaux que vous souhaitez inclure dans la vue. Vous utiliserez ces informations pour spécifier le filtre de la vue des journaux.

  5. Déterminez qui doit avoir accès à la vue des journaux et si vous souhaitez ajouter des liaisons à la stratégie IAM de la vue des journaux ou du projet Google Cloud. Pour en savoir plus, consultez la page Contrôler l'accès à une vue de journal.

Créer une vue de journal

Pour créer une vue des journaux, utilisez la commande gcloud logging views create. 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 qui définit la vue du journal. Lorsqu'elle est vide, la vue des journaux inclut tous les journaux. Par exemple, pour filtrer par journaux des instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue des journaux. Par exemple, vous pouvez saisir ce qui suit 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 aucune réponse. Pour confirmer les modifications, vous pouvez exécuter la commande gcloud logging views list.

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

Accorder l'accès à une vue de journal

Pour limiter un principal à une vue de journal spécifique sur un bucket de journaux défini par l'utilisateur, vous pouvez utiliser deux approches:

  • Vous pouvez utiliser le fichier de stratégie IAM de la vue des journaux.

  • Vous pouvez utiliser le fichier de stratégie IAM du projet Google Cloud qui stocke le bucket de journaux, ainsi qu'une condition IAM.

Lorsque vous créez un grand nombre de vues de journaux, nous vous recommandons de contrôler l'accès à l'aide du fichier de règles IAM de la vue de journaux.

Vue des journaux: ajouter des liaisons de rôle

Cette section explique comment utiliser le fichier de règles IAM pour une vue de journal afin de contrôler les utilisateurs ayant accès aux entrées de journal de cette vue de journal. Lorsque vous utilisez cette approche, vous ajoutez une liaison au fichier de stratégie de la vue des journaux. La liaison accorde au compte principal spécifié l'accès à la vue des journaux.

Cette section explique également comment lister la liaison de rôle contenue dans le fichier de stratégie IAM pour 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. 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.
  • 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 

L'exemple suivant illustre la réponse lorsqu'une seule liaison est ajoutée:

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.

Pour provisionner des associations IAM pour une vue des journaux à l'aide de Terraform, plusieurs ressources différentes sont disponibles:

  • google_logging_log_view_iam_policy
  • google_logging_log_view_iam_binding
  • google_logging_log_view_iam_member

Pour en savoir plus, consultez la page Stratégie IAM pour LogView dans Cloud Logging.

Console

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

Lister les liaisons de rôle dans une vue des journaux

Pour lister les liaisons 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.
  • 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. L'exemple suivant illustre la réponse lorsqu'une vue de journal ne contient qu'une seule liaison:

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

Terraform

Pour lister les associations IAM pour les vues de journaux à l'aide de Terraform, utilisez la source de données google_logging_log_view_iam_policy.

Console

Non compatible Pour lister les liaisons d'une vue de journal, utilisez la Google Cloud CLI.

Projet Google Cloud: ajouter des liaisons de rôle

Cette section explique comment ajouter une liaison de rôle à un projet Google Cloud et comment lister les liaisons associées à un projet. Lorsque vous utilisez cette approche, pour limiter un compte principal à l'accès aux entrées de journal stockées dans une vue de journal spécifique, vous devez ajouter une condition IAM à l'octroi.

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

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

    - 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
    

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.

Pour provisionner des associations IAM pour des projets à l'aide de Terraform, plusieurs ressources différentes sont disponibles:

  • google_project_iam_policy
  • google_project_iam_binding
  • google_project_iam_member

Pour en savoir plus, consultez la page Stratégie IAM pour les projets.

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électionner 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ôle d'un projet

Pour lister les liaisons de rôle d'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ôle.

- 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

Terraform

Pour lister les associations IAM pour des projets à l'aide de Terraform, utilisez la source de données google_project_iam_policy.

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 liste tous les comptes principaux, leurs rôles IAM et les conditions associées à ces rôles.

Lister les vues de journaux sur un bucket de journaux

Pour lister 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 s'affiche, ainsi que 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 des journaux a été créée lorsque le projet Google Cloud a été créé. L'exemple de sortie suivant montre qu'il existe deux ID de vue, _AllLogs et compute, 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 Lister les vues de journal.

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 qui définit la vue du journal. Lorsqu'elle est vide, la vue des journaux inclut tous les journaux. Par exemple, pour filtrer par journaux des instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue des journaux. Par exemple, vous pouvez saisir ce qui suit 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 aucune réponse. Pour confirmer les modifications, vous pouvez exécuter la commande gcloud logging views describe.

Supprimer une vue de journal

Lorsque vous n'avez plus besoin d'une vue de journal que vous avez créée, vous pouvez la supprimer. Toutefois, avant de supprimer une vue des journaux, nous vous recommandons de vérifier qu'elle n'est pas référencée par une autre ressource, telle qu'une requête enregistrée.

Vous ne pouvez pas supprimer la vue de journal _Default du bucket de journaux _Default.

Pour supprimer une vue de journaux, procédez comme suit:

  1. Recommandation: Examinez votre projet Google Cloud pour vous assurer que la vue des journaux n'est pas référencée. Pensez à examiner les éléments suivants:

    • Les requêtes sont exécutées à partir des pages Explorateur de journaux ou Analyse de journaux enregistrées ou partagées.
    • Tableaux de bord personnalisés
  2. Exécutez la commande gcloud logging views delete. Si vous ne connaissez pas l'ID de la vue, consultez Lister les vues de journal.

    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. Par exemple, l'exemple suivant présente la réponse à la suppression d'une vue de journal nommée tester:

    Deleted [tester].
    

Décrire une vue de journal

Pour récupérer des informations détaillées sur une vue des journaux, utilisez la commande gcloud logging views describe. Si vous ne connaissez pas l'ID de la vue, consultez Lister les vues de journal.

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 des journaux. Elle 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 des journaux

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

  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. Dans la barre d'outils, cliquez sur Affiner la portée, sur Vue des journaux, puis sélectionnez les vues des journaux.

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

Étape suivante

Pour savoir comment contrôler l'accès à des champs spécifiques dans une entrée de journal, consultez la section Configurer l'accès au niveau des champs.