Configurer les 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 précisément qui a 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'autoriser un utilisateur à accéder uniquement à un sous-ensemble de 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 journaux pour chaque projet qui fournit des 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'il peut 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. Elles 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é pour une action, IAM évalue toutes les stratégies applicables, la première évaluation au niveau de la ressource.

Les comptes principaux disposant du 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 un accès à la vue de journal.

    Cette approche est recommandée si vous créez un grand nombre de vues de journaux.

  • Attribuez au compte principal le rôle IAM roles/logging.viewAccessor, mais associez une condition IAM à l'attribution. Il existe une limite de 20 liaisons de rôles dans le fichier de stratégie d'un projet Google Cloud 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 afficher tous les journaux du bucket de journaux.
  • Vue _Default: vous pouvez afficher tous les journaux d'audit ne concernant 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 de journal

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, mais 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 à l'aide de 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 page 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, créez un bucket Logging dans le projet Google Cloud approprié 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 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. Ces informations vous permettent de spécifier le filtre de la vue de 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 au 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, utilisez 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 de 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 de journal inclut tous les journaux. Par exemple, pour filtrer par journaux d'instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue de journal. 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 renvoie pas de réponse. Pour confirmer les modifications, vous pouvez exécuter la commande gcloud logging views list.

Ensuite, accordez aux comptes principaux l'accès à votre vue de journaux.

Accorder l'accès à une vue de journal

Pour limiter un compte principal à une vue de journal spécifique sur 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 de 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 de journal.
  • PRINCIPAL: identifiant du compte principal auquel vous souhaitez accorder le rôle. Les identifiants des comptes 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 que PRINCIPAL_ID peut avoir, 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 à appliquer lorsqu'une liaison unique 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 de journal à 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 Cloud Logging LogView.

Console

Non compatible. Pour ajouter des liaisons à 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 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 de 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 un exemple de réponse lorsqu'une vue de journal contient une seule liaison:

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

Terraform

Pour répertorier 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 répertorier les liaisons d'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 des comptes 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 que PRINCIPAL_ID peut avoir, 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
    

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électionnez un rôle, sélectionnez Accesseur de vue 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 la liaison de rôle d'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

Terraform

Pour répertorier les associations IAM de 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 répertorie tous les comptes principaux, leurs rôles IAM et toutes les conditions associées à ces rôles.

Lister 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 au moment de la création du projet Google Cloud. L'exemple de résultat 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 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 de 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 de journal inclut tous les journaux. Par exemple, pour filtrer par journaux d'instances de VM Compute Engine, saisissez "resource.type=gce_instance".
  • DESCRIPTION: description de la vue de journal. 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 renvoie 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, utilisez 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 de 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, utilisez 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 de 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 de 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 et la vue de journaux que vous souhaitez utiliser pour afficher les journaux.

Panneau "Affiner le champ d'application"

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

Étapes suivantes

Configurez l'accès au niveau du champ.