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.
Présentation
Les autorisations et les rôles IAM déterminent la façon dont vous pouvez utiliser l'API Logging, l'explorateur de journaux 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 l'explorateur 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.exclusions. {list ,get }.logging.locations. {list ,get }.logging.logEntries.list logging.logMetrics. {list ,get }.logging.views. {list ,get }.logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.queries.listShared logging.sinks. {list ,get }.logging.buckets. {list ,get }.logging.usage.get resourcemanager.projects.get logging.queries. {get ,list ,update ,create ,delete }.
|
projet, organisation, dossier, compte de facturation |
roles/ logging.privateLogViewer |
Lecteur des journaux privés | Autorisations roles/logging.viewer etlogging.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.cmekSettings. {get ,update }logging.exclusions. {list ,create ,get ,update ,delete }logging.locations. {list ,get }logging.logMetrics. {list ,create ,get ,update ,delete }logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,create ,get ,update ,delete }logging.views. {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 ,listLogs ,listResourceKeys ,listResourceValues } |
projet, organisation dossier, compte de facturation |
roles/ logging.admin |
Administrateur Logging | logging.exclusions. {list ,create ,get ,update ,delete }.logging.locations. {list ,get }.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. {list ,access ,create ,get ,update ,delete ,listLogs ,listResourceKeys ,listResourceValues }.logging.cmekSettings. {get ,update }.logging.usage.get resourcemanager.projects. {get ,list }.logging.queries. {get ,list ,update ,create ,delete ,share ,updateShared ,listShared }. |
projet, organisation, dossier, compte de facturation |
roles/viewer |
Lecteur | logging.buckets. {list ,get }.logging.cmekSettings.get logging.exclusions. {list ,get }.logging.locations. {list ,get }.logging.logEntries. {list ,download }.logging.logMetrics. {list ,get }.logging.logs.list logging.logServiceIndexes.list logging.logServices.list logging.sinks. {list ,get }.logging.usage.get logging.views. {list ,get ,listLogs ,listResourceValues ,listResourceKeys }.resourcemanager.projects.get logging.queries. {get ,list ,update ,create ,delete ,listShared }. |
projet, organisation, dossier |
roles/editor |
Éditeur | roles/viewer Autorisations Logging, plus:logging.cmekSettings.update logging.logEntries.create logging.logMetrics. {create ,update ,delete }.logging.logs.delete logging.queries. {get ,list ,update ,create ,delete ,listShared }.logging.views. {create ,update ,delete }. |
projet, organisation, dossier |
roles/owner |
Propriétaire | roles/editor Autorisations Logging, plus:logging.buckets. {create ,update ,delete ,undelete }.logging.exclusions. {create ,update ,delete }.logging.privateLogEntries.list logging.sinks. {create ,update ,delete }.logging.queries. {get ,list ,update ,create ,delete ,share ,updateShared ,listShared }.logging.views.access |
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 l'explorateur 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'outilgcloud
.
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 |
entries.list |
logging.logEntries.list oulogging.privateLogEntries.list |
projets, organisations, dossiers, comptes de facturation |
entries.tail |
logging.logEntries.list oulogging.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 |
Projets |
Autorisation de 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 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é qui inclut des autorisations permettant de gérer les exclusions, nous vous conseillons d'attribuer les autorisations
logging.sinks.*
au rôle plutôt que d'accorder les autorisationslogging.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.*
.