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 fonctionsource
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 fonctionlog_id
renvoie les entrées de journal correspondant à l'argumentLOG_ID
spécifié dans le champlogName
.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:
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.
-
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:
-
Rédacteur de configuration des journaux (
roles/logging.configWriter
) -
Pour ajouter une association de rôle à un projet :
Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin
) -
Pour ajouter une association de rôle à une vue de journal :
Administrateur Logging (
roles/logging.admin
)
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.
-
Rédacteur de configuration des journaux (
-
In the Google Cloud console, 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.
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.
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 pourPRINCIPAL
, 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
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"
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
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 pourPRINCIPAL
, 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:
-
Dans la console Google Cloud, accédez à la page 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.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, ajoutez le compte de messagerie de l'utilisateur.
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.
Cliquez sur Ajouter une condition IAM.
Saisissez un titre et une description pour la condition.
Dans le menu déroulant Type de condition, sélectionnez Ressource > Nom.
Dans le menu déroulant Opérateur, sélectionnez est.
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
Cliquez sur Enregistrer pour ajouter la condition.
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 :
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:
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
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:
-
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.
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.