Contrôle des accès avec IAM

Ce document explique comment vous utilisez les rôles et autorisations IAM (Identity and Access Management) pour contrôler l'accès aux données des journaux dans l'API Logging, l'explorateur de journaux et la CLI Google Cloud.

Présentation

Les autorisations et les rôles IAM déterminent votre capacité à accéder aux données des journaux dans l'API Logging, l'explorateur de journaux et la CLI Google Cloud.

Un rôle est un ensemble d'autorisations. Vous ne pouvez pas accorder directement une autorisation principale. À la place, vous lui accordez un rôle. Lorsque vous accordez un rôle à un compte principal, vous lui accordez toutes les autorisations associées à ce rôle. Vous pouvez attribuer plusieurs rôles au même compte principal.

Pour utiliser Logging dans une ressource Google Cloud (par exemple, un projet, un dossier, un bucket ou une organisation Google Cloud), le compte principal doit disposer d'un rôle IAM contenant les autorisations appropriées.

Rôles prédéfinis

IAM fournit des rôles prédéfinis pour accorder un accès précis à des ressources Google Cloud spécifiques et empêcher tout accès indésirable à d'autres ressources. Google Cloud crée et gère ces rôles, et met automatiquement à jour leurs autorisations si nécessaire, par exemple lorsque Logging ajoute de nouvelles fonctionnalités.

Le tableau suivant répertorie les rôles prédéfinis pour Logging. Pour chaque rôle, la table affiche le titre du rôle, sa description, les autorisations qu'il contient et le type de ressource de niveau le plus bas auquel les rôles peuvent être attribués. Vous pouvez attribuer les rôles prédéfinis au niveau du projet Cloud ou, dans la plupart des cas, de n'importe quel type à un niveau supérieur dans la hiérarchie Google Cloud. Pour limiter les rôles de rédacteur de buckets de journaux ou d'accesseurs à la vue de journaux au niveau du bucket, utilisez des attributs de ressources pour les conditions IAM.

Pour obtenir la liste de chaque autorisation individuelle contenue dans un rôle, consultez la section Obtenir les métadonnées du rôle.

Rôle Autorisations

Administrateur Logging
(roles/logging.admin)

Fournit toutes les autorisations nécessaires pour utiliser l'ensemble des fonctionnalités de Cloud Logging.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.access
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logserviceIndexes.list
  • logging.logservices.list
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.list
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.get
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Rédacteur de bucket de journaux
(roles/logging.bucketWriter)

Permet d'écrire des journaux dans un bucket de journaux.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.buckets.write

Rédacteur de configuration des journaux
(roles/logging.configWriter)

Fournit les autorisations permettant de lire et d'écrire les configurations des métriques et des récepteurs basés sur les journaux, pour l'exportation de ces journaux.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logserviceIndexes.list
  • logging.logservices.list
  • logging.logs.list
  • logging.notificationRules.*
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Accesseur de champs de journaux
(roles/logging.fieldAccessor)

Permet de lire les champs restreints dans un bucket de journaux.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.fields.access

Rédacteur de journaux
(roles/logging.logWriter)

Fournit les autorisations nécessaires pour écrire des entrées de journal.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.logEntries.create

Lecteur des journaux privés
(roles/logging.privateLogViewer)

Fournit les autorisations du rôle "Lecteur de journaux", et fournit également un accès en lecture seule aux entrées des journaux privés.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logserviceIndexes.list
  • logging.logservices.list
  • logging.logs.list
  • logging.privateLogEntries.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Accesseur de vues de journaux
(roles/logging.viewAccessor)

Permet de lire les journaux d'une vue.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues

Visionneuse de journaux
(roles/logging.viewer)

Permet d'afficher les journaux.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logserviceIndexes.list
  • logging.logservices.list
  • logging.logs.list
  • logging.operations.get
  • logging.operations.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.get
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Informations complémentaires

Lorsque vous décidez des autorisations et rôles qui s'appliquent aux cas d'utilisation de vos comptes principaux, tenez compte des points suivants :

  • roles/logging.admin (Administrateur Logging) : vous accorde toutes les autorisations liées à Logging.

  • roles/logging.viewer (Visionneuse de journaux) accorde aux comptes principaux un accès en lecture seule à la plupart des fonctionnalités de Logging.

    Le rôle Lecteur de journaux permet aux comptes principaux d'accéder à la vue de journaux _AllLogs du bucket _Required et à la vue de journal _Default du bucket _Default.

    Le rôle Lecteur de journaux ne permet pas aux comptes principaux de lire les journaux d'audit relatifs à l'accès aux données qui se trouvent dans le bucket _Default. Pour lire ces journaux d'audit pour l'accès aux données, les comptes principaux doivent disposer du rôle Lecteur de journaux privés (roles/logging.privateLogViewer) pour la vue de journaux appropriée.

    Le rôle Lecteur de journaux ne permet pas aux comptes principaux de lire les journaux stockés dans des buckets définis par l'utilisateur. Pour lire les journaux des buckets définis par l'utilisateur, ils doivent disposer du rôle Accesseur de vue de journaux (roles/logging.viewAccessor) pour la vue de journaux appropriée.

  • roles/logging.privateLogViewer (Lecteur des journaux privés) : inclut toutes les autorisations contenues dans roles/logging.viewer, ainsi que la possibilité de lire les journaux d'audit d'accès aux données situés dans le bucket _Default.

    Le rôle Lecteur de journaux privés ne permet pas aux comptes principaux de lire les journaux d'audit relatifs à l'accès aux données s'ils sont stockés dans des buckets définis par l'utilisateur. Pour lire ces journaux dans des buckets définis par l'utilisateur, ils doivent disposer du rôle Accesseur de vue de journaux (roles/logging.viewAccessor) pour la vue de journaux appropriée.

  • L'roles/logging.viewAccessoraccesseur de vue de journaux permet aux comptes principaux de lire les journaux, les clés de ressource et les valeurs à l'aide d'une vue de journaux, et de télécharger des journaux. Pour limiter ce rôle à une vue spécifique d'un bucket, utilisez une condition IAM. Pour obtenir un exemple, consultez la section Lire les journaux d'un bucket.

  • L'roles/logging.fieldAccessoraccesseur de champs de journaux permet aux comptes principaux d'accéder aux champs LogEntry restreints d'un bucket donné, le cas échéant. Pour en savoir plus, consultez la page Contrôle des accès au niveau du champ.

  • Le rôle roles/logging.logWriter (Rédacteur de journaux) accorde aux comptes principaux les autorisations minimales requises pour écrire des journaux dans l'API Logging. Ce rôle n'accorde pas d'autorisations de lecture.

  • roles/logging.bucketWriter (Rédacteur de buckets de journaux) accorde au compte de service un récepteur les autorisations minimales requises pour acheminer ces journaux vers un bucket spécifique. Pour savoir comment accorder des autorisations à un compte de service de récepteur, consultez Définir des autorisations de destination.

  • Le rôle roles/logging.configWriterRédacteur de configuration des journaux permet d'autoriser les comptes principaux à créer ou modifier des configurations de journalisation, telles que des récepteurs, des buckets, des vues, des métriques basées sur des journaux ou des exclusions. Pour utiliser l'explorateur de journaux pour ces actions, ajoutez roles/logging.viewer.

  • roles/viewer (Lecteur de projet) : est identique à roles/logging.viewer. Le rôle accorde aux comptes principaux un accès en lecture seule à toutes les fonctionnalités de Logging, à l'exception de l'affichage des journaux d'audit relatifs à l'accès aux données qui se trouvent dans le bucket _Default.

  • roles/editor (Éditeur de projet) : inclut les autorisations du rôle roles/logging.viewer ainsi que les autorisations permettant d'écrire des entrées de journal, de supprimer des journaux et de créer des métriques basées sur les journaux. Ce rôle ne permet pas aux comptes principaux de créer des récepteurs ni de lire les journaux d'audit d'accès aux données qui se trouvent dans le bucket _Default.

  • roles/owner (propriétaire du projet) accorde aux comptes principaux un accès complet à Logging, y compris aux journaux d'audit pour l'accès aux données.

Attribution des rôles…

Pour savoir comment accorder un rôle à un compte principal, consultez la section Accorder, modifier et révoquer les accès.

Vous pouvez attribuer plusieurs rôles au même utilisateur. Pour obtenir la liste des autorisations contenues dans un rôle, consultez la section Obtenir les métadonnées du rôle.

Si vous essayez d'accéder à une ressource Google Cloud et que vous ne disposez pas des autorisations nécessaires, contactez le compte principal indiqué comme propriétaire de la ressource.

Rôles personnalisés

Pour créer un rôle personnalisé avec des autorisations Logging, procédez comme suit :

Pour plus d'informations sur les rôles personnalisés, voir Comprendre les rôles personnalisés IAM.

Autorisations des API

Les méthodes de l'API Logging nécessitent des autorisations IAM spécifiques. Le tableau suivant répertorie les autorisations requises par les méthodes d'API.

Si vous souhaitez afficher les journaux des organisations, des comptes de facturation et des dossiers Google Cloud, sachez que ces ressources disposent de leurs propres méthodes d'API pour logs et sinks. Plutôt que de répéter toutes les méthodes dans le tableau, seules les méthodes projects sont affichées individuellement.

Méthode de journalisation Autorisation requise Type de ressource
billingAccounts.logs.* logging.logs.* (voir projects.logs.*) Comptes de facturation
billingAccounts.sinks.* logging.sinks.* (voir projects.sinks.*.) Comptes de facturation
billingAccounts.locations.buckets.* logging.buckets.* (voir projects.locations.buckets.*.) Comptes de facturation
entries.list logging.logEntries.list ou
logging.privateLogEntries.list
projets, organisations,
dossiers, comptes de facturation
entries.tail logging.logEntries.list ou
logging.privateLogEntries.list
projets, organisations,
dossiers, comptes de facturation
entries.write logging.logEntries.create projets, organisations,
dossiers, comptes de facturation
folders.logs.* logging.logs.* (voir projects.logs.*) folders
folders.sinks.* logging.sinks.* (voir projects.sinks.*) folders
folders.locations.buckets.* logging.buckets.* (voir projects.locations.buckets.*) folders
monitoredResourceDescriptors.list (aucune) (aucun)
organizations.logs.* logging.logs.* (voir projects.logs.*) organisations
organizations.sinks.* logging.sinks.* (voir projects.sinks.*) organisations
organizations.locations.buckets.* logging.buckets.* (voir projects.locations.buckets.*) organisations
projects.exclusions.create logging.exclusions.create Projets
projects.exclusions.delete logging.exclusions.delete Projets
projects.exclusions.get logging.exclusions.get Projets
projects.exclusions.list logging.exclusions.list Projets
projects.exclusions.patch logging.exclusions.update Projets
projects.logs.list logging.logs.list Projets
projects.logs.delete logging.logs.delete Projets
projects.sinks.list logging.sinks.list Projets
projects.sinks.get logging.sinks.get Projets
projects.sinks.create logging.sinks.create Projets
projects.sinks.update logging.sinks.update Projets
projects.sinks.delete logging.sinks.delete Projets
projects.locations.buckets.list logging.buckets.list Projets
projects.locations.buckets.get logging.buckets.get Projets
projects.locations.buckets.patch logging.buckets.update Projets
projects.locations.buckets.create logging.buckets.create Projets
projects.locations.buckets.delete logging.buckets.delete Projets
projects.locations.buckets.undelete logging.buckets.undelete Projets
projects.metrics.list logging.logMetrics.list Projets
projects.metrics.get logging.logMetrics.get Projets
projects.metrics.create logging.logMetrics.create Projets
projects.metrics.update logging.logMetrics.update Projets
projects.metrics.delete logging.logMetrics.delete projects

autorisations pour la console

Le tableau suivant répertorie les autorisations nécessaires pour utiliser l'explorateur de journaux.

Dans le tableau, a.b.{x,y} signifie a.b.x et a.b.y.

Activité de la console Autorisations requises
Accès minimal en lecture seule logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Possibilité d'afficher les journaux d'audit concernant l'accès aux données Ajouter logging.privateLogEntries.list
Possibilité d'afficher des métriques basées sur les journaux Ajouter logging.logMetrics.{list, get}
Possibilité d'afficher des récepteurs Ajouter logging.sinks.{list, get}
Possibilité d'afficher l'utilisation des journaux Ajouter logging.usage.get
Possibilité d'exclure les journaux Ajouter logging.exclusions.{list, create, get, update, delete}
Possibilité d'utiliser des récepteurs Ajouter logging.sinks.{list, create, get, update, delete}
Possibilité de créer des métriques basées sur les journaux Ajouter logging.logMetrics.{list, create, get, update, delete}
Possibilité d'enregistrer des requêtes Ajouter logging.queries.{list, create, get, update, delete}
Possibilité de partager des requêtes Ajouter logging.queries.share
Possibilité d'utiliser des requêtes récentes Ajouter logging.queries.{create, list}

Autorisations de la ligne de commande

Les commandes gcloud logging sont contrôlées par les autorisations IAM.

Pour utiliser l'une des commandes gcloud logging, les comptes principaux doivent disposer de l'autorisation serviceusage.services.use.

Un compte principal doit également disposer du rôle IAM correspondant à la ressource "log's" et au cas d'utilisation. Pour en savoir plus, consultez Autorisations pour l'interface de ligne de commande.

Autorisations de routage des journaux

Pour en savoir plus sur la définition des contrôles d'accès lors de la création et de la gestion de récepteurs afin d'acheminer les journaux, consultez la page Configurer des récepteurs : définir les autorisations de destination.

Notez que la gestion des filtres d'exclusion est intégrée à la configuration des récepteurs. Toutes les autorisations liées à la gestion des récepteurs, y compris la définition de filtres d'exclusion, sont incluses dans les autorisations logging.sinks.*. Lors de la création d'un rôle personnalisé qui inclut des autorisations permettant de gérer les filtres d'exclusion, ajoutez les autorisations logging.sinks.* au rôle plutôt que d'ajouter les autorisations logging.exclusions.*.

Une fois que vos entrées de journal ont été acheminées vers une destination compatible, l'accès aux copies de journaux est contrôlé entièrement par les autorisations et les rôles IAM sur les destinations : Cloud Storage, BigQuery ou Pub/Sub.

Autorisations spécifiques aux métriques basées sur les journaux

Voici un récapitulatif des rôles et autorisations dont un compte principal a besoin pour accéder aux métriques basées sur les journaux :

  • Le champ Rédacteur de configuration des journaux (roles/logging.configWriter) permet aux comptes principaux de répertorier, de créer, d'obtenir, de mettre à jour et de supprimer des métriques basées sur les journaux.

  • La visionneuse de journaux (roles/logging.viewer) permet aux comptes principaux d'afficher les métriques existantes. Vous pouvez également ajouter les autorisations logging.logMetrics.get et logging.logMetrics.list à un rôle personnalisé.

  • Le lecteur Monitoring (roles/monitoring.viewer) permet aux comptes principaux de lire les données TimeSeries. Vous pouvez également ajouter l'autorisation monitoring.timeSeries.list à un rôle personnalisé.

  • L'administrateur Logging (roles/logging.admin), l'éditeur de projet (roles/editor) et le propriétaire de projet (roles/owner) permettent aux comptes principaux de créer des métriques basées sur les journaux (logging.logMetrics.create).

Autorisations relatives aux alertes basées sur les journaux

Voici un récapitulatif des rôles et autorisations dont un compte principal a besoin pour créer et gérer des alertes basées sur les journaux :

  • Administrateur Logging (roles/logging.admin). Plus précisément, un compte principal a besoin des autorisations suivantes pour lire les journaux et gérer les règles de notification Logging :

    • logging.logs.list
    • logging.logEntries.list
    • logging.notificationRules.create
    • logging.notificationRules.update

    Ces autorisations sont incluses dans le rôle Administrateur Logging. Si vous ne souhaitez pas accorder ce rôle, procédez comme suit:

  • L'éditeur Monitoring AlertPolicy (roles/monitoring.alertPolicyEditor) et l'éditeur Monitoring NotificationChannel (roles/monitoring.notificationChannelEditor) incluent les autorisations nécessaires pour gérer les règles d'alerte et les canaux de notification utilisés par les alertes basées sur les journaux :

    • monitoring.alertPolicies.{create, delete, get, list, update}
    • monitoring.notificationChannelDescriptors.{get, list}
    • monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}

    Les autorisations nécessaires sont également incluses dans les rôles Éditeur Monitoring (roles/monitoring.editor) et Administrateur Monitoring (roles/monitoring.admin).

    Si vous ne souhaitez pas attribuer l'un de ces rôles, créez un rôle personnalisé et incluez les autorisations correspondantes dans les rôles "Éditeur Alerte Monitoring" et "Éditeur Monitoring NotificationChannel".

Champs d'application de l'accès à Logging

Les niveaux d'accès représentent l'ancienne méthode de spécification des autorisations associées aux comptes de service sur vos instances de VM Compute Engine.

Les champs d'application d'accès suivants s'appliquent à l'API Logging :

Champ d'application d'accès Autorisations accordées
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Accès complet à l'API Logging.
https://www.googleapis.com/auth/cloud-platform Accès complet à l'API Logging et à toutes les autres API Google Cloud activées

Pour en savoir plus sur l'utilisation de cette ancienne méthode pour définir les niveaux d'accès de vos comptes de service, consultez la page Autorisations de compte de service.