Collecter les journaux d'audit Azure DevOps
Version de l'analyseur : 3.0
Cet analyseur gère les journaux d'audit Azure DevOps au format JSON. Il extrait les champs des structures JSON imbriquées et de premier niveau, et les mappe à l'UDM. La logique conditionnelle basée sur des valeurs de champ spécifiques catégorise les événements et enrichit le résultat avec des informations de sécurité pertinentes. L'analyseur gère également les messages au format non JSON en tentant d'extraire une charge utile JSON à l'aide de modèles Grok.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps
- Une organisation Azure DevOps active
- Accès privilégié à l'organisation Azure DevOps et à Azure
Configurer des flux
Il existe deux points d'entrée différents pour configurer des flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux > Ajouter un flux
- Plate-forme de contenu> Packs de contenu> Commencer
Configurer le flux d'audit Azure DevOps
- Cliquez sur le pack Plate-forme Azure.
- Recherchez le type de journal Audit Azure DevOps, puis cliquez sur Ajouter un flux.
Spécifiez les valeurs des champs suivants :
- Type de source : Microsoft Azure Blob Storage V2.
- 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 :
Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.
Âge maximal du fichier : inclut les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
Clé partagée : clé partagée (chaîne aléatoire de 512 bits encodée en base64) utilisée pour accéder aux ressources Azure.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Espace de noms de l'élément : espace de noms de l'élément.
- Libellés d'ingestion : libellé appliqué aux événements de ce flux.
Cliquez sur Créer un flux.
Pour en savoir plus sur la configuration de plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Créer une clé API pour le flux de webhook
Accédez à la consoleGoogle Cloud > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Restreignez l'accès de la clé API à l'API Google Security Operations.
Spécifier l'URL du point de terminaison
- Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant :
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETRecommandation : Spécifiez la clé API en tant qu'en-tête au lieu de la spécifier dans l'URL. Si votre client de webhook n'accepte pas les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant :
ENDPOINT_URL?key=API_KEY&secret=SECRET
Remplacez les éléments suivants :
ENDPOINT_URL: URL du point de terminaison du flux.API_KEY: clé API permettant de s'authentifier auprès de Google Security Operations.SECRET: clé secrète que vous avez générée pour authentifier le flux.
Configurer la fonctionnalité d'audit dans Azure DevOps
- Connectez-vous à votre organisation (
https://dev.azure.com/{yourorganization}). - Sélectionnez l'icône en forme de roue dentée pour Paramètres de l'organisation.
- Sélectionnez Règles sous Sécurité.
- Activez l'option Enregistrer les événements d'audit.
Configurer une rubrique Event Grid dans Azure
- Connectez-vous au portail Azure.
- Recherchez Event Grid et accédez-y.
- Recherchez Thèmes sous Événements personnalisés.
- Cliquez sur + Créer.
- Sélectionnez votre abonnement et votre groupe de ressources. Indiquez un nom (par exemple,
DevopsAuditLog) et sélectionnez la région. Cliquez sur Examiner et créer. - Accédez au nouveau sujet et copiez l'URL du point de terminaison du sujet.
- Accédez à Paramètres> Clés d'accès, puis copiez la Clé 1.
Configurer le flux de journaux Azure DevOps vers Event Grid
- Connectez-vous à votre organisation (
https://dev.azure.com/{yourorganization}). - Sélectionnez l'icône en forme de roue dentée pour accéder aux paramètres de l'organisation.
- Sélectionnez Audit.
- Accédez à l'onglet Flux, puis sélectionnez Nouveau flux > Event Grid.
- Saisissez le point de terminaison du sujet et la clé d'accès créés dans Configurer un sujet Event Grid dans Azure.
Configurer un webhook dans Azure DevOps pour Google SecOps
- Dans le portail Azure, recherchez Event Grid et accédez-y.
- Sélectionnez le sujet créé précédemment.
- Accédez à Entités > Abonnement aux événements.
- Cliquez sur + Abonnement aux événements.
- Indiquez un nom descriptif (par exemple, *
Google SecOps Integration). - Sélectionnez Web Hook, puis cliquez sur Configurer un point de terminaison.
- Configurez le point de terminaison :
- Point de terminaison de l'abonné : saisissez l'URL du point de terminaison de l'API Google SecOps.
- Dans la section En-têtes HTTP, ajoutez les en-têtes suivants :
- Header 1 :
- Key (Clé) :
X-goog-api-key - Valeur : clé API que vous avez créée dans la section Créer une clé API pour le flux de webhook.
- Key (Clé) :
- En-tête 2 :
- Key (Clé) :
X-Webhook-Access-Key - Valeur : clé secrète que vous avez générée dans la section Configurer un flux dans Google SecOps pour ingérer les journaux Azure DevOps.
- Key (Clé) :
- Header 1 :
- Définissez l'en-tête Content-Type sur
application/json.
- Cliquez sur Créer.
Exemples de journaux d'audit Azure DevOps compatibles
JSON d'audit standard
{ "ActivityId": "aeec0738-ebbf-4e62-9a44-83dd7b704e75", "ActorCUID": "e0729319-5632-78c1-9625-b53fe559bcd7", "ActorDisplayName": "User Name", "ActorUPN": "user@example.com", "ActorUserId": "e0729319-5632-68c1-9625-b53fe559bcd7", "Area": "Group", "AuthenticationMechanism": "SessionToken_Unscoped authorizationId: f5729c3d-951b-4a52-88d9-a", "Category": "Modify", "CategoryDisplayName": "Modify", "CorrelationId": "a26a652e-1596-4c83-bb0f-946ff3ccc91c", "Data": { "CallerProcedure": "prc_UpdateGroupMembership", "EventAuthor": "b33f1e32-f5e3-4210-9fde-6e61f7a761b3", "Idempotent": "True", "Incremental": "True", "InsertInactiveUpdates": "False", "ScopeId": "1b713128-b6f0-4fd7-91af-94ed1f69c464", "Updates": [ { "GroupId": "BE656E6C-7C01-47DB-BC03-CD7E82610AFE", "MemberId": "9D4E1A54-8B4C-42E2-BECC-94BEDC6E2F4B", "Active": true } ], "GroupId": "be656e6c-7c01-47db-bc03-cd7e82610afe", "GroupName": "[Project_Alpha]\\Project Administrators", "MemberId": "9d4e1a54-8b4c-42e2-becc-94bedc6e2f4b", "MemberDisplayName": "Member Name" }, "Details": "Member Name was added as a member of group [Project_Alpha]\\Project Administrators", "Id": "0b11aadb-0bcc-47ef-9038-b091140dcbe5", "IpAddress": "192.168.1.10", "OperationName": "Group.UpdateGroupMembership.Add", "ProjectId": "00000000-0000-0000-0000-000000000000", "ScopeDisplayName": "Organization_X", "ScopeId": "1b713128-b6f0-4fd7-91af-94ed1f69c464", "ScopeType": "Enterprise", "SourceSystem": "Azure", "TenantId": "5ca654a4-807f-4676-9c9f-0b7335cea18e", "TimeGenerated": "2022-06-20T00:43:35.7370000Z", "Type": "AzureDevOpsAuditing", "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36", "_Internal_WorkspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/rg-event-grid/providers/microsoft.operationalinsights/workspaces/logging-workspace" }JSON enveloppé Event Grid
{ "id": "9362f75d-b450-47e0-a54b-4fd51d08798e", "subject": "AzureDevOps/Auditing", "data": { "Id": "9362f75d-b450-47e0-a54b-4fd51d08798e", "CorrelationId": "848f8abd-9f91-479e-857b-454efa0bf393", "ActivityId": "0b7078f1-87bb-441d-8dcc-780c6d0a0511", "ActorCUID": "00000000-0000-0000-0000-000000000000", "ActorUserId": "0000000d-0000-8888-8000-000000000000", "ActorClientId": "00000000-0000-0000-0000-000000000000", "ActorUPN": "Azure DevOps Service", "Timestamp": "2023-08-03T23:34:31.037Z", "ScopeType": 4, "ScopeDisplayName": "Organization_X", "ScopeId": "1bf2d4d0-3f60-4f08-b217-ce48cebc6816", "ProjectId": "b87f0d76-bb83-4274-a865-5ebdc6fe0500", "ProjectName": "IT_Project", "UserAgent": "TFS JobAgent(TfsJobAgent.exe, 19.224.33927.8)", "ActionId": "Release.DeploymentCompleted", "Data": { "CallerProcedure": "Release.prc_OnDeploymentCompleted", "DeploymentResult": "Succeeded", "PipelineId": "18", "PipelineName": "digital-client-app-dvlp", "ReleaseName": "23.07.38", "RequesterId": "0000000D-0000-8888-8000-000000000000", "StageName": "Build browser" }, "Details": "Deployment of release \"23.07.38\" on pipeline \"digital-client-app-dvlp\" to \"Build browser\" in Project IT_Project was Succeeded", "Area": "Release", "Category": 5, "CategoryDisplayName": "Execute", "ActorDisplayName": "Azure DevOps Service" }, "eventType": "AzureDevOpsAuditEvent", "dataVersion": "1.0", "metadataVersion": "1", "eventTime": "2023-08-03T23:34:31.037Z", "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.EventGrid/topics/audit-topic" }Tableau JSON Event Grid
[ { "id": "14b02dab-67eb-4d9d-acd2-4487aac05b14", "subject": "AzureDevOps/Auditing", "data": { "Id": "14b02dab-67eb-4d9d-acd2-4487aac05b14", "CorrelationId": "e0475568-bd77-484b-b065-5170561f0bf5", "ActivityId": "a2a70439-18dd-4bbb-be20-2844600feaca", "ActorCUID": "712594c0-94c1-779b-af6c-80752141078d", "ActorUserId": "712594c0-94c1-679b-af6c-80752141078d", "ActorClientId": "00000000-0000-0000-0000-000000000000", "ActorUPN": "user@example.com", "AuthenticationMechanism": "Basic_AAD", "Timestamp": "2023-12-20T18:33:21.9375261Z", "ScopeType": 4, "ScopeDisplayName": "Organization_X", "ScopeId": "021edafa-0760-4e1d-ba33-00b910e811e9", "ProjectId": "00000000-0000-0000-0000-000000000000", "IpAddress": "10.0.0.50", "UserAgent": "python/3.11.5 (Windows-10-10.0.19045-SP0) msrest/0.7.1 azure-devops/5.1.0b4 devOpsCli/0.25.0", "ActionId": "Security.ModifyPermission", "Data": { "NamespaceId": "b7e84409-6553-448a-bbb2-af228e07cbeb", "NamespaceName": "Library", "Token": "Library/Collection/VariableGroup/4693", "Permissions": [ { "baseEntry": { "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...", "allow": 19, "deny": 0, "isEmpty": false }, "inheritedAllow": 0, "inheritedDeny": 0, "effectiveAllow": 0, "effectiveDeny": 0, "includesExtendedInfo": false, "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...", "allow": 19, "deny": 0, "isEmpty": false } ], "EventSummary": [ { "PermissionNames": "View library item", "Change": "allow", "SubjectDescriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...", "SubjectDisplayName": "[Team_Project]\\Project Administrators" } ], "EventSummaryType": "ChangedPermission", "SubjectDisplayName": "[Team_Project]\\Project Administrators" }, "Details": "3 permissions were modified for [Team_Project]\\Project Administrators", "Area": "Permissions", "Category": 1, "CategoryDisplayName": "Modify", "ActorDisplayName": "User Name" }, "eventType": "AzureDevOpsAuditEvent", "dataVersion": "1.0", "metadataVersion": "1", "eventTime": "2023-12-20T18:33:21.9375261Z", "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.EventGrid/topics/audit-topic" } ]
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
ActivityId |
metadata.product_log_id |
Mappé directement à partir du champ Id dans le journal brut lorsque le champ records n'est pas présent, ou à partir du champ ActivityId dans l'objet data lorsque records est présent. |
ActionId |
metadata.product_event_type |
Directement mappé à partir du champ ActionId dans l'objet data. |
ActorCUID |
additional.fields |
Inclus en tant que champ supplémentaire avec la clé "Actor CUID". |
ActorDisplayName |
principal.user.user_display_name |
Mappé directement à partir du champ ActorDisplayName s'il ne s'agit pas d'"Azure DevOps Service". S'il s'agit d'un "service Azure DevOps", il est ajouté en tant qu'étiquette à principal.resource.attribute.labels. |
ActorUPN |
principal.user.email_addresses |
Mappé directement à partir du champ ActorUPN s'il correspond à un modèle d'adresse e-mail. |
ActorUserId |
principal.user.userid |
Mappé directement à partir du champ ActorUserId. |
Area |
target.application |
Utilisé pour construire le champ target.application en ajoutant "DevOps " à la valeur Area. |
AuthenticationMechanism |
extensions.auth.auth_details, security_result.rule_id |
Analysé pour extraire les informations d'authentification et l'ID de la règle. Les informations d'authentification sont mappées sur extensions.auth.auth_details. L'ID de règle extrait est associé à security_result.rule_id. |
CategoryDisplayName |
security_result.action_details |
Directement associé à security_result.action_details. |
City |
principal.location.city |
Mappé directement à partir du champ City. |
Conditions |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Conditions". |
Country |
principal.location.country_or_region |
Mappé directement à partir du champ Country. |
Data.* |
Diverses | Les champs de l'objet Data sont mappés à différents champs UDM en fonction de leur nom et de leur contexte. Vous trouverez des exemples précis ci-dessous. |
Data.AccessLevel |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "AccessLevel". |
Data.AgentId |
target.resource.product_object_id |
Mappé sur target.resource.product_object_id si PipelineId et AuthorizationId ne sont pas présents. |
Data.AgentName |
target.resource.name |
Mappé sur target.resource.name si PipelineName, NamespaceName et DisplayName ne sont pas présents. |
Data.AuthorizationId |
target.resource.product_object_id |
Mappé sur target.resource.product_object_id si PipelineId n'est pas présent. |
Data.CallerProcedure |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "CallerProcedure". |
Data.CheckSuiteId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "CheckSuiteId". |
Data.CheckSuiteStatus |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "CheckSuiteStatus". |
Data.ConnectionId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ConnectionId". |
Data.ConnectionName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ConnectionName". |
Data.ConnectionType |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ConnectionType". |
Data.DefinitionId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "DefinitionId". |
Data.DeploymentResult |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "DeploymentResult". |
Data.DisplayName |
target.resource.name |
Mappé sur target.resource.name si PipelineName et NamespaceName ne sont pas présents. |
Data.EndpointIdList |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "EndpointIdList". |
Data.EnvironmentName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "EnvironmentName". |
Data.Filter.continuationToken |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "continuation_token". |
Data.Filter.endTime |
target.resource.attribute.labels |
Ajouté en tant qu'étiquette avec la clé "filter_end_time". |
Data.Filter.startTime |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "filter_start_time". |
Data.FinishTime |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "FinishTime". |
Data.GroupId |
target.group.product_object_id |
Mappé directement sur target.group.product_object_id lorsque Data.Updates.0.GroupId n'est pas présent. |
Data.GroupName |
target.group.group_display_name |
Directement mappé à target.group.group_display_name. |
Data.JobName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "JobName". |
Data.MemberId |
target.user.userid |
Directement mappé sur target.user.userid lorsque Data.Updates.0.MemberId n'est pas présent. |
Data.MemberDisplayName |
target.user.user_display_name |
Directement associé à target.user.user_display_name. |
Data.NamespaceId |
target.resource.product_object_id |
Mappé sur target.resource.product_object_id si PipelineId, AuthorizationId et AgentId ne sont pas présents. |
Data.NamespaceName |
target.resource.name |
Mappé sur target.resource.name si PipelineName n'est pas présent. |
Data.ownerDetails |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "OwnerDetails". |
Data.OwnerId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "OwnerId". |
Data.PipelineId |
target.resource.product_object_id |
Directement associé à target.resource.product_object_id. |
Data.PipelineName |
target.resource.name |
Directement mappé à target.resource.name. |
Data.PipelineRevision |
target.resource.attribute.labels |
Ajouté en tant qu'étiquette avec la clé "PipelineRevision". |
Data.PipelineScope |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "PipelineScope". |
Data.PlanType |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "PlanType". |
Data.PreviousAccessLevel |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "PreviousAccessLevel". |
Data.PublisherName |
target.resource.attribute.labels |
Ajouté en tant qu'étiquette avec la clé "PublisherName". |
Data.Reason |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Reason". |
Data.ReleaseId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ReleaseId". |
Data.ReleaseName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ReleaseName". |
Data.RequesterId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "RequesterId". |
Data.RetentionLeaseId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "RetentionLeaseId". |
Data.RetentionOwnerId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "RetentionOwnerId". |
Data.RunName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "RunName". |
Data.Scopes |
target.resource.attribute.labels |
Ajouté en tant qu'étiquettes avec la clé "Scope". |
Data.StageName |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "StageName". |
Data.StartTime |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "StartTime". |
Data.TargetUser |
target.user.userid |
Directement mappé à target.user.userid. |
Data.Timestamp |
metadata.event_timestamp |
Analysé et mappé sur metadata.event_timestamp. |
Data.TokenType |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "TokenType". |
Data.Updates.0.GroupId |
target.group.product_object_id |
Directement associé à target.group.product_object_id. |
Data.Updates.0.MemberId |
target.user.userid |
Directement associé à target.user.userid. |
Data.ValidFrom |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "ValidFrom". |
Data.ValidTo |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "ValidTo". |
DewPoint |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "DewPoint". |
Details |
metadata.description |
Directement associé à metadata.description. |
Humidity |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Humidity" (Humidité). |
Icon |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Icon". |
Id |
metadata.product_log_id |
Directement mappé à metadata.product_log_id. |
IpAddress |
principal.ip |
Directement associé à principal.ip. |
MoonPhase |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "MoonPhase". |
Moonrise |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Moonrise". |
Moonset |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Moonset". |
OperationName |
metadata.product_event_type |
Directement associé à metadata.product_event_type. |
Precipitation |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Précipitations". |
Pressure |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Pressure". |
ProjectId |
target.resource_ancestors.product_object_id |
Utilisé pour remplir le champ product_object_id dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_PROJECT. |
ProjectName |
target.resource_ancestors.name, target.resource.attribute.labels |
Utilisé pour remplir le champ name dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_PROJECT. Également ajouté en tant qu'étiquette à target.resource.attribute.labels avec la clé "ProjectName". |
RoleLocation |
target.location.name |
Directement mappé à target.location.name. |
ScopeDisplayName |
target.resource_ancestors.name |
Utilisé pour remplir le champ name dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_ORGANIZATION. |
ScopeId |
target.resource_ancestors.product_object_id |
Utilisé pour remplir le champ product_object_id dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_ORGANIZATION. |
ScopeType |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "ScopeType". |
Sunrise |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Sunrise". |
Sunset |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Sunset". |
Temperature |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Temperature". |
TenantId |
metadata.product_deployment_id, additional.fields |
Directement associé à metadata.product_deployment_id. Également ajouté en tant que champ supplémentaire avec la clé "TenantId". |
TimeGenerated |
metadata.event_timestamp |
Analysé et mappé sur metadata.event_timestamp. |
UserAgent |
network.http.user_agent, network.http.parsed_user_agent |
Directement associé à network.http.user_agent. Également analysé et mappé sur network.http.parsed_user_agent. |
UVIndex |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "UVIndex". |
Visibility |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Visibilité". |
WindDirection |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "WindDirection". |
WindSpeed |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "WindSpeed". |
_Internal_WorkspaceResourceId |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "workspace_resource_id". |
| N/A | metadata.event_type |
Déterminé par une logique basée sur OperationName et d'autres champs. La valeur par défaut est "GENERIC_EVENT" si aucun type d'événement spécifique ne correspond. Les valeurs possibles sont "STATUS_SHUTDOWN", "RESOURCE_CREATION", "STATUS_UPDATE", "USER_RESOURCE_DELETION", "RESOURCE_READ", "RESOURCE_WRITTEN", "RESOURCE_DELETION" et "GROUP_MODIFICATION". |
| N/A | metadata.vendor_name |
Défini sur "Microsoft". |
| N/A | metadata.product_name |
Définissez la valeur sur "Azure DevOps". |
| N/A | metadata.log_type |
Définissez-le sur "AZURE_DEVOPS". |
| N/A | principal.user.account_type |
Définissez sur "SERVICE_ACCOUNT_TYPE" si AuthenticationMechanism contient "ServicePrincipal", sinon définissez sur "CLOUD_ACCOUNT_TYPE". |
| N/A | target.asset.attribute.cloud.environment |
Variable définie sur MICROSOFT_AZURE. |
| N/A | security_result.action |
Définissez la valeur sur "ALLOW" pour les opérations réussies (Succeeded, Created, Modified, executed, updated, removed) et sur "BLOCK" pour les opérations ayant échoué (Failed, TimedOut). |
| N/A | extensions.auth.mechanism |
Définissez-le sur "USERNAME_PASSWORD" si summary est défini sur "UserAuthToken". |
| N/A | target.resource.resource_type |
Définissez sur "SETTING" si pipeline_id est présent, "CREDENTIAL" si authorization_id est présent, "DEVICE" si agent_id est présent ou "DATABASE" si namespace_id est présent. Sinon, il est défini sur "STORAGE_BUCKET" dans certains cas en fonction de operationName. |
| N/A | target.resource.resource_subtype |
Définissez la valeur sur "Pipeline" si pipeline_id est présent, sur "Token" si authorization_id est présent, sur "Agent" si agent_id est présent ou sur "Namespace" si namespace_id est présent. |
Journal des modifications
Afficher le journal des modifications de ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.