Collecter les journaux d'audit Azure DevOps
Présentation
Ce parseur 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 la sortie avec des informations de sécurité pertinentes. L'analyseur gère également les messages qui ne sont pas au format 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 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 :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Azure DevOps).
- Sélectionnez Webhook comme type de source.
- Sélectionnez Audit Azure DevOps comme Type de journal.
- Cliquez sur Suivant.
- Facultatif : Spécifiez les valeurs des paramètres d'entrée suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
. - 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.
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
- Cliquez sur Suivant.
- Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
- Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais l'ancienne deviendra obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
.
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 de l'élément.
- Libellés d'ingestion : libellé appliqué aux événements de ce flux.
- Cliquez sur Suivant.
- Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
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 à 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 = SECRET
Recommandation : 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 pour 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 le bouton 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 Sujets 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 Vérifier 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 et copiez 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 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.
- Donnez 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é) :
- Header 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.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
ActivityId |
metadata.product_log_id |
Directement mappé à 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 |
Directement mappé à partir du champ ActorDisplayName s'il n'est pas défini sur "Azure DevOps Service". Si la valeur est "Azure DevOps Service", elle est ajoutée en tant que libellé à 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 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 |
Mappé directement sur 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 spécifiques ci-dessous. |
Data.AccessLevel |
target.resource.attribute.labels |
Ajouté en tant que libellé avec la clé "AccessLevel". |
Data.AgentId |
target.resource.product_object_id |
Correspond à 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 |
Correspond à 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ée en tant que libellé avec la clé "filter_end_time". |
Data.Filter.startTime |
target.resource.attribute.labels |
Ajoutée 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 |
Directement mappé sur target.group.product_object_id lorsque Data.Updates.0.GroupId n'est pas présent. |
Data.GroupName |
target.group.group_display_name |
Mappé directement sur 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 |
Mappé directement sur 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 |
Mappé directement sur target.resource.product_object_id . |
Data.PipelineName |
target.resource.name |
Mappé directement sur target.resource.name . |
Data.PipelineRevision |
target.resource.attribute.labels |
Ajouté en tant que libellé 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 que libellé 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ées en tant que libellés 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 |
Mappé directement sur 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 |
Mappé directement sur target.group.product_object_id . |
Data.Updates.0.MemberId |
target.user.userid |
Mappé directement sur target.user.userid . |
Data.ValidFrom |
target.resource.attribute.labels |
Ajoutée 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 |
Mappé directement sur 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 |
Mappé directement sur metadata.product_log_id . |
IpAddress |
principal.ip |
Mappé directement sur 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 |
Mappé directement sur metadata.product_event_type . |
Precipitation |
additional.fields |
Ajouté en tant que champ supplémentaire avec la clé "Precipitation". |
Pressure |
additional.fields |
Ajoutée en tant que champ supplémentaire avec la clé "Pressure" (Pression). |
ProjectId |
target.resource_ancestors.product_object_id |
Permet de 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 |
Permet de remplir le champ name dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_PROJECT . Il a également été ajouté en tant que libellé à target.resource.attribute.labels avec la clé "ProjectName". |
RoleLocation |
target.location.name |
Mappé directement sur target.location.name . |
ScopeDisplayName |
target.resource_ancestors.name |
Permet de remplir le champ name dans target.resource_ancestors lorsque l'ancêtre est de type CLOUD_ORGANIZATION . |
ScopeId |
target.resource_ancestors.product_object_id |
Permet de 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 |
Mappé directement sur metadata.product_deployment_id . Il a également été 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 |
Mappé directement sur 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é "Visibility". |
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-le 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 la valeur sur "SETTING" si pipeline_id est présent, sur "CREDENTIAL" si authorization_id est présent, sur "DEVICE" si agent_id est présent ou sur "DATABASE" si namespace_id est présent. Sinon, elle est définie 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. |
Modifications
2024-01-19
- La valeur "metadata.eventtype" est passée de "SERVICE*" à "USER_RESOURCE_UPDATE_CONTENT" si les données de l'utilisateur principal et de la ressource cible sont présentes.
- Le mappage de "IpAddress" est passé de "target.ip" à "principal.ip".
- Le mappage de "ActorCUID" est passé de "principal.user.product_object_id" à "additional.fields".
- Le mappage de "ScopeId" est passé de "principal.asset_id" à "resource_ancestors.product_object_id".
- Le mappage de "_Internal_WorkspaceResourceId" est passé de "target.resource.product_object_id" à "additional.fields".
- Le mappage de "ProjectId" est passé de "target.resource.attribute.labels" à "target.resource_ancestors.product_object_id".
- Le mappage de "AuthenticationMechanism" est passé de "security_result.summary" à "extensions.auth.auth_details".
- Le mappage de "CorrelationId" est passé de "network.session_id" à "additional.fields".
- Le mappage de "ScopeDisplayName" est passé de "additional.fields" à "target.resource_ancestors.name".
- Le mappage de "PipelineId" est passé de "additional.fields" à "target.resource.product_object_id".
- La mise en correspondance de "PipelineName" est passée de "additional.fields" à "target.resource.name".
- Le mappage de "PipelineScope" est passé de "additional.fields" à "target.resource.attribute.labels".
- Le mappage de "PipelineRevision" est passé de "additional.fields" à "target.resource.attribute.labels".
- Le mappage de "ProjectId" est passé de "target.resource.resource.attribute.labels" à "target.resource_ancestors.product_object_id".
- Le mappage de "Area" est passé de "additional.fields" à "target.application".
- La valeur "MICROSOFT_AZURE" a été mappée à "target.asset.attribute.cloud.environment".
- Lorsque "AuthenticationMechanism" a la valeur "ServicePrincipal", définissez "SERVICE_ACCOUNT_TYPE" sur "principal.user.account_type". Sinon, définissez "CLOUD_ACCOUNT_TYPE" sur "principal.user.account_type".
- Mappé "Category" à "security_result.action_details".
- Mappé "ALLOW" ou "BLOCK" à "security_result.action" en fonction du champ "Details".
- "ActivityId" a été mappé à "additional.fields".
2024-01-09
- Ajout de Grok et gsub pour analyser les journaux JSON non analysés.
- Mappé "rec.correlationId", "properties.currentHealthStatus", "properties.previousHealthStatus", "properties.type", "properties.cause", "properties.title", "properties.details", "properties.recommendationType", "properties.recommendationCategory", "properties.recommendationImpact", "properties.recommendationName", "properties.recommendationResourceLink", "properties.recommendationSchemaVersion", "properties.eventCategory", "properties.hierarchy", "properties.message", "properties.entity", "identity.claims.xms.tcdt", "identity.claims.aio", "identity.claims.appid", "identity.claims.appidacr", "identity.claims.aud", "identity.claims.exp", "identity.claims.iat", "identity.claims.idtyp", "identity.claims.iss", "identity.claims.uti", "identity.claims.rh", "identity.claims.ver", "identity.claims.nbf", "identity.authorization.evidence.roleAssignmentId", "identity.authorization.evidence.principalType", "identity.authorization.evidence.principalId", "identity.authorization.evidence.roleAssignmentScope", "identity.authorization.evidence.roleDefinitionId" à "security_result.detection_fields".
- Mappé "resultSignature.label", "rec.resultType", "Visibility", "Humidity", "Precipitation","MoonPhase", "Moonrise", "Moonset", "Pressure", "WindSpeed", "UVIndex", "DewPoint", WindDirection", "Sunrise", "Sunset", "Temperature", "Icon", "Conditions" à "additional.fields".
- Le niveau a été mappé sur "security_result.severity".
- "appname" a été mappé sur "target.application".
- Mappé "category.details" à "security.result.category.details".
- Mappé "rec.resourceId" sur "target.resource.id".
- "res.extensionResourceName" mappé sur "principal.hostname".
2023-11-23
- Ajout de la compatibilité avec un nouveau modèle de journaux JSON.
- "data.TimeGenerated" a été mappé sur "metadata.event_timestamp".
- Lorsque "_Internal_WorkspaceResourceId" est manquant, "topic" est mappé sur "target.resource.product_object_id".
- "data.Data.ConnectionId" a été mappé sur "additional.fields".
- "data.Data.ownerDetails" mappé sur "additional.fields".
- "data.Data.DeploymentResult" a été mappé sur "additional.fields".
- "data.Data.EnvironmentName" a été mappé sur "additional.fields".
- "data.Data.JobName" a été mappé sur "additional.fields".
- "data.Data.StageName" a été mappé sur "additional.fields".
- "data.Data.RunName" a été mappé sur "additional.fields".
- "data.Data.RetentionLeaseId" a été mappé sur "additional.fields".
- "data.Data.CheckSuiteId" a été mappé sur "additional.fields".
- Mappé "data.Data.CheckSuiteStatus" à "additional.fields".
- "data.Data.ApprovalRequest" a été mappé sur "additional.fields".
- "data.Data.ApprovalType" mappé sur "additional.fields".
- "subject" mappé sur "additional.fields".
- "data.ActorUserId" a été mappé sur "principal.user.userid".
- "data.ActorDisplayName" a été mappé sur "principal.user.user_display_name".
- "data.ActorCUID" a été mappé sur "principal.user.product_object_id".
- "data.ActorUPN" a été mappé sur "principal.user.email_addresses".
- "data.ScopeId" a été mappé sur "principal.asset_id".
- Mappé "data.CorrelationId" sur "network.session_id".
- Mappé "data.UserAgent" sur "network.http.user_agent".
- "data.ProjectId" a été mappé sur "target.resource.attribute.labels".
- "data.ScopeType" mappé sur "additional.fields".
- "data.ProjectName" a été mappé sur "target.resource.attribute.labels".
- Mappé "data.Details" sur "metadata.description".
- "data.CategoryDisplayName" mappé sur "security_result.rule_name".
- "data.Area" a été mappé sur "additional.fields".
- "data.Id" a été mappé sur "metadata.product_log_id".
- "data.ActionId" a été mappé sur "metadata.product_event_type".
- "data.Timestamp" a été mappé à "metadata.event_timestamp".
2022-06-28
- Analyseur nouvellement créé
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.