Contrôle des accès avec IAM

Cloud Logging utilise les rôles et les autorisations Identity and Access Management (IAM) pour vous permettre de contrôler qui peut afficher, écrire et gérer les ressources Logging. Vos rôles IAM déterminent si vous pouvez créer des récepteurs ou des buckets de journaux, lire les données de journaux stockées dans un bucket de journaux ou accéder à des pages telles que l'explorateur de journaux. Lorsque vous exécutez une commande de l'API Cloud Logging ou de Google Cloud CLI, vos rôles IAM déterminent également si vous êtes autorisé à exécuter la commande.

Présentation

Vos rôles IAM déterminent les actions que vous pouvez effectuer dans Logging. Un rôle est un ensemble d'autorisations. 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.

Les rôles IAM sont accordés sur une ressource, telle qu'un projet, un dossier, un bucket ou une organisation Google Cloud . Par exemple, vous pouvez accorder à un compte principal le rôle "Lecteur de journaux" (roles/logging.viewer) sur un projet Google Cloud particulier.

Les sections Rôles prédéfinis et Rôles Logging de cette page fournissent des informations complètes sur les rôles et les autorisations Logging. D'autres sections de cette page fournissent des informations sur les rôles ou les autorisations pour des cas d'utilisation spécifiques.

Le reste de cette section explique comment accorder à un compte principal l'accès à des buckets de journaux ou lui accorder l'accès à certaines entrées de journal d'un bucket de journaux.

Accorder l'accès aux buckets de journaux

Le rôle Lecteur de journaux (roles/logging.viewer) permet à un compte principal d'accéder à toutes les données de journaux stockées dans les buckets de journaux _Required et _Default, à l'exception des journaux d'accès aux données. Si un compte principal doit accéder aux journaux d'accès aux données, attribuez-lui le rôle de lecteur de journaux privés (roles/logging.privateLogViewer).

Pour les buckets de journaux personnalisés, vous pouvez accorder l'accès à la vue _AllLogs ou à une vue de journaux personnalisée. Logging crée automatiquement la vue _AllLogs, qui inclut toutes les entrées de journal du bucket de journaux. Pour accorder l'accès à une vue de journaux, vous devez ajouter une liaison IAM à la stratégie IAM associée à la vue de journaux ou au projet. Pour en savoir plus, consultez Contrôler l'accès à une vue de journal.

Logging accepte également les tags sur les buckets de journaux, ce qui peut vous aider à comprendre vos coûts. Vous pouvez également utiliser des tags pour empêcher un utilisateur de supprimer un bucket de journaux. Pour en savoir plus, consultez Utiliser des tags pour gérer l'accès aux buckets de journaux.

Accorder l'accès à certaines entrées de journal dans un bucket de journaux

Pour accorder à un compte principal l'accès à certaines entrées de journal stockées dans un bucket de journaux, créez une vue de journal, puis accordez au compte principal l'accès à la vue de journal. Par exemple, vous pouvez créer une vue de journal sur le bucket de journaux _Default qui n'inclut que les entrées de journal dont le type de ressource est une instance Compute Engine. Pour en savoir plus sur la création de vues de journaux et les différentes stratégies que vous pouvez utiliser pour accorder l'accès à la vue, consultez Configurer des vues de journaux sur un bucket de journaux.

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 liste les rôles prédéfinis pour Logging. Pour chaque rôle, le tableau 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 Google Cloud ou, dans la plupart des cas, à n'importe quel niveau supérieur de la hiérarchie des ressources. Pour limiter le rôle "Accesseur de vue de journaux" à une vue de journaux sur un bucket, utilisez des attributs de ressource pour les conditions IAM.

Pour obtenir la liste de toutes les autorisations individuelles contenues dans un rôle, consultez 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:

  • View

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

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(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:

  • View

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

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(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

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 permettre à un utilisateur d'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 :

  • Pour permettre à un utilisateur de lire les journaux dans les buckets _Required et _Default ou d'utiliser la page Explorateur de journaux, attribuez 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, attribuez 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, attribuez-lui le rôle IAM roles/logging.viewAccessor sur le projet.

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

    • Créez une stratégie IAM pour la vue de journaux, puis ajoutez-y une liaison IAM qui accorde au compte principal l'accès à la vue de journaux.

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

    Pour en savoir plus sur la création de vues de journaux et l'octroi d'accès, consultez Configurer des vues de journaux sur un bucket de journaux.

  • Pour permettre à un utilisateur d'écrire des journaux à l'aide de l'API Logging, attribuez-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 d'acheminer les journaux vers un bucket d'un autre projet Google Cloud , attribuez-lui le rôle "Rédacteur de bucket de journaux" (roles/logging.bucketWriter). Pour savoir comment accorder des autorisations à un compte de service, consultez Définir des 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 de visionneuse de journaux (roles/logging.viewer).

  • Pour accorder un 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 de visionneuse de journaux (roles/logging.viewer), ainsi que les autorisations d'écriture d'entrées de journal et de suppression de journaux. Toutefois, ce rôle ne permet pas aux utilisateurs de créer des récepteurs, de lire les journaux d'audit des accès aux données qui se trouvent dans le bucket _Default ni de lire les journaux qui se trouvent dans des 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 attribuer un rôle à un compte principal, consultez 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 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 des fonctionnalités spécifiques de Cloud Logging. Ce tableau peut vous aider à identifier les autorisations dont vous avez besoin pour utiliser des pages telles que 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 des accès aux données logging.privateLogEntries.list
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 de téléchargement des journaux doivent être accordés au niveau du projet. Vous ne pouvez pas télécharger de journaux si un rôle contenant ces autorisations est accordé dans le fichier de stratégie IAM d'une vue de journaux.

Répertorier et afficher les champs d'application de 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é incluant des autorisations pour gérer les filtres "Exclure", ajoutez les autorisations logging.sinks.* au rôle au lieu 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 de destination.

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

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}
Créer et gérer des champs d'application des journaux logging.logScopes.{create, delete, get, list, update}
Définir et gérer le champ d'action des journaux par défaut observability.scopes.{get, update}

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