Contrôle des accès avec IAM

Ce document vous aide à comprendre comment Cloud Logging utilise les rôles et les autorisations Identity and Access Management (IAM) pour contrôler l'accès aux ressources Logging. Vos rôles IAM déterminent si vous pouvez effectuer des actions telles que 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 comme l'explorateur de journaux. Si vous exécutez une commande API Logging ou Google Cloud CLI, vos rôles IAM déterminent 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 attribués à une ressource, comme un projet Trusted Cloud , un dossier, un bucket ou une organisation. Par exemple, vous pouvez attribuer à un compte principal le rôle Lecteur de journaux (role/logging.viewer) sur un projet Trusted Cloud spécifique.

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 de 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 à certaines entrées de journaux d'un bucket de journaux.

Accorder l'accès aux buckets de journaux

Le rôle Lecteur de journaux (role/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 principal a besoin d'accéder aux journaux d'accès aux données, accordez-lui le rôle 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.

La journalisation est également compatible avec 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 journaux dans un bucket de journaux

Pour accorder à un compte principal l'accès à certaines entrées de journaux stockées dans un bucket de journaux, créez une vue de journaux, puis accordez-lui l'accès à cette vue. Par exemple, vous pouvez créer une vue de journaux dans 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 savoir comment créer des vues de journaux et découvrir les différentes stratégies que vous pouvez utiliser pour accorder l'accès à la vue, consultez Configurer des vues de journaux dans 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 Trusted Cloud spécifiques et empêcher tout accès indésirable à d'autres ressources. Trusted Cloud by S3NS 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 Trusted 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 :

  • Pour autoriser un utilisateur à lire les journaux dans les buckets _Required et _Default ou à utiliser la page Explorateur 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 à é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 Trusted 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 Trusted Cloud by S3NS , 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 Trusted Cloud by S3NS , 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 et de supprimer des 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 Trusted Cloud by S3NS , 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 Trusted 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 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.

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}

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.