Journaux d'audit Cloud avec Cloud Storage

Cette page fournit des informations supplémentaires sur l'utilisation des journaux d'audit Cloud avec Cloud Storage. Utilisez les journaux d'audit Cloud pour générer des journaux concernant les opérations d'API effectuées dans Cloud Storage.

Présentation

Les services Google Cloud génèrent des journaux d'audit pour vous aider à déterminer qui fait quoi, où et quand dans vos ressources Google Cloud. Vous pouvez également joindre des informations personnalisées aux journaux d'audit pour obtenir des informations plus précises sur l'accès à vos ressources.

Vos projets Google Cloud ne contiennent que les journaux d'audit des ressources directement intégrées au projet Google Cloud. Les autres ressources Google Cloud, telles que les dossiers, les organisations et les comptes de facturation, contiennent les journaux d'audit de l'entité elle-même.

Pour découvrir Cloud Audit Logs, consultez la page Cloud Audit Logs. Pour en savoir plus sur le format des journaux d'audit, consultez la page Comprendre les journaux d'audit.

Journaux d'audit disponibles

Les types de journaux d'audit suivants sont disponibles pour Cloud Storage :

  • Journaux d'audit des activités d'administration : entrées correspondant aux opérations de modification des accès aux ressources Cloud Storage, et aux opérations de création, de suppression ou de modification des buckets, des dossiers gérés ou des configurations de rapports d'inventaire. Vous ne pouvez pas les désactiver.

  • Journaux d'audit des accès aux données : entrées correspondant aux opérations dont le suivi n'est pas effectué dans les journaux d'audit des activités d'administration. Il existe plusieurs sous-types de journaux d'audit des accès aux données :

    • ADMIN_READ : entrées correspondant aux opérations qui lisent les configurations d'accès et les métadonnées des buckets, ou répertorient les buckets au sein d'un projet.

    • DATA_READ : entrées correspondant aux opérations qui lisent ou répertorient les ressources Cloud Storage autres que les buckets.

    • DATA_WRITE : entrées correspondant aux opérations de création, de suppression ou de modification des objets et des importations en plusieurs parties de l'API XML.

    Pour recevoir les journaux d'audit des accès aux données, vous devez les activer explicitement.

En plus des journaux d'audit pour Cloud Storage, Cloud Audit Logs peut créer des journaux d'audit pour Storage Insights. Les journaux d'audit Storage Insights sont générés chaque fois que des configurations de rapport d'inventaire sont créées, mises à jour et récupérées, et lorsque des rapports d'inventaire sont récupérés.

Pour obtenir une description plus complète des types de journaux d'audit, consultez la section Types de journaux d'audit.

Opérations auditées

Le tableau suivant récapitule les opérations Cloud Storage correspondant à chaque type de journal d'audit :

Type de journal d'audit Sous-type Opérations Cloud Storage
Activités d'administration ADMIN_WRITE
  • Définir/Modifier des stratégies IAM
  • Modifier des listes de contrôles d'accès (LCA) d'objets3
  • Créer des buckets
  • Supprimer des buckets
  • Mettre à jour les métadonnées des buckets
  • Créer des dossiers gérés
  • Supprimer des dossiers gérés
  • Créer des configurations de rapport d'inventaire
  • Mettre à jour des configurations de rapport d'inventaire
  • Supprimer des configurations de rapport d'inventaire
Accès aux données ADMIN_READ
  • Obtenir des stratégies IAM
  • Obtenir les LCA d'objet
  • Obtenir les métadonnées des buckets
  • Répertorier les buckets
Accès aux données DATA_READ
  • Obtenir les données d'objet
  • Obtenir les métadonnées d'objet
  • Répertorier les objets
  • Obtenir des métadonnées de dossiers gérés
  • Répertorier les dossiers gérés
  • Copier des objets1
  • Composer des objets1
  • Répertorier les importations en plusieurs parties de l'API XML actuellement en cours
  • Répertorier les parties de l'importation XML en plusieurs parties
  • Obtenir des configurations de rapport d'inventaire
  • Répertorier les configurations de rapport d'inventaire
  • Obtenir des rapports d'inventaire
  • Répertorier les rapports d'inventaire
Accès aux données DATA_WRITE
  • Créer des objets
  • Supprimer des objets2
  • Mettre à jour des métadonnées d'objet sans LCA2
  • Copier des objets1
  • Composer des objets1
  • Lancer des importations en plusieurs parties de l'API XML
  • Créer des parties dans une importation en plusieurs parties de l'API XML
  • Abandonner des importations en plusieurs parties de l'API XML2
  • Finaliser les importations en plusieurs parties de l'API XML

1 Ces opérations impliquent à la fois la lecture et l'écriture de données. Ces opérations génèrent donc deux entrées de journal.

2 Les journaux d'audit Cloud ne consignent pas les actions réalisées par les fonctionnalités de gestion du cycle de vie des objets ou de classe automatique. Pour connaître les différents modes de suivi de ces actions, consultez la section Options de suivi des opérations du cycle de vie.

3 Les journaux d'audit des activités d'administration ne sont pas générés si les LCA sont initialement définies à la création de l'objet. De plus, si une LCA d'objet est définie comme publique, les journaux d'audit ne sont pas générés pour les lectures ou les écritures de cet objet ou de sa LCA.

Format des journaux d'audit

Les entrées des journaux d'audit comprennent les composants suivants :

  • L'entrée de journal proprement dite, qui est un objet de type LogEntry. Les champs utiles sont les suivants :

    • logName, qui contient l'ID de ressource et le type de journal d'audit
    • resource, qui contient la cible de l'opération auditée
    • timestamp, qui indique l'heure à laquelle l'opération auditée a été effectuée
    • protoPayload, qui contient les informations auditées
  • Les données de journalisation d'audit, qui correspondent à un objet AuditLog inclus dans le champ protoPayload de l'entrée de journal

  • Des informations d'audit facultatives spécifiques à Cloud Storage, y compris des informations détaillées sur les requêtes et les réponses. Pour en savoir plus, consultez la section Mode de journalisation d'audit détaillé. Notez que vous n'avez pas besoin d'appliquer une journalisation d'audit détaillée pour associer des informations personnalisées aux journaux d'audit.

Pour en savoir plus sur les autres champs de ces objets, ainsi que sur leur interprétation, consultez la page Comprendre les journaux d'audit.

Nom du journal

Les noms des journaux Cloud Audit Logs incluent des identifiants de ressources qui désignent le projet Google Cloud ou toute autre entité Google Cloud dont ils dépendent et permettent également de déterminer si les journaux contiennent des données d'audit sur les activités d'administration ou les accès aux données.

Voici les noms des journaux d'audit incluant des variables pour les identifiants de ressource :

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Nom du service

Les journaux d'audit Cloud Storage utilisent le nom de service storage.googleapis.com.

Les journaux d'audit Storage Insights utilisent le nom de service storageinsights.googleapis.com.

Pour obtenir la liste de tous les noms de service de l'API Cloud Logging et du type de ressource surveillée correspondant, consultez la section Mapper des services sur des ressources.

Types de ressources

Les journaux d'audit Cloud Storage utilisent le type de ressource gcs_bucket.

Pour obtenir la liste de tous les types de ressources surveillées Cloud Logging et des informations descriptives, consultez la section Types de ressources surveillées.

Activer la journalisation d'audit

Les journaux d'audit pour les activités d'administration sont toujours activés. Vous ne pouvez pas les désactiver.

Les journaux d'audit des accès aux données sont désactivés par défaut et ne sont pas écrits à moins d'être explicitement activés.

Pour savoir comment activer tout ou partie des journaux d'audit d'accès aux données, consultez la page Configurer les journaux d'audit pour l'accès aux données.

Autorisations et rôles

Les autorisations et les rôles IAM déterminent votre capacité à accéder aux données des journaux d'audit dans les ressources Google Cloud.

Lorsque vous décidez des autorisations et rôles spécifiques à Logging qui s'appliquent à votre cas d'utilisation, tenez compte des points suivants :

  • Le rôle Lecteur de journaux (roles/logging.viewer) vous donne un accès en lecture seule aux journaux d'audit des activités d'administration, des refus de règles et des événements système. Si vous ne disposez que de ce rôle, vous ne pouvez pas afficher les journaux d'audit d'accès aux données qui se trouvent dans les buckets _Required et _Default.

  • Le rôle Lecteur de journaux privés ((roles/logging.privateLogViewer) inclut les autorisations contenues dans roles/logging.viewer, ainsi que la possibilité de lire les journaux d'audit d'accès aux données dans les buckets _Required et _Default.

    Notez que si ces journaux privés sont stockés dans des buckets définis par l'utilisateur, tout utilisateur autorisé à lire les journaux dans ces buckets peut lire les journaux privés. Pour en savoir plus sur les buckets de journaux, consultez la page Présentation du routage et du stockage.

Pour en savoir plus sur les autorisations et les rôles IAM qui s'appliquent aux données des journaux d'audit, consultez la page Contrôle des accès avec IAM.

Afficher les journaux

Vous pouvez interroger tous les journaux d'audit ou interroger les journaux selon leur nom de journal d'audit. Le nom du journal d'audit inclut l'identifiant de ressource du projet, du dossier, du compte de facturation ou de l'organisation Google Cloud dont vous souhaitez afficher les informations de journalisation d'audit. Vos requêtes peuvent spécifier des champs LogEntry indexés. Si vous utilisez la page Analyse de journaux, qui est compatible avec les requêtes SQL, vous pouvez afficher les résultats de votre requête sous forme de graphique.

Pour en savoir plus sur l'interrogation de journaux, consultez les pages suivantes :

Vous pouvez afficher les journaux d'audit dans Cloud Logging à l'aide de la console Google Cloud, de Google Cloud CLI ou de l'API Logging.

Console

Vous pouvez utiliser l'explorateur de journaux de la console Google Cloud pour récupérer les entrées du journal d'audit de votre projet, dossier ou organisation Google Cloud :

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Explorateur de journaux :

    Accéder à l'explorateur de journaux

  2. Sélectionnez un projet, une organisation ou un dossier Google Cloud existant.

  3. Pour afficher tous les journaux d'audit, saisissez l'une des requêtes suivantes dans le champ de l'éditeur de requête, puis cliquez sur Exécuter la requête :

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Pour afficher les journaux d'audit d'une ressource et d'un type de journal d'audit spécifiques, accédez au volet Générateur de requêtes et procédez comme suit :

    • Dans Type de ressource, sélectionnez la ressource Google Cloud dont vous souhaitez afficher les journaux d'audit.

    • Dans Nom du journal, sélectionnez le type de journal d'audit que vous souhaitez afficher :

      • Pour les journaux d'audit pour les activités d'administration, sélectionnez activity.
      • Pour les journaux d'audit des accès aux données, sélectionnez data_access.
      • Pour les journaux d'audit des événements système, sélectionnez system_event.
      • Pour les journaux d'audit des refus de règles, sélectionnez policy.
    • Cliquez sur Exécuter la requête.

    Si ces options ne sont pas visibles, cela signifie qu'aucun journal d'audit de ce type n'est disponible dans le projet, le dossier ou l'organisation Google Cloud.

    Si vous rencontrez des problèmes lors de la tentative d'affichage de journaux dans l'explorateur de journaux, consultez les informations de dépannage.

    Pour en savoir plus sur l'utilisation de l'explorateur de journaux pour effectuer des requêtes, consultez la page Créer des requêtes dans l'explorateur de journaux. Pour en savoir plus sur la synthèse des entrées de journal dans l'explorateur de journaux à l'aide de Gemini, consultez la page Synthétiser les entrées de journal avec l'assistance Gemini.

gcloud

Google Cloud CLI fournit une interface de ligne de commande à l'API Logging. Fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un PROJECT_ID, l'identifiant de projet que vous fournissez doit faire référence au projet Google Cloud actuellement sélectionné.

Pour lire les entrées de journal d'audit au niveau du projet Google Cloud, exécutez la commande suivante :

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Pour lire les entrées de journal d'audit au niveau d'un dossier, exécutez la commande suivante :

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

Pour lire les entrées de journal d'audit au niveau de l'organisation, exécutez la commande suivante :

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Pour lire les entrées de journal d'audit au niveau de votre compte de facturation Cloud, exécutez la commande suivante :

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

Ajoutez l'option --freshness à votre commande pour lire les journaux datant de plus d'une journée.

Pour en savoir plus sur l'utilisation de gcloud CLI, consultez la page gcloud logging read.

API

Lors de la création de vos requêtes, fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un PROJECT_ID, l'identifiant de projet que vous fournissez doit faire référence au projet Google Cloud actuellement sélectionné.

Par exemple, pour utiliser l'API Logging afin d'afficher les entrées de journal d'audit au niveau d'un projet, procédez comme suit :

  1. Accédez à la section Essayer cette API dans la documentation de la méthode entries.list.

  2. Insérez les éléments suivants dans la partie Corps de la requête du formulaire Essayer cette API. En cliquant sur ce formulaire prérempli, vous remplissez automatiquement le corps de la requête mais vous devez fournir un ID de projet PROJECT_ID valide pour chaque nom de journal.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Cliquez sur Exécuter.

Ajouter des informations personnalisées aux journaux d'audit

Vous pouvez associer des informations personnalisées aux journaux d'audit des requêtes en incluant l'en-tête x-goog-custom-audit-KEY: VALUE dans votre requête. Les requêtes API XML acceptent également l'utilisation d'un paramètre de requête x-goog-custom-audit-KEY=VALUE. Les informations personnalisées sont ajoutées au champ metadata de protoPayload dans l'entrée du journal d'audit.

Lorsque vous ajoutez des informations d'audit personnalisées, tenez compte des points suivants :

  • Chaque KEY peut contenir jusqu'à 64 caractères, tandis que chaque VALUE peut contenir jusqu'à 1 200 caractères.

  • Chaque requête peut contenir jusqu'à quatre entrées d'en-tête ou de paramètre combinées.

Exemples d'entrées d'en-tête

La liste suivante montre des exemples de paires clé/valeur que vous pouvez inclure dans les entrées d'en-tête :

  • x-goog-custom-audit-job: test-job-id-here
  • x-goog-custom-audit-user: user ID test 1
  • x-goog-custom-audit-internal-user-id: MATR2022-11
  • x-goog-custom-audit-tracking-ticket: TT/1516512851
  • x-goog-custom-audit-justification: Removed customer identity record at customer request
  • x-goog-custom-audit-customer-id: USCU12315154

Exemples de requête

Ligne de commande

gcloud storage hash gs://example_bucket/example_object.jpeg --additional-headers=x-goog-custom-audit-job="job name",x-goog-custom-audit-user="test user"

Bibliothèques clientes

C++

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

C#

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

Go

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

Java

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

Node.js

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

PHP

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

Python

Il n'est actuellement pas possible d'ajouter des en-têtes personnalisés aux requêtes effectuées avec la bibliothèque cliente Python.

Ruby

Pour savoir comment ajouter des en-têtes personnalisés aux requêtes, consultez la page Ajouter des en-têtes personnalisés.

API REST

API JSON

curl -X GET "https://storage.googleapis.com/storage/v1/b/example_bucket/o/example_object" \
-H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

API XML

curl -X GET "https://storage.googleapis.com/example_bucket/example_object" \
-H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

Requêtes d'URL signées

curl -X GET 'storage.googleapis.com/example_bucket?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T181309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host,x-goog-custom-audit-job,x-goog-custom-audit-user&X-Goog-Signature=247a2aa45f169edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa8496def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dcc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c20580e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b133447032ea7abedc098d2eb14a7' \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

Notez que les en-têtes d'audit personnalisés doivent également être inclus dans X-Goog-SignedHeaders.

Pour créer une requête d'URL signée permettant l'ajout d'en-têtes d'audit personnalisés, les en-têtes d'audit personnalisés que vous souhaitez utiliser dans la requête doivent également être inclus lorsque vous générez l'URL signée. Par exemple :

gcloud storage sign-url gs://example_bucket/example_object.jpeg --private-key-file=example-key.json --duration=10m --headers=x-goog-custom-audit-job:"job name",x-goog-custom-audit-user="test user"

Vous pouvez également utiliser des bibliothèques clientes pour générer l'URL signée lorsque vous définissez des en-têtes personnalisés.

Au lieu d'utiliser des en-têtes signés, vous pouvez utiliser des paramètres de requête pour transmettre des entrées d'audit personnalisées.

curl -X GET 'storage.googleapis.com/example_bucket?X-Goog-Custom-Audit-Key=Value&X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T181309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f169edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa8496def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dcc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c20580e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b133447032ea7abedc098d2eb14a7'

Ces paramètres de requête doivent être inclus lorsque vous générez l'URL signée. Exemple :

gcloud storage sign-url gs://example_bucket/example_object.jpeg --private-key-file=example-key.json --duration=10m --query-params=x-goog-custom-audit-job=job_name,x-goog-custom-audit-user=test_user

Exemple d'entrée de journal

protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.Auditlog",
  ...
  metadata: {
    audit_context: {
      app_context: "EXTERNAL",
      audit_info: {
        x-goog-custom-audit-job: "job name",
        x-goog-custom-audit-user: "test user"
      }
    }
  }
}

Pour en savoir plus sur les champs inclus dans l'objet protoPayload avec le type type.googleapis.com/google.cloud.audit.Auditlog, consultez la documentation de référence AuditLog.

Acheminer les journaux d'audit

Vous pouvez acheminer les journaux d'audit vers des destinations compatibles de la même manière que vous pouvez acheminer d'autres types de journaux. Voici quelques raisons pour lesquelles vous pouvez acheminer vos journaux d'audit :

  • Pour conserver les journaux d'audit pendant une période plus longue ou pour utiliser des fonctionnalités de recherche plus puissantes, vous pouvez exporter des copies des journaux d'audit vers Cloud Storage, BigQuery ou Pub/Sub. Avec Pub/Sub, vous avez la possibilité d'acheminer vos journaux vers d'autres applications, d'autres dépôts, ainsi que vers des organisations tierces.
  • Pour gérer les journaux d'audit à l'échelle de votre organisation, vous pouvez créer des récepteurs agrégés capables d'exporter les journaux pour un projet Google Cloud spécifique ou pour l'ensemble des projets Google Cloud de l'organisation.
  • Si les journaux d'audit des accès aux données que vous avez activés entraînent le dépassement de l'attribution mensuelle sans frais définie pour vos projets Google Cloud, vous pouvez créer des récepteurs qui excluent les journaux d'audit des accès aux données de Logging.

Pour obtenir des instructions sur le routage des journaux, consultez la page Configurer et gérer les récepteurs.

Tarification

Pour en savoir plus sur les tarifs de Cloud Logging, consultez la section Tarifs de Google Cloud Observability : Cloud Logging.

Restrictions

Les restrictions suivantes s'appliquent aux journaux d'audit Cloud avec Cloud Storage :

Étapes suivantes