Contrôle des accès avec IAM

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

Présentation

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

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 , telle qu'un projet Google Cloud , un dossier, un bucket ou une organisation, un 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, le tableau affiche le titre, la description, les autorisations qu'il contient et le type de ressource le plus bas pour lequel les rôles peuvent être attribués. Vous pouvez attribuer les rôles prédéfinis au niveau du projet Google Cloud ou, dans la plupart des cas, à tout type supérieur dans la hiérarchie des ressources. Pour limiter le rôle "Accesseur de vues des journaux" à une vue des journaux dans un bucket, utilisez les attributs de ressource pour les conditions IAM.

Pour obtenir la liste de toutes les autorisations individuelles contenues dans un rôle, consultez la section Obtenir les métadonnées du rôle.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

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.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

Les sections suivantes fournissent des informations supplémentaires pour vous aider à déterminer les rôles qui s'appliquent aux cas d'utilisation de vos comptes principaux.

Rôles Logging

  • Pour autoriser un utilisateur à effectuer toutes les actions dans Logging, attribuez-lui le rôle Administrateur Logging (roles/logging.admin).

  • Pour permettre à un utilisateur de créer et de modifier des configurations de journalisation, attribuez-lui le rôle Rédacteur de configuration des journaux (roles/logging.configWriter). Ce rôle vous permet de créer ou de modifier les éléments suivants :

    Ce rôle ne suffit pas pour créer des métriques basées sur les journaux ni des règles d'alerte basées sur les journaux. Pour en savoir plus sur les rôles requis pour ces tâches, consultez Autorisations pour les métriques basées sur les journaux et Autorisations pour les règles d'alerte basées sur les journaux.

  • Pour autoriser un utilisateur à lire les journaux dans les buckets _Required et _Default, ou à utiliser les pages Explorateur de journaux et Analyse de journaux, attribuez-lui l'un des rôles suivants :

    • Pour accéder à tous les journaux du bucket _Required et à la vue _Default du bucket _Default, attribuez le rôle Lecteur de journaux (roles/logging.viewer).
    • Pour accéder à tous les journaux des buckets _Required et _Default, y compris les journaux d'accès aux données, accordez le rôle Lecteur de journaux privés (roles/logging.privateLogViewer).
  • Pour permettre à un utilisateur de lire les journaux dans toutes les vues de journaux d'un projet, accordez-lui le rôle IAM roles/logging.viewAccessor dans le projet.

  • Pour autoriser un utilisateur à lire uniquement les journaux d'une vue de journaux spécifique, vous avez deux options :

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

    • Attribuez au compte principal le rôle IAM roles/logging.viewAccessor dans le projet contenant la vue de journal, mais associez-y une condition IAM pour limiter l'attribution à la vue de journal spécifique.

    Pour savoir comment créer des vues de journaux et accorder l'accès, consultez Configurer des vues de journaux dans un bucket de journaux.

  • Pour autoriser un utilisateur à accéder aux champs LogEntry restreints (le cas échéant) d'un bucket de journaux donné, attribuez-lui le rôle Accesseur de champs de journaux (roles/logging.fieldAccessor). Pour en savoir plus, consultez Configurer l'accès au niveau des champs.
  • Pour autoriser un utilisateur à écrire des journaux à l'aide de l'API Logging, accordez-lui le rôle Rédacteur de journaux (roles/logging.logWriter). Ce rôle n'accorde pas de droits de lecture.

  • Pour permettre au compte de service d'un récepteur de router les journaux vers un bucket dans un autre projet Google Cloud , accordez-lui le rôle Rédacteur de buckets de journaux (roles/logging.bucketWriter). Pour savoir comment accorder des autorisations à un compte de service, consultez Définir les autorisations de destination.

Rôles au niveau du projet

  • Pour accorder un accès en lecture à la plupart des services Google Cloud , attribuez le rôle Lecteur (roles/viewer).

    Ce rôle inclut toutes les autorisations accordées par le rôle Lecteur de journaux (roles/logging.viewer).

  • Pour accorder l'accès Éditeur à la plupart des services Google Cloud , attribuez le rôle Éditeur (roles/editor).

    Ce rôle inclut toutes les autorisations accordées par le rôle Lecteur de journaux (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. Toutefois, ce rôle ne permet pas aux utilisateurs de créer des récepteurs, de lire les journaux d'audit d'accès aux données qui se trouvent dans le bucket _Default ni de lire les journaux qui se trouvent dans les buckets de journaux définis par l'utilisateur.

  • Pour accorder un accès complet à la plupart des services Google Cloud , attribuez le rôle Propriétaire (roles/owner).

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 tentez d'accéder à une ressource Google Cloud et que vous ne disposez pas des autorisations nécessaires, contactez le compte principal désigné 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 en savoir plus sur les rôles personnalisés, consultez Comprendre les rôles personnalisés IAM.

Autorisations Cloud Logging

Le tableau suivant est une liste partielle des autorisations nécessaires pour certaines fonctionnalités de Cloud Logging. Ce tableau peut vous aider à identifier les autorisations dont vous avez besoin pour utiliser des pages comme 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
Afficher les journaux d'audit pour l'accès aux données logging.privateLogEntries.list
Afficher les métriques basées sur les journaux logging.logMetrics.{list, get}
Afficher les récepteurs logging.sinks.{list, get}
Afficher l'utilisation des journaux logging.usage.get
Télécharger les journaux logging.logEntries.{list, download}

Une seule de ces autorisations est nécessaire pour télécharger les journaux. Les rôles contenant les autorisations permettant de télécharger des journaux doivent être accordés au niveau du projet. Vous ne pouvez pas télécharger les journaux si un rôle contenant ces autorisations est accordé dans le fichier de stratégie IAM d'une vue de journaux.

Lister et afficher les champs d'application des journaux logging.logScopes.{get, list}
Afficher le champ d'application des journaux par défaut observability.scopes.get
Exclure des journaux logging.exclusions.{list, create, get, update, delete}

Lorsque vous créez 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.*.

Créer et utiliser des récepteurs logging.sinks.{list, create, get, update, delete}

Lorsque vous créez un récepteur, vous devez également attribuer au compte de service un rôle IAM qui lui permet d'écrire des entrées de journal dans la destination. Pour en savoir plus, consultez Définir les autorisations des destinations.

Une fois que vos entrées de journal ont été acheminées vers une destination compatible, l'accès aux entrées de journal est entièrement contrôlé par les autorisations et les rôles IAM sur la destination.

Créer des alertes basées sur les journaux Consultez Rôles requis pour créer et utiliser des règles d'alerte basées sur les journaux.
Créer des métriques basées sur les journaux logging.logMetrics.{list, create, get, update, delete}

Pour en savoir plus sur les autres rôles IAM dont vous avez besoin pour créer et utiliser des métriques basées sur les journaux, consultez Rôles requis pour créer et utiliser des métriques basées sur les journaux.

Enregistrer et utiliser des requêtes privées logging.queries.usePrivate
logging.queries.{listShared,getShared}
Enregistrer et utiliser des requêtes partagées logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Utiliser les requêtes récentes logging.queries.{create, list}
Créer et gérer des étendues de journaux logging.logScopes.{create, delete, get, list, update}
Définir et gérer le champ d'application des journaux par défaut observability.scopes.{get, update}
Créer et gérer des vues d'analyse observability.analyticsViews.{create, delete, get, list, update}

Autorisations pour la ligne de commande

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

Pour utiliser les 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 du journal et au cas d'utilisation. Pour en savoir plus, consultez Autorisations de l'interface de ligne de commande.

Rôles requis pour créer et utiliser des 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 rôle Rédacteur de configuration des journaux (roles/logging.configWriter) permet aux comptes principaux de lister, créer, obtenir, mettre à jour et supprimer des métriques basées sur les journaux.

  • Le rôle Lecteur de journaux (roles/logging.viewer) contient les autorisations permettant d'afficher les métriques existantes. Plus précisément, un principal a besoin des autorisations logging.logMetrics.get et logging.logMetrics.list pour afficher les métriques existantes.

  • Le rôle Lecteur Monitoring (roles/monitoring.viewer) contient les autorisations permettant de lire les données TimeSeries. Plus précisément, un compte principal a besoin de l'autorisation monitoring.timeSeries.list pour lire les données de série temporelle.

  • Les rôles Administrateur Logging (roles/logging.admin), Éditeur de projet (roles/editor) et Propriétaire de projet (roles/owner) contiennent les autorisations permettant de créer des métriques basées sur les journaux. Plus précisément, un principal a besoin de l'autorisation logging.logMetrics.create pour créer des métriques basées sur les journaux.

Rôles requis pour créer et utiliser des règles d'alerte basées sur les journaux

Pour créer et gérer des règles d'alerte basées sur les journaux, un compte principal doit disposer des rôles et autorisations Logging et Monitoring suivants :

Si vous créez votre règle d'alerte dans Google Cloud CLI, le rôle ou l'autorisation suivants sont également requis :

  • Pour obtenir l'autorisation nécessaire pour créer une règle d'alerte à l'aide de la Google Cloud CLI, demandez à votre administrateur de vous accorder le rôle IAM Consommateur Service Usage (roles/serviceusage.serviceUsageConsumer) 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.

    Ce rôle prédéfini contient l'autorisation serviceusage.services.use, qui est nécessaire pour créer une règle d'alerte à l'aide de Google Cloud CLI.

    Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.

Si votre projet Google Cloud comporte déjà des canaux de notification, vous pouvez configurer votre règle d'alerte pour qu'elle utilise un canal existant sans aucun rôle ni autorisation supplémentaires. Toutefois, si vous devez créer un canal de notification pour votre règle d'alerte basée sur les journaux, le rôle ou l'autorisation suivants sont requis :

  • Pour obtenir l'autorisation nécessaire pour créer un canal de notification pour une règle d'alerte basée sur les journaux, demandez à votre administrateur de vous accorder le rôle IAM Éditeur de canaux de notification Monitoring (roles/monitoring.notificationChannelEditor) sur votre projet.

    Ce rôle prédéfini contient l'autorisation monitoring.notificationChannels.create, qui est nécessaire pour créer un canal de notification pour une stratégie d'alerte basée sur les journaux.

Autorisations pour les règles d'alerte basées sur SQL

Les règles d'alerte basées sur SQL évaluent les résultats d'une requête SQL exécutée sur des données provenant de groupes d'entrées de journal. Pour en savoir plus sur les rôles requis pour créer et gérer des règles d'alerte basées sur SQL, consultez la section Avant de commencer dans Surveiller les résultats de vos requêtes SQL avec une règle d'alerte.

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 Niveaux d'accès.