Configurer des vues de journaux sur un bucket de journaux

Ce document explique comment créer et gérer vues de journaux sur votre les buckets Cloud Logging à l'aide de 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 obtenir des informations générales sur le modèle de stockage Logging, consultez 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 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 dans le bucket de journaux. Vous pouvez ensuite accorder à chaque utilisateur l'accès à une ou plusieurs vues de journaux, et ainsi limiter les types de journaux que les utilisateurs peuvent voir.

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 les accès pour les vues de journaux. Les stratégies IAM peuvent exister au niveau de la ressource, du projet d'un dossier et d'une organisation. Pour Cloud Logging, vous pouvez créer Stratégie IAM pour chaque vue de journal. Pour déterminer si un compte principal est autorisé action, IAM évalue toutes les stratégies applicables, avec la première évaluation au niveau de la ressource.

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

Pour accorder à un compte principal un accès spécifique à 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 de liaison IAM à cette stratégie, qui accorde au compte principal l'accès à la vue de journal.

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

  • Accorder au compte principal le rôle IAM roles/logging.viewAccessor sur le projet contenant la vue de journal mais associez une condition IAM à limiter l'autorisation à la vue de journal spécifique. Si vous omettez la puis vous accordez au compte principal l'accès à toutes les vues de journaux. La limite est de 20 des liaisons de rôles dans le fichier de stratégie d'un projet Google Cloud incluant le même rôle et le même compte principal, mais avec des expressions de condition différentes.

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 un 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 la 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 visible 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 le 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 le paramètre Fonction log_id. La fonction log_id renvoie les entrées de journal correspondant au LOG_ID donné. l'argument de logName .

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

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 plus d'informations sur la syntaxe de filtrage, consultez la section 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 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 le 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. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  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 de journal et si vous souhaitez pour ajouter des liaisons à la stratégie IAM de la vue de journal le projet Google Cloud. Pour plus d'informations, consultez la section 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 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 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 du journal. Par exemple, vous pouvez saisir ce qui suit pour la description "Compute logs".

Exécutez la 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 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 dans 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 de journal.

  • Vous pouvez utiliser le fichier de stratégie IAM le projet Google Cloud qui stocke le bucket de journaux, ainsi que Condition IAM.

Lorsque vous créez un grand nombre des vues de journaux, nous vous recommandons de contrôler les accès à l'aide Fichier de stratégie IAM de la vue de journal.

Vue de journal: ajouter des liaisons de rôles

Cette section explique comment utiliser l'IAM fichier de stratégie d'une vue de journal pour contrôler qui a accès aux entrées de journal dans cette vue de journal. Lorsque vous utilisez cette approche, vous ajoutez une liaison fichier de stratégie de la vue de journal, la liaison accorde au compte principal spécifié un accès la vue de journal.

Cette section explique également comment répertorier 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 de journal.
  • PRINCIPAL: identifiant du compte principal que vous souhaitez vous accordez le rôle. Les identifiants des comptes 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 que PRINCIPAL peut avoir, consultez la section Identifiants des comptes principaux.
  • BUCKET_NAME: nom du bucket de journaux.
  • LOCATION: emplacement du bucket de journaux.

Exécutez la 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 LogView Cloud Logging.

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 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 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 répertorier les associations IAM pour les vues de journaux à l'aide de Terraform, utiliser 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 comment répertorier les liaisons associées à un projet. Lorsque vous utilisez cette approche, pour empêcher un compte principal d'accéder aux entrées de journal stockées dans un vous devez ajouter une condition IAM à l'attribution.

Ajouter une liaison de rôle à un projet

Pour ajouter une liaison de rôle au fichier de stratégie IAM d'un votre 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 format du fichier JSON ou YAML est correct, 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 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 que vous souhaitez vous accordez le rôle. Les identifiants des comptes 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 que PRINCIPAL peut avoir, consultez la section Identifiants des comptes principaux.

    Exécutez la 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 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, utiliser 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 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 de journal était créé lors de la création du projet Google Cloud. L'exemple de résultat suivant montre que 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 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 du journal. Par exemple, pour le champ description "New description for the log view".

Exécutez la 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

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 de journal, nous vous recommandons de vérifier que la vue de journal 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 journal, 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. Examinez les éléments suivants:

    • Les requêtes exécutées à partir des pages Explorateur de journaux ou Analyse de journaux qui ont été 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 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 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, voici 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 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 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. Il inclut également le filtre, lorsque le champ de filtre n'est pas vide. Voici un exemple 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 de la Accesseur de vues 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. Dans la barre d'outils, cliquez sur Affiner le champ d'application, puis sur Vue de journal. sélectionnez les vues de 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.