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 bruts Azure App Service 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 pouvoir l'utiliser ultérieurement.
- 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 des journaux de connexion Azure AD
- 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
- 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 :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Azure APP Service).
- Sélectionnez Microsoft Azure Blob Storage comme Type de source.
- Sélectionnez Azure APP Service comme Type de journal.
- Cliquez sur Suivant.
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
)
- Remplacez l'élément suivant :
- 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.
- URI Azure : URL du point de terminaison du blob.
Cliquez sur Suivant.
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,insights-logs-<logname>
)
- Remplacez l'élément suivant :
- 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 |
---|---|---|
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.