Recevoir des événements à l'aide de Cloud Audit Logs (gcloud CLI)

Ce guide de démarrage rapide explique comment recevoir des événements à partir de Cloud Storage dans un service Cloud Run non authentifié à l'aide d'Eventarc.

Vous pouvez suivre ce guide de démarrage rapide dans Google Cloud CLI. Pour obtenir des instructions sur l'utilisation de la console, consultez la page Créer un déclencheur à l'aide de la console Google Cloud.

Dans le cadre de ce guide démarrage rapide, vous allez effectuer les étapes suivantes :

  1. Créer un bucket Cloud Storage qui servira de source d'événements.

  2. Déployer un service récepteur d'événements sur Cloud Run.

  3. Créer un déclencheur d'événement.

  4. Générer un événement en important un fichier dans le bucket Cloud Storage et l'afficher dans les journaux Cloud Run.

Avant de commencer

Les contraintes de sécurité définies par votre organisation peuvent vous empêcher d'effectuer les étapes suivantes. Pour obtenir des informations de dépannage, consultez la page Développer des applications dans un environnement Google Cloud limité.

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Pub/Sub APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com eventarc.googleapis.com pubsub.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Pub/Sub APIs:

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com eventarc.googleapis.com pubsub.googleapis.com
  12. Mettez à jour les composants gcloud :
    gcloud components update
  13. Connectez-vous à votre compte :
    gcloud auth login
  14. Définissez les variables de configuration utilisées dans ce guide de démarrage rapide :
    export REGION=us-central1
    gcloud config set run/region ${REGION}
    gcloud config set run/platform managed
    gcloud config set eventarc/location ${REGION}
  15. Si vous êtes le créateur du projet, vous disposez du rôle de base Propriétaire (roles/owner). Par défaut, ce rôle Identity and Access Management (IAM) inclut les autorisations nécessaires pour accéder à la plupart des ressources Google Cloud. Vous pouvez ignorer cette étape.

    Si vous n'êtes pas le créateur du projet, les autorisations requises doivent être accordées au compte principal approprié sur le projet. Par exemple, un compte principal peut être un compte Google (pour les utilisateurs finaux) ou un compte de service (pour les applications et les charges de travail de calcul). Pour en savoir plus, consultez la page Rôles et autorisations pour la destination de votre événement.

    Notez que par défaut, les autorisations Cloud Build incluent des autorisations permettant d'importer et de télécharger des artefacts Artifact Registry.

    Autorisations requises

    Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

    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.

  16. Activez les journaux d'audit Cloud de type Lecture administrateur, Lecture de données et Ecriture de données dans Cloud Storage :

    Notez qu'au niveau du projet, vous devez disposer du rôle roles/owner (Identity and Access Management) pour configurer les journaux d'audit pour l'accès aux données pour vos ressources Google Cloud.

    1. Consultez la stratégie IAM de votre projet et stockez-la dans un fichier :
      gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    2. Modifiez votre stratégie dans /tmp/policy.yaml. Vous ne pouvez ajouter ou modifier que la configuration des journaux d'audit pour l'accès aux données.

      auditConfigs:
      - auditLogConfigs:
      - logType: ADMIN_READ
      - logType: DATA_WRITE
      - logType: DATA_READ
      service: storage.googleapis.com
    3. Rédigez votre nouvelle stratégie IAM :
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Si la commande précédente signale un conflit avec une autre modification, répétez ces étapes en commençant par lire la stratégie IAM du projet.
  17. Notez le compte de service Compute Engine par défaut, car vous allez l'associer à un déclencheur Eventarc pour représenter l'identité du déclencheur à des fins de test. Ce compte de service est créé automatiquement après l'activation ou l'utilisation d'un service Google Cloud qui utilise Compute Engine, avec le format d'adresse e-mail suivant :

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud. Vous pouvez trouver le numéro de votre projet sur la page Bienvenue de la console Google Cloud ou en exécutant la commande suivante :

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

    Pour les environnements de production, nous vous recommandons vivement de créer un compte de service et de lui attribuer un ou plusieurs rôles IAM contenant les autorisations minimales requises conformément au principe du moindre privilège.

  18. Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) sur le projet au compte de service Compute Engine par défaut afin que le déclencheur Eventarc puisse recevoir des événements en provenance des fournisseurs d'événements
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver
  19. Si vous avez activé l'agent de service Cloud Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) au compte de service pour accepter les requêtes push Pub/Sub authentifiées. Sinon, ce rôle est attribué par défaut :
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  20. Téléchargez et installez l'outil de gestion du code source Git.

Créer un dépôt standard Artifact Registry

Créez un dépôt standard Artifact Registry pour stocker votre image de conteneur :
gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Remplacez REPOSITORY par un nom unique pour le dépôt.

Créer un bucket Cloud Storage

Ce guide de démarrage rapide utilise Cloud Storage comme source d'événements. Pour créer un bucket de stockage, procédez comme suit :

gsutil mb -l ${REGION} gs://events-quickstart-PROJECT_ID/

Une fois la source d'événements créée, vous pouvez déployer le service récepteur d'événements sur Cloud Run.

Déployer le service récepteur d'événements sur Cloud Run

Déployez un service Cloud Run qui reçoit et consigne les événements. Pour déployer l'exemple de service récepteur d'événements, procédez comme suit :

  1. Clonez le dépôt GitHub.

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    .NET

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    
  2. Créez le conteneur et importez-le dans Cloud Build :

    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/helloworld-events:v1
  3. Déployez l'image de conteneur dans Cloud Run :

    gcloud run deploy helloworld-events \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/helloworld-events:v1 \
        --allow-unauthenticated

    Une fois le déploiement effectué, la ligne de commande affiche l'URL du service.

    Maintenant que vous avez déployé votre service récepteur d'événements appelé helloworld-events sur Cloud Run, vous pouvez configurer votre déclencheur.

Créer un déclencheur Eventarc

Le déclencheur Eventarc envoie des événements à partir du bucket Cloud Storage vers le service Cloud Run helloworld-events.

  1. Créez un déclencheur filtrant les événements Cloud Storage et utilisant le compte de service Compute Engine par défaut du projet Google Cloud :

    gcloud eventarc triggers create events-quickstart-trigger \
        --destination-run-service=helloworld-events \
        --destination-run-region=${REGION} \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Cette action crée un déclencheur appelé events-quickstart-trigger.

    Notez que lorsque vous créez un déclencheur Eventarc pour la première fois dans un projet Google Cloud, le provisionnement de l'agent de service Eventarc peut prendre quelques instants. Ce problème peut généralement être résolu en essayant à nouveau de créer le déclencheur. Pour en savoir plus, consultez Erreurs d'autorisation refusée.

  2. Pour vérifier que events-quickstart-trigger a bien été créé, exécutez la commande suivante :

    gcloud eventarc triggers list --location=${REGION}

    Le fichier events-quickstart-trigger est listé avec une destination qui est le service Cloud Run, helloworld-events.

Générer et afficher un événement

  1. Pour générer un événement, importez un fichier texte dans Cloud Storage :

     echo "Hello World" > random.txt
     gsutil cp random.txt gs://events-quickstart-PROJECT_ID/random.txt
    

    L'importation génère un événement, et le service Cloud Run consigne le message de l'événement.

  2. Pour afficher les entrées de journal liées aux événements et créées par votre service, exécutez la commande suivante :

    gcloud logging read 'textPayload: "Detected change in Cloud Storage bucket"'
    
  3. Recherchez une entrée de journal semblable à ceci :

    Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
    

    BUCKET_NAME est le nom du bucket Cloud Storage.

Vous venez de déployer un service récepteur d'événements sur Cloud Run, de créer un déclencheur Eventarc, de générer un événement à partir de Cloud Storage et de l'afficher dans les journaux Cloud Run.

Effectuer un nettoyage

Bien que Cloud Run ne facture pas un service inutilisé, il se peut que des frais vous soient toujours facturés pour le stockage de l'image de conteneur dans Artifact Registry, le stockage des fichiers dans votre bucket Cloud Storage, et lesRessources Eventarc.

Vous pouvez :

  1. Supprimez votre image de conteneur.

  2. Supprimer votre bucket de stockage.

  3. Supprimer le déclencheur Eventarc.

Vous pouvez également supprimer votre projet Google Cloud pour éviter des frais. La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

Étapes suivantes