Collecter les journaux de connexion Azure AD

Compatible avec:

Ce document explique comment exporter les journaux de connexion Azure AD vers Google Security Operations à l'aide d'un compte de stockage Azure. L'analyseur prend les journaux bruts au format JSON et les transforme en format structuré conforme au modèle de données unifié (UDM). Il extrait les champs pertinents, normalise les valeurs, gère différents codes temporels et enrichit les données avec un contexte lié à la sécurité, comme des informations sur les utilisateurs, des adresses IP et des stratégies d'accès conditionnel.

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

  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. Consultez la présentation du compte, puis cliquez sur Créer.
  6. 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.
  7. Cliquez sur Afficher à côté de clé1 ou clé2.
  8. Cliquez sur Copy to clipboard (Copier dans le presse-papiers) pour copier la clé.
  9. Enregistrez la clé dans un emplacement sécurisé pour pouvoir l'utiliser ultérieurement.
  10. Sur la page Aperçu 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 du service Blob (par exemple, https://<storageaccountname>.blob.core.windows.net).
  12. 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

  1. Connectez-vous au portail Azure à l'aide de votre compte privilégié.
  2. Accédez à Microsoft Entra ID > Surveillance > Paramètres de diagnostic.
  3. Cliquez sur Ajouter un paramètre de diagnostic.
    • Attribuez un nom descriptif au paramètre de diagnostic.
  4. Sélectionnez Journaux de connexion.
  5. Cochez la case Archiver dans un compte de stockage comme destination.
    • Spécifiez l'abonnement et le compte de stockage.

Configurer un flux dans Google SecOps pour ingérer les journaux de connexion Azure

  1. Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux de connexion Azure).
  4. Sélectionnez Microsoft Azure Blob Storage comme Type de source.
  5. Sélectionnez Connexion Azure comme Type de journal.
  6. Cliquez sur Suivant.
  7. 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, insights-logs-<logname>)
    • 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.

  8. Cliquez sur Suivant.

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

Tableau de mappage UDM

Champ du journal Mappage UDM Logique
AppDisplayName read_only_udm.target.application Mappé directement à partir du champ AppDisplayName dans le journal brut.
AppId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ AppId dans le journal brut. La clé est définie sur appId.
Catégorie read_only_udm.security_result.category_details Mappé directement à partir du champ Category dans le journal brut.
ConditionalAccessPolicies[].displayName read_only_udm.security_result.rule_name Mappé directement à partir du champ displayName dans le tableau ConditionalAccessPolicies du journal brut.
ConditionalAccessPolicies[].enforcedGrantControls[] read_only_udm.security_result.rule_labels.value Mappé directement à partir du tableau enforcedGrantControls dans le tableau ConditionalAccessPolicies du journal brut. La clé est définie sur applied_conditional_access_policies_enforced_grant_controls.
ConditionalAccessPolicies[].enforcedSessionControls[] read_only_udm.security_result.rule_labels.value Mappé directement à partir du tableau enforcedSessionControls dans le tableau ConditionalAccessPolicies du journal brut. La clé est définie sur applied_conditional_access_policies_enforced_session_controls.
ConditionalAccessPolicies[].id read_only_udm.security_result.rule_id Mappé directement à partir du champ id dans le tableau ConditionalAccessPolicies du journal brut.
ConditionalAccessPolicies[].Result read_only_udm.security_result.rule_labels.value Mappé directement à partir du champ Result dans le tableau ConditionalAccessPolicies du journal brut. La clé est définie sur applied_conditional_access_policies_result.
ConditionalAccessStatus read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ ConditionalAccessStatus dans le journal brut. La clé est définie sur conditionalAccessStatus.
CorrelationId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ CorrelationId dans le journal brut. La clé est définie sur correlationId.
DurationMs read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ DurationMs dans le journal brut. La clé est définie sur durationMs.
HomeTenantId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ HomeTenantId dans le journal brut. La clé est définie sur HomeTenantId.
IPAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Mappé directement à partir du champ IPAddress dans le journal brut.
ID read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ Id dans le journal brut. La clé est définie sur id.
Identité read_only_udm.target.resource.attribute.labels.value Mappé directement à partir du champ Identity dans le journal brut. La clé est définie sur identity.
Niveau read_only_udm.security_result.severity, read_only_udm.security_result.severity_details Mappé directement à partir du champ Level dans le journal brut. La gravité est déterminée en fonction de la valeur de Level: Information, Informational, 0 ou 4 correspondent à INFORMATIONAL ; Warning, 1 ou 3 correspondent à MEDIUM ; Error ou 2 correspondent à ERROR ; Critical correspond à CRITICAL.
OperationName read_only_udm.metadata.product_event_type Mappé directement à partir du champ OperationName dans le journal brut.
ResourceGroup read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ ResourceGroup dans le journal brut. La clé est définie sur ResourceGroup.
ResultSignature read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ ResultSignature dans le journal brut. La clé est définie sur resultSignature.
ResultType read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ ResultType dans le journal brut. La clé est définie sur resultType.
TenantId read_only_udm.metadata.product_deployment_id Mappé directement à partir du champ TenantId dans le journal brut.
TimeGenerated read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos Mappé directement à partir du champ TimeGenerated dans le journal brut. Le champ est analysé en tant que code temporel et utilisé pour renseigner les champs seconds et nanos.
TokenIssuerType read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ TokenIssuerType dans le journal brut. La clé est définie sur TokenIssuerType.
UniqueTokenIdentifier read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ UniqueTokenIdentifier dans le journal brut. La clé est définie sur UniqueTokenIdentifier.
UserAgent read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent Mappé directement à partir du champ UserAgent dans le journal brut. Le champ est analysé en tant que chaîne user-agent et utilisé pour renseigner l'objet parsed_user_agent.
UserDisplayName read_only_udm.target.user.user_display_name Mappé directement à partir du champ UserDisplayName dans le journal brut.
UserId read_only_udm.target.user.userid Mappé directement à partir du champ UserId dans le journal brut.
UserPrincipalName read_only_udm.target.user.email_addresses Mappée directement à partir du champ UserPrincipalName dans le journal brut, mais uniquement si elle correspond au format d'adresse e-mail.
UserType read_only_udm.target.user.attribute.roles.name Mappé directement à partir du champ UserType dans le journal brut.
_Internal_WorkspaceResourceId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ _Internal_WorkspaceResourceId dans le journal brut. La clé est définie sur Internal_WorkspaceResourceId.
_ItemId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ _ItemId dans le journal brut. La clé est définie sur ItemId.
properties.appId read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ appId de l'objet properties dans le journal brut. La clé est définie sur appId.
properties.authenticationDetails[].authenticationMethod read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ authenticationMethod dans le tableau authenticationDetails du journal brut. La clé est définie sur authenticationMethod.
properties.authenticationDetails[].authenticationMethodDetail read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ authenticationMethodDetail dans le tableau authenticationDetails du journal brut. La clé est définie sur authenticationMethodDetail.
properties.authenticationDetails[].authenticationStepDateTime read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ authenticationStepDateTime dans le tableau authenticationDetails du journal brut. La clé est définie sur authenticationStepDateTime.
properties.authenticationDetails[].authenticationStepRequirement read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ authenticationStepRequirement dans le tableau authenticationDetails du journal brut. La clé est définie sur authenticationStepRequirement.
properties.authenticationDetails[].authenticationStepResultDetail read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ authenticationStepResultDetail dans le tableau authenticationDetails du journal brut. La clé est définie sur authenticationStepResultDetail.
properties.authenticationDetails[].succeeded read_only_udm.security_result.action, read_only_udm.security_result.action_details Mappé directement à partir du champ succeeded dans le tableau authenticationDetails du journal brut. Si la valeur est true, l'action est définie sur ALLOW. Sinon, elle est définie sur BLOCK.
properties.conditionalAccessStatus read_only_udm.additional.fields.value.string_value Mappé directement à partir du champ conditionalAccessStatus dans l'objet properties du journal brut. La clé est définie sur conditionalAccessStatus.
properties.id read_only_udm.security_result.detection_fields.value Mappé directement à partir du champ id dans l'objet properties du journal brut. La clé est définie sur id.
properties.status.errorCode read_only_udm.security_result.action Si la valeur est 0, l'action est définie sur ALLOW. Sinon, elle est définie sur BLOCK.
properties.userId read_only_udm.target.user.userid Mappé directement à partir du champ userId de l'objet properties dans le journal brut.
properties.userPrincipalName read_only_udm.target.user.email_addresses Mappé directement à partir du champ userPrincipalName de l'objet properties dans le journal brut, mais uniquement s'il correspond au format d'adresse e-mail.
resourceId read_only_udm.target.resource.name Mappé directement à partir du champ resourceId dans le journal brut.
temps read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos Mappé directement à partir du champ time dans le journal brut. Le champ est analysé en tant que code temporel et utilisé pour renseigner les champs seconds et nanos.
read_only_udm.extensions.auth.type La valeur est définie sur AUTHTYPE_UNSPECIFIED.
read_only_udm.metadata.event_type La valeur est déterminée en fonction de la présence des champs principal.ip et target.user.userid: si les deux sont présents, le type est défini sur USER_LOGIN ; si seul principal.ip est présent, le type est défini sur STATUS_UPDATE ; sinon, il est défini sur GENERIC_EVENT.

Modifications

2024-05-07

  • Analyseur nouvellement créé

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