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 un format structuré conforme à l'Unified Data Model (UDM). Il extrait les champs pertinents, normalise les valeurs, gère les différents codes temporels et enrichit les données avec un contexte lié à la sécurité, comme les informations sur les utilisateurs, les adresses IP et les règles d'accès conditionnel.

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 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 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 de connexion Azure).
  5. Sélectionnez Microsoft Azure Blob Storage comme Type de source.
  6. Sélectionnez Connexion Azure 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, 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 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, 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 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 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 Directement mappé à 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 Directement mappé à 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 correspond à INFORMATIONAL ; Warning, 1 ou 3 correspond à MEDIUM ; Error ou 2 correspond à 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 qu'horodatage 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 remplir 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é directement à partir du champ UserPrincipalName du journal brut, mais uniquement s'il correspond au modèle 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 Directement mappé à partir du champ appId dans l'objet properties du 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 Directement mappé à 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 Directement mappé à 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 Directement mappé à partir du champ userId dans l'objet properties du journal brut.
properties.userPrincipalName read_only_udm.target.user.email_addresses Directement mappé à partir du champ userPrincipalName dans l'objet properties du 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 qu'horodatage 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.

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