Guide du contrôle des accès

Cette page explique comment Cloud Logging utilise la gestion de l'authentification et des accès (IAM) pour contrôler l'accès aux données de journalisation dans les ressources Google Cloud.

Aperçu

Les autorisations et les rôles IAM déterminent la façon dont vous pouvez utiliser l'API Logging, la visionneuse de journaux de Google Cloud Console et l'outil de ligne de commande gcloud.

Les journaux sont consignés dans des buckets spécifiques au sein des projets, des organisations, des dossiers et des comptes de facturation Google Cloud. Chacune de ces ressources Google Cloud peut avoir son propre ensemble de membres, lesquels disposent d'ensembles de rôles et d'autorisations Cloud Logging spécifiques.

Pour utiliser Logging avec les données de journalisation dans un projet Google Cloud, vous devez être membre et disposer d'un rôle IAM vous autorisant à utiliser Logging. Les rôles IAM suivants s'appliquent à Logging :

  • Le rôle roles/logging.viewer (Visionneuse de journaux) vous donne un accès en lecture seule à toutes les fonctionnalités de Logging, à l'exception des journaux d'Access Transparency et des journaux d'audit concernant l'accès aux données.

  • Le rôle roles/logging.privateLogViewer (Lecteur des journaux privés) inclut le rôle roles/logging.viewer, et vous permet en outre de lire les journaux d'Access Transparency et les journaux d'audit concernant l'accès aux données. Ce rôle ne s'applique qu'aux buckets _Required et _Default.

  • Le rôle roles/logging.logWriter (Rédacteur de journaux) peut être accordé aux comptes de service afin de donner aux applications le niveau d'autorisation suffisant pour écrire des journaux. Ce rôle n'accorde pas de droits de lecture.

  • Le rôle roles/logging.bucketWriter (Rédacteur de buckets de journaux) peut être accordé aux comptes de service afin de donner à Cloud Logging le niveau d'autorisation suffisant pour écrire des journaux dans un bucket de journaux. Pour limiter ce rôle à un bucket spécifique, utilisez une condition IAM. Pour obtenir un exemple, consultez la section Routage de journaux d'un projet vers un autre bucket dans un autre projet.

  • Le rôle roles/logging.configWriter (Rédacteur de configuration des journaux) vous permet de créer des métriques basées sur les journaux, des exclusions, des buckets et des vues, ainsi que d'exporter des récepteurs. Pour utiliser la visionneuse de journaux (console) pour ces actions, ajoutez le rôle roles/logging.viewer.

  • Le rôle roles/logging.admin (Administrateur Logging) vous accorde toutes les autorisations liées à Logging.

  • Le rôle roles/logging.viewAccessor (Accesseur de vues de journaux) vous permet de lire les journaux dans une vue. Pour limiter ce rôle à une vue dans un bucket spécifique, utilisez une condition IAM. Pour obtenir un exemple, consultez la section Lire les journaux d'un bucket.

  • Le rôle roles/viewer (Lecteur de projet) est identique au rôle roles/logging.viewer. Il vous donne un accès en lecture seule à toutes les fonctionnalités de Logging, à l'exception des journaux d'Access Transparency et des journaux d'audit concernant l'accès aux données. Ce rôle ne s'applique qu'aux buckets _Required et _Default.

  • Le rôle roles/editor (Éditeur de projet) inclut les autorisations du rôle roles/logging.viewer, et vous permet en outre d'écrire des entrées de journal, de supprimer des journaux et de créer des métriques basées sur les journaux. Il ne vous permet pas de créer des récepteurs d'exportation ni de lire les journaux d'Access Transparency ou les journaux d'audit concernant l'accès aux données.

  • Le rôle roles/owner (Propriétaire du projet) vous donne un accès complet à Logging, y compris aux journaux d'Access Transparency et aux journaux d'audit concernant l'accès aux données.

Pour en savoir plus sur les rôles et les autorisations de Logging, consultez la section Autorisations et rôles ci-dessous.

Attribuer des rôles

Pour accorder un rôle à un membre, vous devez disposer de l'ensemble des autorisations définies dans le rôle roles/owner (Propriétaire du projet). Pour savoir comment accorder des rôles, consultez la page Accorder, modifier et révoquer les accès.

Si vous tentez d'accéder à une ressource Google Cloud et que vous ne disposez pas des autorisations nécessaires, contactez le membre indiqué comme étant le propriétaire pour la ressource.

Autorisations et rôles

Le tableau suivant répertorie les rôles IAM qui permettent d'accéder à Cloud Logging. Chaque rôle possède un ensemble spécifique d'autorisations Logging. Les rôles peuvent être attribués aux membres des types de ressources répertoriés.

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

Nom du rôle Titre du rôle Autorisations Logging Type de ressource
roles/
logging.viewer
Visionneuse de journaux logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
logging.buckets.{list, get}
logging.usage.get
resourcemanager.projects.get
projet, organisation,
dossier, compte de facturation
roles/
logging.privateLogViewer
Lecteur des journaux privés Autorisations roles/logging.viewer, plus :
logging.privateLogEntries.list
projet, organisation,
dossier, compte de facturation
roles/
logging.logWriter
Rédacteur de journaux logging.logEntries.create projet, organisation,
dossier, compte de facturation
roles/
logging.configWriter
Rédacteur de configuration des journaux logging.buckets.{list, create, get, update, delete, undelete}
logging.exclusions.{list, create, get, update, delete}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, create, get, update, delete}
resourcemanager.projects.{get, list}
projet, organisation,
dossier, compte de facturation
roles/
logging.bucketWriter
Rédacteur de bucket de journaux logging.buckets.write Projet
roles/
logging.viewAccessor
Accesseur de vues de journaux logging.views.access projet, organisation
dossier, compte de facturation
roles/
logging.admin
Administrateur Logging logging.exclusions.{list, create, get, update, delete}
logging.logEntries.{create, list}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.{delete, list}
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
logging.buckets.{list, get, update, create, delete, undelete}
logging.views.access
logging.usage.get
resourcemanager.projects.get
projet, organisation,
dossier, compte de facturation
roles/viewer Lecteur logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
resourcemanager.projects.get
projet, organisation,
dossier
roles/editor Éditeur Autorisations Logging roles/viewer, plus :
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
projet, organisation,
dossier
roles/owner Propriétaire Autorisations Logging roles/editor, plus :
logging.privateLogEntries.list
logging.sinks.{create, update, delete}
projet, organisation,
dossier

Rôles personnalisés

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

  • Pour un rôle accordant des autorisations pour l'API Logging, choisissez parmi les autorisations figurant dans la section Autorisations des API.

  • Pour un rôle accordant des autorisations d'utilisation de la visionneuse de journaux, choisissez parmi les groupes d'autorisations figurant dans la section Autorisations de la console.

  • Pour un rôle accordant des autorisations d'utilisation de gcloud logging, consultez la page de présentation de l'outil gcloud.

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.

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
billingAccounts.locations.buckets.views.* logging.views.* (voir projects.locations.buckets.views.*.) Comptes de facturation
entries.list 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
folders.locations.buckets.views.* logging.views.* (voir projects.locations.buckets.views.*) 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
organizations.locations.buckets.views.* logging.buckets.views..* (voir projects.locations.buckets.views.*) 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 Projets

Autorisations de la console

Le tableau suivant répertorie les autorisations nécessaires pour utiliser la visionneuse 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 les journaux d'Access Transparency Ajouter logging.privateLogEntries.list
Possibilité d'afficher des métriques basées sur les journaux Ajouter logging.logMetrics.{list, get}
Possibilité d'afficher les exportations 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'exporter des journaux 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}

Autorisations de la ligne de commande

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

Pour utiliser les commandes gcloud logging, vous devez disposer de l'autorisation serviceusage.services.use.

Vous devez également disposer du rôle IAM correspondant à l'emplacement du journal et à votre cas d'utilisation. Pour plus d'informations, consultez la section Autorisations de l'interface de ligne de commande.

Accéder aux journaux exportés

Pour créer un récepteur afin d'exporter des journaux, vous devez disposer des autorisations roles/logging.configWriter, roles/logging.admin ou roles/owner.

Une fois qu'un récepteur commence à exporter des journaux, il a un accès complet à toutes les entrées de journal reçues. Les récepteurs peuvent exporter des entrées de journaux privés, y compris des journaux d'Access Transparency et des journaux d'audit concernant l'accès aux données.

Une fois les entrées de journal exportées, l'accès à ces copies est entièrement contrôlé par les autorisations et les rôles IAM sur les destinations suivantes : Cloud Storage, BigQuery ou Pub/Sub.

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

Les champs d'application d'accès représentent l'ancienne méthode de spécification des autorisations associées à 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

Bonnes pratiques

  • À présent que les rôles IAM sont disponibles, nous vous recommandons d'attribuer le champ d'application "Accès complet à toutes les API Google Cloud activées" à toutes vos instances de VM :

    https://www.googleapis.com/auth/cloud-platform

    Vous pouvez attribuer des rôles IAM spécifiques au compte de service de votre instance de VM pour restreindre l'accès à des API spécifiques. Pour plus d'informations, voir Autorisations de compte de service.

  • Lors de la création d'un rôle personnalisé incluant des autorisations permettant de gérer les exclusions, nous vous conseillons d'accorder les autorisations logging.sinks.* au rôle plutôt que d'accorder les autorisations logging.exclusions.*.

    La gestion des exclusions fait partie des récepteurs de journaux. Par conséquent, toutes les autorisations liées à la gestion des récepteurs, y compris les exclusions, sont incluses dans les autorisations logging.sinks.*.