Ce tutoriel vous explique comment créer deux applications de service sécurisées exécutées sur Cloud Run. Cette application est un éditeur Markdown qui inclut un service d'interface public permettant à n'importe qui de rédiger du texte Markdown et un service de backend privé qui convertit le texte Markdown au format HTML.
Le service de backend est privé et utilise la fonctionnalité d'authentification de service à service basée sur IAM intégrée à Cloud Run, qui limite l'accès au service. Les deux services sont conçus selon le principe du moindre privilège, sans accès au reste de Google Cloud, sauf si nécessaire.
Limites ou non-objectifs de ce tutoriel
Ce tutoriel ne décrit pas l'authentification des utilisateurs finaux, qui utilise Identity Platform ou Firebase Authentication pour générer des jetons d'ID utilisateur et vérifier manuellement l'identité des utilisateurs. Pour en savoir plus sur l'authentification des utilisateurs finaux, consultez le tutoriel Cloud Run sur l'authentification des utilisateurs finaux.
Ce tutoriel n'aborde pas la combinaison des méthodes d'authentification basée sur IAM et sur les jetons d'ID, car cette combinaison n'est pas disponible.
Objectifs
- Créer un compte de service dédié avec des autorisations minimales pour l'authentification de service à service et l'accès du service au reste de Google Cloud
- Écrire, créer et déployer deux services interagissant sur Cloud Run
- Effectuer des requêtes entre un service Cloud Run public et un service privé
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- Installez et initialisez gcloud CLI.
- Installez curl pour tester le service
Rôles requis
Pour obtenir les autorisations nécessaires pour suivre le tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Éditeur Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrateur Cloud Run (
roles/run.admin
) -
Créateur de comptes de service (
roles/iam.serviceAccountCreator
) -
Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin
) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) -
Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Administrateur de l'espace de stockage (
roles/storage.admin
) -
Administrateur de dépôts Artifact Registry (
roles/artifactregistry.repoAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer les paramètres par défaut de gcloud
Pour configurer gcloud avec les valeurs par défaut pour votre service Cloud Run, procédez comme suit :
Définissez le projet par défaut :
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par le nom du projet que vous avez créé pour ce tutoriel.
Configurez gcloud pour la région choisie :
gcloud config set run/region REGION
Remplacez REGION par la région Cloud Run compatible de votre choix.
Emplacements Cloud Run
Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute vos services Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.
Lors de la sélection de la région dans laquelle exécuter vos services Cloud Run, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité.
Vous pouvez généralement sélectionner la région la plus proche de vos utilisateurs, mais vous devez tenir compte de l'emplacement des autres produits Google Cloud utilisés par votre service Cloud Run.
L'utilisation conjointe de produits Google Cloud dans plusieurs emplacements peut avoir une incidence sur la latence et le coût de votre service.
Cloud Run est disponible dans les régions suivantes :
Soumis aux tarifs de niveau 1
asia-east1
(Taïwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)asia-south1
(Mumbai, Inde)europe-north1
(Finlande) Faibles émissions de CO2europe-southwest1
(Madrid) Faibles émissions de CO2europe-west1
(Belgique) Faibles émissions de CO2europe-west4
(Pays-Bas) Faibles émissions de CO2europe-west8
(Milan)europe-west9
(Paris) Faibles émissions de CO2me-west1
(Tel Aviv)us-central1
(Iowa) Faibles émissions de CO2us-east1
(Caroline du Sud)us-east4
(Virginie du Nord)us-east5
(Columbus)us-south1
(Dallas) Faibles émissions de CO2us-west1
(Oregon) Faibles émissions de CO2
Soumis aux tarifs de niveau 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Séoul, Corée du Sud)asia-southeast1
(Singapour)asia-southeast2
(Jakarta)asia-south2
(Delhi, Inde)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsovie, Pologne)europe-west10
(Berlin) Faibles émissions de CO2.europe-west12
(Turin)europe-west2
(Londres, Royaume-Uni) Faibles émissions de CO2europe-west3
(Francfort, Allemagne) Faibles émissions de CO2europe-west6
(Zurich, Suisse) Faibles émissions de CO2me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montréal) Faibles émissions de CO2northamerica-northeast2
(Toronto) Faibles émissions de CO2southamerica-east1
(São Paulo, Brésil) Faibles émissions de CO2southamerica-west1
(Santiago, Chili) Faibles émissions de CO2us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si vous avez déjà créé un service Cloud Run, vous pouvez afficher la région dans le tableau de bord Cloud Run de la console Google Cloud.
Récupérer l'exemple de code
Pour récupérer l’exemple de code à utiliser, procédez comme suit :
Clonez le dépôt de l'exemple d'application sur votre Cloud Shell ou votre machine locale :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code Cloud Run :
Node.js
cd nodejs-docs-samples/run/markdown-preview/
Python
cd python-docs-samples/run/markdown-preview/
Go
cd golang-samples/run/markdown-preview/
Java
cd java-docs-samples/run/markdown-preview/
C#
cd dotnet-docs-samples/run/markdown-preview/
Examiner le service de rendu privé Markdown
Du point de vue de l'interface, il existe une spécification d'API simple pour le service Markdown :
- Un point de terminaison à
/
- Des requêtes POST sont attendues
- Le corps de la requête POST est sous forme de texte Markdown
Vous pouvez examiner l'ensemble du code pour des raisons de sécurité ou simplement pour en savoir plus en consultant le répertoire ./renderer/
. Notez que le tutoriel n'explique pas le code de transformation Markdown.
Transmettre le code à l'aide du service de rendu privé Markdown
Pour transmettre votre code, créez le service avec Cloud Build, importez-le dans Artifact Registry, puis déployez-le sur Cloud Run :
Accédez au répertoire
renderer
:Node.js
cd renderer/
Python
cd renderer/
Go
cd renderer/
Java
cd renderer/
C#
cd Samples.Run.MarkdownPreview.Renderer/
Créez un dépôt Artifact Registry :
gcloud artifacts repositories create REPOSITORY \ --repository-format docker \ --location REGION
Remplacez :
- REPOSITORY par un nom unique pour le dépôt Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
- REGION par la région Google Cloud à utiliser pour le dépôt Artifact Registry.
Exécutez la commande suivante pour créer votre conteneur et publier sur Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
renderer
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
renderer
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
renderer
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Java
Cet exemple utilise Jib pour créer des images Docker à l'aide d'outils Java courants. Jib optimise les builds de conteneurs sans requérir de fichier Dockerfile ni d'installation Docker. Découvrez comment créer des conteneurs Java avec Jib.
Utilisez l'assistant d'identification gcloud pour autoriser Docker à transférer du contenu vers Artifact Registry.
gcloud auth configure-docker
Utilisez le plug-in Maven Jib pour créer et transférer le conteneur dans Artifact Registry.
mvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
renderer
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message BUILD SUCCESS apparaît. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
renderer
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Déployez le service en tant que service privé avec accès restreint.
Cloud Run fournit des fonctionnalités prêtes à l'emploi pour le contrôle des accès et l'identité du service. Le contrôle des accès fournit une couche d'authentification qui empêche les utilisateurs et les autres services d'appeler le service. L'identité du service permet d'empêcher votre service d'accéder à d'autres ressources Google Cloud en créant un compte de service dédié avec des autorisations limitées.
Créez un compte de service à utiliser comme "identité de calcul" du service de rendu. Par défaut, il ne dispose d'aucun autre droit que l'abonnement au projet.
Ligne de commande
gcloud iam service-accounts create renderer-identity
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Le service de rendu Markdown ne s'intègre pas directement à d'autres éléments de Google Cloud. Aucune autorisation supplémentaire n'est requise.
Déployez le service avec le compte de service
renderer-identity
et refusez tout accès non authentifié.Ligne de commande
gcloud run deploy renderer \ --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer \ --service-account renderer-identity \ --no-allow-unauthenticated
Cloud Run peut utiliser le nom de compte de service court au lieu de l'adresse e-mail complète si le compte de service fait partie du même projet.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Essayer le service de rendu privé Markdown
Les services privés ne peuvent pas être chargés directement par un navigateur Web. Utilisez plutôt curl
ou un outil d'interface de requête HTTP similaire qui permet d'injecter un en-tête Authorization
.
Pour envoyer du texte en gras au service et faire convertir les astérisques Markdown en balises HTML <strong>
, procédez comme suit :
Obtenez l'URL à partir du résultat de déploiement.
Utilisez
gcloud
pour dériver un jeton d'identité spécial exclusivement dédié au développement pour l'authentification :TOKEN=$(gcloud auth print-identity-token)
Créez une requête curl qui transmet le texte brut Markdown en tant que paramètre de chaîne de requête avec une URL contenant une séquence d'échappement :
curl -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: text/plain' \ -d '**Hello Bold Text**' \ SERVICE_URL
Replacez SERVICE_URL par l'URL fournie après le déploiement du service de rendu Markdown.
La réponse doit être un extrait de code HTML :
<strong>Hello Bold Text</strong>
Examiner l'intégration entre le service d'édition et le service de rendu
Le service d'édition propose une interface utilisateur de saisie de texte simple et un espace permettant d'afficher l'aperçu HTML. Avant de continuer, examinez le code récupéré précédemment en ouvrant le répertoire ./editor/
.
Ensuite, explorez les quelques sections de code suivantes qui intègrent de manière sécurisée les deux services.
Node.js
Le module render.js
crée des requêtes authentifiées à destination du service de rendu privé. Il utilise le serveur de métadonnées Google Cloud de l'environnement Cloud Run pour créer un jeton d'identité et l'ajouter à la requête HTTP dans un en-tête Authorization
.
Dans d'autres environnements, le module render.js
demande un jeton aux serveurs de Google à l'aide des identifiants par défaut de l'application.
Analysez le texte Markdown JSON et envoyez-le au service de rendu afin qu'il soit converti au format HTML.
Python
La méthode new_request
crée des requêtes authentifiées à destination de services privés.
Elle utilise le serveur de métadonnées Google Cloud de l'environnement Cloud Run pour créer un jeton d'identité et l'ajouter à la requête HTTP dans le cadre d'un en-tête Authorization
.
Dans d'autres environnements, le service new_request
demande un jeton d'identité aux serveurs de Google en s'authentifiant avec les identifiants par défaut de l'application.
Analysez le texte Markdown JSON et envoyez-le au service de rendu afin qu'il soit converti au format HTML.
Go
Le service RenderService
crée des requêtes authentifiées à destination de services privés. Il utilise le serveur de métadonnées Google Cloud de l'environnement Cloud Run pour créer un jeton d'identité et l'ajouter à la requête HTTP dans le cadre d'un en-tête Authorization
.
Dans d'autres environnements, le service RenderService
demande un jeton d'identité aux serveurs de Google en s'authentifiant avec les identifiants par défaut de l'application.
La requête est envoyée au service de rendu après l'ajout du texte Markdown à convertir au format HTML. Les erreurs de réponse sont traitées de manière à différencier les problèmes de communication de la fonctionnalité de rendu.
Java
La requête makeAuthenticatedRequest
crée des requêtes authentifiées à destination de services privés. Elle utilise le serveur de métadonnées Google Cloud de l'environnement Cloud Run pour créer un jeton d'identité et l'ajouter à la requête HTTP dans le cadre d'un en-tête Authorization
.
Dans d'autres environnements, la requête makeAuthenticatedRequest
demande un jeton d'identité aux serveurs de Google en s'authentifiant avec les identifiants par défaut de l'application.
Analysez le texte Markdown JSON et envoyez-le au service de rendu afin qu'il soit converti au format HTML.
C#
La requête GetAuthenticatedPostResponse
crée des requêtes authentifiées à destination de services privés. Elle utilise le serveur de métadonnées Google Cloud de l'environnement Cloud Run pour créer un jeton d'identité et l'ajouter à la requête HTTP dans le cadre d'un en-tête Authorization
.
Dans d'autres environnements, la requête GetAuthenticatedPostResponse
demande un jeton d'identité aux serveurs de Google en s'authentifiant avec les identifiants par défaut de l'application.
Analysez le texte Markdown JSON et envoyez-le au service de rendu afin qu'il soit converti au format HTML.
Transmettre le code à l'aide du service d'édition public
Pour créer et déployer votre code, procédez comme suit :
Accédez au répertoire
editor
:Node.js
cd ../editor
Python
cd ../editor
Go
cd ../editor
Java
cd ../editor
C#
cd ../Samples.Run.MarkdownPreview.Editor/
Exécutez la commande suivante pour créer votre conteneur et publier sur Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
editor
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Container Registry et peut être réutilisée au besoin.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
editor
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
editor
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Java
Cet exemple utilise Jib pour créer des images Docker à l'aide d'outils Java courants. Jib optimise les builds de conteneurs sans requérir de fichier Dockerfile ni d'installation Docker. Découvrez comment créer des conteneurs Java avec Jib.mvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
editor
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message BUILD SUCCESS apparaît. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
Où PROJECT_ID correspond à votre ID de projet Google Cloud et
editor
au nom que vous souhaitez attribuer à votre service.En cas de réussite, un message SUCCESS apparaît contenant l'ID, l'heure de création et le nom de l'image. L'image est stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Déployez le service en tant que service privé avec un accès spécial au service de rendu.
Créez un compte de service à utiliser comme "identité de calcul" du service privé. Par défaut, il ne dispose d'aucun autre droit que l'abonnement au projet.
Ligne de commande
gcloud iam service-accounts create editor-identity
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Le service d'édition n'a pas besoin d'interagir avec des éléments Google Cloud autres que le service de rendu Markdown.
Accordez à l'identité de calcul
editor-identity
un accès lui permettant d'appeler le service de rendu Markdown. Tout service qui l'utilise comme identité de calcul disposera de ce privilège.Ligne de commande
gcloud run services add-iam-policy-binding renderer \ --member serviceAccount:editor-identity@PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.invoker
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Étant donné que le rôle de demandeur est attribué dans le contexte du service de rendu, ce service est le seul service Cloud Run privé que l'éditeur peut invoquer.
Déployez le service avec le compte de service
editor-identity
et autorisez l'accès public non authentifié.Ligne de commande
gcloud run deploy editor --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor \ --service-account editor-identity \ --set-env-vars EDITOR_UPSTREAM_RENDER_URL=SERVICE_URL \ --allow-unauthenticated
Remplacez :
- PROJECT_ID par votre ID de projet
- SERVICE_URL par l'URL fournie après le déploiement du service de rendu Markdown
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Déployez le service d'édition :
Accordez à
allUsers
l'autorisation d'appeler le service :
Comprendre le trafic HTTPS
Le rendu du contenu Markdown à l'aide de ces services implique trois requêtes HTTP.
Essayez-le !
Pour essayer les deux applications de service complètes, procédez comme suit :
Accédez dans votre navigateur à l'URL fournie par l'étape de déploiement ci-dessus.
Essayez de modifier le texte Markdown sur la gauche, puis cliquez sur le bouton pour en afficher un aperçu sur la droite.
Elle devrait se présenter comme ceci :
Si vous décidez de poursuivre le développement de ces services, n'oubliez pas qu'ils ont un accès IAM restreint au reste de Google Cloud. Des rôles IAM supplémentaires devront donc leur être attribués afin de pouvoir accéder à de nombreux autres services.
Nettoyer
Si vous avez créé un projet pour ce tutoriel, supprimez-le. Si vous avez utilisé un projet existant et que vous souhaitez le conserver sans les modifications du présent tutoriel, supprimez les ressources créées pour ce tutoriel.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer les ressources du tutoriel
Supprimez les services Cloud Run que vous avez déployés dans ce tutoriel :
gcloud
gcloud run services delete editor gcloud run services delete renderer
Vous pouvez également supprimer des services Cloud Run à partir de Google Cloud Console.
Supprimez les configurations gcloud par défaut que vous avez ajoutées lors de la configuration du tutoriel.
gcloud config unset run/region
Supprimez la configuration du projet :
gcloud config unset project
Supprimez les autres ressources Google Cloud créées dans ce tutoriel :
- Supprimez l'image de conteneur d'éditeur, nommée
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
, de Artifact Registry. - Supprimez l'image de conteneur de rendu, nommée
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
, de Artifact Registry. - Supprimez le compte de service de l'éditeur
editor-identity@PROJECT_ID.iam.gserviceaccount.com
. - Supprimez le compte de service du moteur de rendu
renderer-identity@PROJECT_ID.iam.gserviceaccount.com
.
- Supprimez l'image de conteneur d'éditeur, nommée
Étape suivante
- Sécurisez davantage votre projet en parcourant la checklist Utiliser IAM en toute sécurité.
- Approfondissez cet exemple d'application pour suivre l'utilisation de Markdown avec les métriques personnalisées de Cloud Monitoring.
- Consultez le tutoriel Pub/Sub pour découvrir une approche des microservices asynchrones et sécurisés.