Collecter les journaux d'audit Azure Storage

Compatible avec :

Ce document explique comment exporter les journaux d'audit Azure Storage vers Google Security Operations à l'aide d'un compte Azure Storage. L'analyseur traite les journaux au format JSON et les transforme en Unified Data Model (UDM). Il extrait les champs du journal brut, effectue des conversions de type de données, enrichit les données avec un contexte supplémentaire (comme l'analyse de l'agent utilisateur et la répartition des adresses IP), et mappe les champs extraits aux champs UDM correspondants.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps
  • Un locataire Azure actif
  • Accès privilégié à Azure

Configurer un compte de stockage Azure

  1. Dans la console Azure, recherchez Comptes de stockage.
  2. Cliquez sur Créer.
  3. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Abonnement : sélectionnez l'abonnement.
    • Groupe de ressources : sélectionnez le groupe de ressources.
    • Région : sélectionnez la région.
    • Performances : sélectionnez les performances (standard recommandé).
    • Redondance : sélectionnez la redondance (GRS ou LRS recommandé).
    • Nom du compte de stockage : saisissez un nom pour le nouveau compte de stockage.
  4. Cliquez sur Examiner et créer.
  5. Examinez l'aperçu du compte, puis cliquez sur Créer.
  6. Sur la page Présentation du compte de stockage, sélectionnez le sous-menu Clés d'accès dans Sécurité et mise en réseau.
  7. Cliquez sur Afficher à côté de key1 ou key2.
  8. Cliquez sur Copier dans le presse-papiers pour copier la clé.
  9. Enregistrez la clé dans un endroit sûr pour pouvoir l'utiliser ultérieurement.
  10. Sur la page Présentation du compte de stockage, sélectionnez le sous-menu Points de terminaison dans Paramètres.
  11. Cliquez sur Copier dans le presse-papiers pour copier l'URL du point de terminaison Blob service (Service Blob). Par exemple, https://<storageaccountname>.blob.core.windows.net.
  12. Enregistrez l'URL du point de terminaison dans un endroit sûr pour une utilisation ultérieure.

Configurer l'exportation des journaux d'audit Azure Storage

  1. Connectez-vous au portail Azure à l'aide de votre compte privilégié.
  2. Accédez à Comptes de stockage > Paramètres de diagnostic.
  3. Cliquez sur + Ajouter un paramètre de diagnostic.
  4. Sélectionnez les paramètres de diagnostic pour blob, queue, table et file.
    • Sélectionnez l'option allLogs dans Groupes de catégories pour chaque paramètre de diagnostic.
    • Attribuez un nom descriptif à chaque paramètre de diagnostic.
  5. Cochez la case Archiver dans un compte de stockage comme destination.
    • Spécifiez l'abonnement et le compte de stockage.
  6. Cliquez sur Enregistrer.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.

Pour configurer un seul flux :

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'audit Azure Storage).
  5. Sélectionnez Microsoft Azure Blob Storage comme Type de source.
  6. Sélectionnez Audit Azure Storage comme Type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI Azure : URL du point de terminaison du blob.
      • ENDPOINT_URL/BLOB_NAME
        • Remplacez l'élément suivant :
          • ENDPOINT_URL : URL du point de terminaison du blob (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME : nom du blob (par exemple, <logname>-logs)
    • L'URI est : sélectionnez le TYPE d'URI en fonction de la configuration du flux de journaux (Fichier unique | Répertoire | Répertoire incluant des sous-répertoires).
    • Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.

    • Clé partagée : clé d'accès à Azure Blob Storage.

    • Espace de noms de l'élément : espace de noms de l'élément.

    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux.

  9. Cliquez sur Suivant.

  10. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • URI Azure : URL du point de terminaison du blob.
    • ENDPOINT_URL/BLOB_NAME
      • Remplacez l'élément suivant :
        • ENDPOINT_URL : URL du point de terminaison du blob (https://<storageaccountname>.blob.core.windows.net)
        • BLOB_NAME : nom du blob (par exemple, <logname>-logs)
  • L'URI est : sélectionnez le TYPE d'URI en fonction de la configuration du flux de journaux (Fichier unique | Répertoire | Répertoire incluant des sous-répertoires).
  • Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.
  • Clé partagée : clé d'accès à Azure Blob Storage.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
callerIpAddress principal.asset.ip L'adresse IP est extraite du champ callerIpAddress à l'aide d'un modèle Grok et attribuée à principal.asset.ip.
callerIpAddress principal.ip L'adresse IP est extraite du champ callerIpAddress à l'aide d'un modèle Grok et attribuée à principal.ip.
callerIpAddress principal.port Le numéro de port est extrait du champ callerIpAddress à l'aide d'un modèle Grok et attribué à principal.port.
category security_result.category_details La valeur du champ category est attribuée à security_result.category_details.
correlationId security_result.detection_fields[0].key La chaîne littérale correlationId est attribuée au champ clé.
correlationId security_result.detection_fields[0].value La valeur du champ correlationId est attribuée à security_result.detection_fields[0].value. La valeur du champ time est analysée en tant qu'horodatage et attribuée à event.idm.read_only_udm.metadata.event_timestamp. Si category est défini sur StorageWrite et que principal.user.userid existe (dérivé de properties.accountName), la valeur est définie sur USER_RESOURCE_UPDATE_CONTENT. Si category est défini sur StorageDelete et que principal.user.userid existe, la valeur est définie sur USER_RESOURCE_DELETION. Sinon, la valeur est définie sur USER_RESOURCE_ACCESS. La chaîne littérale AZURE_STORAGE_AUDIT est attribuée à event.idm.read_only_udm.metadata.log_type. La chaîne littérale AZURE_STORAGE_AUDIT est attribuée à event.idm.read_only_udm.metadata.product_name. La valeur du champ schemaVersion est attribuée à event.idm.read_only_udm.metadata.product_version. La chaîne littérale AZURE_STORAGE_AUDIT est attribuée à event.idm.read_only_udm.metadata.vendor_name.
location target.location.name La valeur du champ location est attribuée à target.location.name.
operationName additional.fields[x].key La chaîne littérale operationName est attribuée au champ clé.
operationName additional.fields[x].value.string_value La valeur du champ operationName est attribuée à additional.fields[x].value.string_value.
operationVersion additional.fields[x].key La chaîne littérale operationVersion est attribuée au champ clé.
operationVersion additional.fields[x].value.string_value La valeur du champ operationVersion est attribuée à additional.fields[x].value.string_value.
properties.accountName principal.user.userid La valeur du champ properties.accountName est attribuée à principal.user.userid.
properties.clientRequestId additional.fields[x].key La chaîne littérale clientRequestId est attribuée au champ clé.
properties.clientRequestId additional.fields[x].value.string_value La valeur du champ properties.clientRequestId est attribuée à additional.fields[x].value.string_value.
properties.etag additional.fields[x].key La chaîne littérale etag est attribuée au champ clé.
properties.etag additional.fields[x].value.string_value La valeur du champ properties.etag est attribuée à additional.fields[x].value.string_value.
properties.objectKey additional.fields[x].key La chaîne littérale objectKey est attribuée au champ clé.
properties.objectKey additional.fields[x].value.string_value La valeur du champ properties.objectKey est attribuée à additional.fields[x].value.string_value.
properties.requestMd5 additional.fields[x].key La chaîne littérale requestMd5 est attribuée au champ clé.
properties.requestMd5 additional.fields[x].value.string_value La valeur du champ properties.requestMd5 est attribuée à additional.fields[x].value.string_value.
properties.responseMd5 additional.fields[x].key La chaîne littérale responseMd5 est attribuée au champ clé.
properties.responseMd5 additional.fields[x].value.string_value La valeur du champ properties.responseMd5 est attribuée à additional.fields[x].value.string_value.
properties.serviceType additional.fields[x].key La chaîne littérale serviceType est attribuée au champ clé.
properties.serviceType additional.fields[x].value.string_value La valeur du champ properties.serviceType est attribuée à additional.fields[x].value.string_value.
properties.tlsVersion network.tls.version La valeur du champ properties.tlsVersion est attribuée à network.tls.version.
properties.userAgentHeader network.http.parsed_user_agent La valeur du champ properties.userAgentHeader est analysée en tant que chaîne user-agent et attribuée à network.http.parsed_user_agent.
properties.userAgentHeader network.http.user_agent La valeur du champ properties.userAgentHeader est attribuée à network.http.user_agent.
protocol network.application_protocol La valeur du champ protocol est attribuée à network.application_protocol.
resourceId target.resource.id La valeur du champ resourceId est attribuée à target.resource.id.
resourceId target.resource.product_object_id La valeur du champ resourceId est attribuée à target.resource.product_object_id. La chaîne littérale DATABASE est attribuée à target.resource.resource_type.
resourceType additional.fields[x].key La chaîne littérale resourceType est attribuée au champ clé.
resourceType additional.fields[x].value.string_value La valeur du champ resourceType est attribuée à additional.fields[x].value.string_value. Si statusText est défini sur Success, la valeur est définie sur ALLOW.
statusCode network.http.response_code La valeur du champ statusCode est convertie en entier et attribuée à network.http.response_code. La chaîne littérale MICROSOFT_AZURE est attribuée à target.cloud.environment.
time timestamp La valeur du champ time est analysée en tant qu'horodatage et attribuée à timestamp.
uri network.http.referral_url La valeur du champ uri est attribuée à network.http.referral_url.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.