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 modèle de données unifié (UDM) structuré. Il extrait les champs pertinents des journaux bruts, effectue le nettoyage et la normalisation des données, et met en correspondance les informations extraites avec les champs UDM correspondants. Il génère finalement un objet JSON conforme à UDM pour chaque entrée de journal.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un locataire Azure actif.
- Assurez-vous de disposer d'un 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.
- Consultez la présentation du compte, puis cliquez sur Créer.
- Sur la page Vue d'ensemble 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 clé1 ou clé2.
- Cliquez sur Copy to clipboard (Copier dans le presse-papiers) pour copier la clé.
- Enregistrez la clé dans un emplacement sécurisé pour pouvoir l'utiliser ultérieurement.
- Sur la page Aperçu 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 du service Blob (par exemple,
https://<storageaccountname>.blob.core.windows.net
). - Enregistrez l'URL du point de terminaison dans un endroit sécurisé 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, puis sélectionnez le service d'application utilisé.
- Sélectionnez Monitoring > App Service Logs (Surveillance > Journaux de l'App Service).
- Activez Application Logging (blob) (Journalisation des applications (blob)).
- Sous Journalisation du service Web, sélectionnez Stockage.
- Sélectionnez l'abonnement et le compte de stockage.
- Définissez le délai de conservation et le quota en fonction de vos besoins.
- Activez ON pour Detailed error messages (Messages d'erreur détaillés).
- Activez l'option Suivi des requêtes ayant échoué.
- Cliquez sur Enregistrer.
Configurer un flux dans Google SecOps pour ingérer les journaux Azure App Service
- Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
- Cliquez sur Ajouter.
- 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 de blob.
ENDPOINT_URL/BLOB_NAME
- Remplacez les éléments suivants :
ENDPOINT_URL
: URL du point de terminaison de 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.
Clé partagée: clé d'accès à Azure Blob Storage.
Espace de noms des éléments: espace de noms des éléments.
Libellés d'ingestion: libellé à appliquer aux événements de ce flux.
- URI Azure: URL du point de terminaison de blob.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux dans l'écran Finaliser, puis cliquez sur Envoyer.
Tableau 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 | Ancien nom : 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 | Modification du nom 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 | Ancien nom : SPort |
ScBytes | read_only_udm.network.received_bytes | Ancien nom : ScBytes |
ScStatus | read_only_udm.network.http.response_code | Ancien nom : 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 | Mise en majuscule 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 | Analyse 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 de l'identifiant principal, de la cible et du protocole. Définissez ce paramètre sur NETWORK_HTTP si les valeurs "principal", "target" et "Protocol=HTTP " sont présentes. Définissez cette valeur sur NETWORK_CONNECTION si le principal et la cible sont présents. Défini sur STATUS_UPDATE si seul le principal est présent. Sinon, définissez-le sur GENERIC_EVENT . |
Modifications
2024-10-18
Amélioration :
- Mappage de
properties.XForwardedHost
surprincipal.hostname
etprincipal.asset.hostname
. - Mappage de
properties_category
suradditional.fields
. - Mappage de
properties.roleInstance
surprincipal.resource.product_object_id
. - Mappage de
properties.message
sursecurity_result.summary
.
2024-09-30
Amélioration :
- Prise en charge de l'analyse du nouveau format des journaux JSON non analysés.
2024-06-24
Amélioration :
- Mappage de
metadata.product_name
etmetadata.vendor_name
surAZURE_APP_SERVICE
.
2024-06-07
Amélioration :
- Prise en charge des journaux JSON, lorsqu'ils ne sont pas au format tableau.
- Mappage de
properties.ScSubStatus
suradditional.fields
. - Mappage de
properties.ScWin32Status
suradditional.fields
.
2024-04-25
Amélioration :
- Mappage de
properties.User
surprincipal.user.userid
. - Mappage de
properties.UserDisplayName
surprincipal.user.user_display_name
. - Mappage de
properties.UserAddress
surprincipal.ip
. properties.Protocol
,ClientBrowser
,ClientModel
,ClientOS
,OperationId
,ParentId
etItemCount
ont été mappés suradditional.fields
.CsUriQuery
,SDKVersion
etCookie
ont été mappés surprincipal.resource.attribute.labels
.- Mappage de
SessionId
surnetwork.session_id
. - Mappage de
Message
sursecurity_result.summary
. - Mappage de
SeverityLevel
sursecurity_result.severity_details
.
2024-02-20
Amélioration :
- Mappage de
record.AppRoleInstance
surprincipal.resource.product_object_id
. - Mappage de
record.AppRoleName
surprincipal.resource.name
. - Mappage de
record.ClientCity
surprincipal.location.city
. - Mappage de
record.ClientCountryOrRegion
surprincipal.location.country_or_region
. - Mappage de
record.ClientStateOrProvince
surprincipal.location.state
. - Mappage de
record.ClientIP
surprincipal.ip
. - Mappage de
Result
sursecurity_result.summary
. - Mappage de
UserAgent
surnetwork.http.user_agent
. - Mappage de
Referer
surnetwork.http.referral_url
. - Mappage de
record.ResourceGUID
surtarget.resource.product_object_id
. - Si
record.ResourceGUID
n'est pas présent,record.resourceId
est mappé surtarget.resource.product_object_id
. - Si
record.ResourceGUID
est présent, mappezrecord.resourceId
suradditional.fields
. - Mappage de
record.Type
suradditional.fields
. - Mappage de
record.ClientType
suradditional.fields
. - Mappage de
record.SDKVersion
suradditional.fields
. - Mappage de
record.Name
suradditional.fields
. - Mappage de
record.Instance
suradditional.fields
. - Mappage de
record.TimeTaken
suradditional.fields
. - Mappage de
record.Cookie
suradditional.fields
. - Mappage de
record.AppVersion
surprincipal.resource.attribute.labels
. - Mappage de
record.IKey
surtarget.resource.attribute.labels
. - Mappage de
record.Category
surmetadata.product_event_type
. - Mappage de
CsUriStem
surtarget.url
. - Modification de la mise en correspondance de
CsBytes
denetwork.received_bytes
ànetwork.sent_bytes
. - Modification de la mise en correspondance de
ScBytes
denetwork.sent_bytes
ànetwork.received_bytes
.
2023-12-07
- Analyseur nouvellement créé.
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.