Chez DoiT International, nous accompagnons une grande variété d'éditeurs de logiciels dans le monde entier. Nous recevons régulièrement des demandes similaires de la part de plusieurs clients. Récemment, j'ai constaté que plusieurs organisations souhaitaient acheminer les logs de plusieurs projets Google Cloud Platform (GCP) vers un projet unique, afin d'y accéder et de les superviser de façon centralisée.
De nombreuses entreprises envoient leurs logs vers des fournisseurs tiers comme Datadog ou Splunk ; dans cet article, je vais montrer comment unifier vos fichiers de logs avec un contrôle d'accès en utilisant uniquement le service Cloud Logging de GCP (anciennement Stackdriver). À la clé : une solution simple et élégante pour répondre à un besoin de plus en plus courant.
Architecture

Vue d'ensemble de l'architecture de démonstration
En résumé
Pour cet exemple, je vais créer deux projets de test et configurer leurs logs pour qu'ils soient envoyés vers un projet central. En bonus, je montrerai aussi comment centraliser le monitoring et les métriques (un autre cas d'usage fréquent).
- Créez trois projets de test sur GCP : mike-test-log-view, mike-test-log-a et mike-test-log-b
- Créez un logs bucket dans le projet mike-test-log-view et copiez son chemin d'accès
- Créez un log sink de type Cloud Logging bucket, pointant vers le chemin copié à l'étape 2, pour les projets mike-test-log-a et mike-test-log-b
- Affichez les détails de chaque log sink et copiez l'adresse e-mail du Service Account writer entity (générée dynamiquement pour chacun)
- Modifiez les rôles IAM du projet mike-test-log-view et ajoutez chaque Service Account copié depuis les log sinks, en lui attribuant le rôle Logs Bucket Writer
- Modifiez les rôles IAM du projet mike-test-log-view et ajoutez le rôle Logs View Accessor avec une condition pointant vers le chemin de votre logs bucket (afin de restreindre l'accès par utilisateur)
- Ouvrez la page Logs Explorer, cliquez sur Refine Scope en haut, sélectionnez Scope by storage puis votre logs bucket
Pas à pas
Les étapes suivantes montrent comment acheminer les logs de plusieurs projets Google Cloud Platform vers un projet centralisé unique.
Étape 1 : créer les projets de test
Cette étape se passe d'explication. J'ai créé trois projets comme décrit ci-dessus à des fins de démonstration.
Étape 2 : créer le logs bucket dans le projet de visualisation

Rendez-vous sur Logs Storage, cliquez sur Create Logs Bucket, puis copiez le chemin d'accès au bucket
Étape 3 : créer les log sinks dans les projets de test
Créez les log sinks dans les projets de test a et b respectivement.

Définissez la destination du sink sur Cloud Logging Bucket

Sélectionnez l'option Use a logs bucket in another project

Log sink pour le projet de test a, destination complétée par le chemin du logs bucket (après le domaine)

Log sink pour le projet de test b, destination complétée par le chemin du logs bucket (après le domaine)
Étape 4 : afficher les détails des log sinks et noter l'identité IAM writer
Pour chaque projet de test, dans la vue en liste de la page Log Router Sinks, cliquez sur les … (3 points) tout à droite de la ligne correspondant à votre nouveau log sink, puis sélectionnez View Details.

Copiez la Writer identity, qui correspond au service account créé dynamiquement avec le log sink. Vous l'ajouterez au projet de visualisation pour lui permettre d'écrire des entrées de log dans votre logs bucket central.
Étape 5 : modifier les rôles IAM du projet de visualisation pour les writers des log sinks
Pour chaque log sink, dans votre projet de visualisation central, ouvrez la page d'administration IAM et ajoutez un membre avec le rôle Logs Bucket Writer en utilisant le service account Writer identity copié à l'étape 4, comme illustré.

Ajout des rôles IAM autorisant les log sinks à écrire des entrées de log dans le projet de visualisation
Étape 6 : modifier les rôles IAM du projet de visualisation pour les lecteurs de logs (utilisateurs)
Pour que les utilisateurs puissent consulter les logs dans le Logs Explorer, vous devez leur accorder la possibilité de modifier la vue (ou scope) en leur attribuant le rôle Logs View Accessor.

Octroi aux utilisateurs de la possibilité de modifier la vue (scope) du Logs Explorer
Vous pouvez (et devriez) affiner davantage le rôle IAM des utilisateurs en ajoutant une condition qui restreint l'accès aux seules ressources souhaitées. Dans ce cas, il s'agit du chemin vers le logs bucket que vous avez créé. Vous pouvez ainsi limiter la vue des utilisateurs aux seuls logs et buckets voulus, ce qui s'avère utile pour les contrôles de conformité.

Étape 7 : consulter les logs
Une fois les permissions en place, en quelques minutes seulement, vous devriez voir apparaître des entrées de logs dans votre projet de visualisation. Vous devez d'abord cliquer sur Refine Scope et sélectionner la source de logs souhaitée, comme illustré.

Affinage du scope du Logs Explorer pour explorer les logs envoyés au Logs Bucket par les sinks
Félicitations ! Depuis votre projet de visualisation, vous pouvez désormais consulter les logs des autres projets, comme illustré.

Les logs du projet de test a sont visibles dans le projet de visualisation
Bonus \#1 : réduire les coûts grâce aux filtres d'exclusion
Vous pouvez désactiver le log sink _Default sur vos projets afin d'éviter de payer la journalisation à plusieurs endroits.
Vous pouvez également ajouter des filtres d'exclusion (ou d'inclusion) à vos log sinks pour contrôler les services acheminés et ceux qui sont filtrés.
- Gérer les exclusions de logs
- Astuce : le champ rate correspond à un taux d'échantillonnage ; pensez à le passer à 100 (%)
Bonus \#2 : centraliser votre Cloud Monitoring
Google Cloud Operations (anciennement Stackdriver) est une plateforme d'observabilité complète qui, en plus de la journalisation, intègre un autre outil appelé Cloud Monitoring.
En quelques clics, vous pouvez créer un Workspace dans votre projet de visualisation, puis sélectionner vos autres projets pour centraliser votre monitoring et vos dashboards si vous le souhaitez.

J'espère que cet article vous aidera à mieux organiser et gérer la journalisation et l'observabilité au sein de votre organisation. Suivez-moi ou consultez le blog DoiT pour d'autres articles sur les astuces et techniques, les nouveautés, les bonnes pratiques et bien plus autour du cloud public.