Collecter les journaux Azure App Service
Ce document explique comment exporter les journaux Azure App Service vers Google Security Operations à l'aide d'un compte de stockage Azure. L'analyseur transforme les journaux Azure App Service bruts au format JSON en un modèle de données unifié (UDM) structuré. Il extrait les champs pertinents des journaux bruts, nettoie et normalise les données, puis mappe les informations extraites aux champs UDM correspondants. Il génère enfin un objet JSON conforme à l'UDM pour chaque entrée de journal.
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
- Dans la console Azure, recherchez Comptes de stockage.
- Cliquez sur + Créer.
- 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.
- Cliquez sur Examiner et créer.
- Examinez l'aperçu du compte, puis cliquez sur Créer.
- 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.
- Cliquez sur Afficher à côté de key1 ou key2.
- Cliquez sur Copier dans le presse-papiers pour copier la clé.
- Enregistrez la clé dans un endroit sûr pour une utilisation ultérieure.
- Sur la page Présentation du compte de stockage, sélectionnez le sous-menu Points de terminaison dans Paramètres.
- 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
. - Enregistrez l'URL du point de terminaison dans un endroit sûr pour une utilisation ultérieure.
Configurer l'exportation de journaux pour les journaux Azure App Service
- Connectez-vous au portail Azure à l'aide de votre compte privilégié.
- Accédez à Services d'application et sélectionnez le service d'application requis en cours d'utilisation.
- Sélectionnez Surveillance > Journaux App Service.
- Activez Journalisation des applications (blob).
- Sélectionnez Stockage sous Journalisation des services Web.
- Sélectionnez l'abonnement et le compte de stockage.
- Définissez la période de conservation et le quota selon vos besoins.
- Activez l'option Messages d'erreur détaillés.
- Activez l'option Traçage des requêtes ayant échoué.
- 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 > Ajouter un flux
- Plate-forme de contenu> Packs de contenu> Premiers pas
Configurer le flux Azure App Service
- Cliquez sur le pack Plate-forme Azure.
- Recherchez le type de journal Azure App Service, puis cliquez sur Ajouter un flux.
Indiquez les valeurs des champs suivants :
- Type de source : Microsoft Azure Blob Storage V2.
- 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
)
- Remplacez l'élément suivant :
Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.
Âge maximal du fichier : inclut les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
Clé partagée : clé d'accès à Azure Blob Storage.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- 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.
Cliquez sur Créer un flux.
Pour en savoir plus sur la configuration de plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
AppRoleInstance | read_only_udm.principal.resource.product_object_id | Mappage direct |
AppRoleName | read_only_udm.principal.resource.name | Mappage direct |
AppVersion | read_only_udm.principal.resource.attribute.labels.value | Mappage direct |
Catégorie | read_only_udm.metadata.product_event_type | Mappage direct |
CIp | read_only_udm.target.asset.ip | Mappage direct |
CIp | read_only_udm.target.ip | Mappage direct |
ClientCity | read_only_udm.principal.location.city | Mappage direct |
ClientCountryOrRegion | read_only_udm.principal.location.country_or_region | Mappage direct |
ClientIP | read_only_udm.principal.asset.ip | Mappage direct |
ClientIP | read_only_udm.principal.ip | Mappage direct |
ClientStateOrProvince | read_only_udm.principal.location.state | Mappage direct |
ClientType | read_only_udm.additional.fields.value.string_value | Mappage direct |
ComputerName | read_only_udm.principal.asset.hostname | Mappage direct |
ComputerName | read_only_udm.principal.hostname | Mappage direct |
Cookie | read_only_udm.principal.resource.attribute.labels.value | Mappage direct |
CsBytes | read_only_udm.network.sent_bytes | Renommé à partir de CsBytes |
CsHost | read_only_udm.additional.fields.value.string_value | Mappage direct |
CsMethod | read_only_udm.network.http.method | Mappage direct |
CsUriQuery | read_only_udm.principal.resource.attribute.labels.value | Mappage direct |
CsUriStem | read_only_udm.additional.fields.value.string_value | Mappage direct |
CsUriStem | read_only_udm.target.url | Mappage direct |
CsUsername | read_only_udm.principal.user.user_display_name | Mappage direct |
EventIpAddress | read_only_udm.principal.asset.ip | Mappage direct |
EventIpAddress | read_only_udm.principal.ip | Mappage direct |
EventPrimaryStampName | read_only_udm.additional.fields.value.string_value | Mappage direct |
EventStampName | read_only_udm.additional.fields.value.string_value | Mappage direct |
EventStampType | read_only_udm.additional.fields.value.string_value | Mappage direct |
Hôte | read_only_udm.principal.asset.hostname | Mappage direct |
Hôte | read_only_udm.principal.hostname | Mappage direct |
IKey | read_only_udm.target.resource.attribute.labels.value | Mappage direct |
Instance | read_only_udm.additional.fields.value.string_value | Mappage direct |
Nom | read_only_udm.additional.fields.value.string_value | Mappage direct |
Protocole | read_only_udm.additional.fields.value.string_value | Mappage direct |
Protocole | read_only_udm.network.application_protocol | Mappé sur HTTP si le protocole est HTTP/1.1 |
Référent | read_only_udm.network.http.referral_url | Mappage direct |
ResourceGUID | read_only_udm.target.resource.product_object_id | Nom modifié à partir de ResourceGUID |
SDKVersion | read_only_udm.additional.fields.value.string_value | Mappage direct |
SDKVersion | read_only_udm.principal.resource.attribute.labels.value | Mappage direct |
SPort | read_only_udm.principal.port | Renommé depuis SPort |
ScBytes | read_only_udm.network.received_bytes | Nom remplacé par ScBytes |
ScStatus | read_only_udm.network.http.response_code | Renommé à partir de ScStatus |
TimeTaken | read_only_udm.additional.fields.value.string_value | Mappage direct |
Type | read_only_udm.additional.fields.value.string_value | Mappage direct |
Utilisateur | read_only_udm.principal.user.userid | Mappage direct |
UserAddress | read_only_udm.principal.asset.ip | Extrait de UserAddress s'il s'agit d'une adresse IP valide |
UserAddress | read_only_udm.principal.ip | Extrait de UserAddress s'il s'agit d'une adresse IP valide |
UserAgent | read_only_udm.network.http.user_agent | Mappage direct |
UserDisplayName | read_only_udm.principal.user.user_display_name | Mappage direct |
category | read_only_udm.metadata.product_event_type | Mappage direct |
level | read_only_udm.security_result.severity | En majuscules et renommé à partir du niveau |
emplacement | read_only_udm.principal.location.name | Mappage direct |
operationName | read_only_udm.additional.fields.value.string_value | Mappage direct |
record.properties.Protocol | read_only_udm.additional.fields.value.string_value | Mappage direct |
record.properties.Result | read_only_udm.security_result.summary | Mappage direct |
record.time | read_only_udm.metadata.event_timestamp | Analysé en tant que code temporel RFC 3339 |
resourceId | read_only_udm.target.resource.attribute.labels.value | Mappage direct |
resourceId | read_only_udm.target.resource.product_object_id | Renommé à partir de resourceId |
read_only_udm.metadata.event_type | Déterminé en fonction de la présence du compte principal, de la cible et du protocole. Définie sur NETWORK_HTTP si le compte principal, la cible et le protocole=HTTP sont présents. Définie sur NETWORK_CONNECTION si le compte principal et la cible sont présents. Définissez sur STATUS_UPDATE si seul le principal est présent. Sinon, définissez-la sur GENERIC_EVENT . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.