Collecter les journaux de connexion Azure AD
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
- 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 à Microsoft Entra ID > Surveillance > Paramètres de diagnostic.
- Cliquez sur Ajouter un paramètre de diagnostic.
- Attribuez un nom descriptif au paramètre de diagnostic.
- Sélectionnez Journaux de connexion.
- 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
- 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 de connexion Azure).
- Sélectionnez Microsoft Azure Blob Storage comme Type de source.
- Sélectionnez Connexion Azure 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,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.
- 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 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.