Mengumpulkan log audit Azure DevOps

Didukung di:

Ringkasan

Parser ini menangani log audit Azure DevOps dalam format JSON. Fungsi ini mengekstrak kolom dari struktur JSON bertingkat dan tingkat atas, serta memetakan kolom tersebut ke UDM. Logika kondisional berdasarkan nilai kolom tertentu mengategorikan peristiwa dan memperkaya output dengan informasi keamanan yang relevan. Parser juga menangani pesan berformat non-JSON dengan mencoba mengekstrak payload JSON menggunakan pola grok.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki Organisasi Azure DevOps yang aktif.
  • Pastikan Anda memiliki akses dengan hak istimewa ke Organisasi Azure Devops dan Azure.

Mengonfigurasi feed di Google SecOps untuk menyerap log Azure Devops

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Feed name, masukkan nama untuk feed (misalnya, Azure Devops Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih Azure Devops sebagai Log type.
  6. Klik Berikutnya.
  7. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ganti kode berikut:

  • ENDPOINT_URL: URL endpoint feed.
  • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
  • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Mengonfigurasi fitur Auditing di Azure Devops

  1. Login ke organisasi Anda (https://dev.azure.com/{yourorganization}).
  2. Pilih ikon roda gigi untuk Setelan organisasi.
  3. Pilih Kebijakan di bagian Keamanan.
  4. Alihkan tombol Log Audit Events ke ON.

Mengonfigurasi Topik Event Grid di Azure

  1. Login ke Portal Azure.
  2. Telusuri dan akses Event Grid.
  3. Temukan Topik di bagian Peristiwa kustom.
  4. Klik + Buat.
  5. Pilih Langganan dan Grup Resource. Berikan nama (Misalnya, DevopsAuditLog) dan pilih region. Klik Tinjau dan buat.
  6. Akses Topic baru dan salin Topic Endpoint URL.
  7. Buka Setelan > Kunci Akses dan salin Kunci 1.

Mengonfigurasi Aliran Log Azure Devops ke Event Grid

  1. Login ke organisasi Anda (https://dev.azure.com/{yourorganization}).
  2. Pilih ikon roda gigi untuk Setelan organisasi.
  3. Pilih Auditing.
  4. Buka tab Streaming, lalu pilih Streaming baru > Event Grid.
  5. Masukkan endpoint topik dan kunci akses yang dibuat di Mengonfigurasi Topik Event Grid di Azure.

Mengonfigurasi Webhook di Azure DevOps untuk Google SecOps

  1. Di Portal Azure, telusuri dan akses Event Grid.
  2. Pilih Topik yang dibuat sebelumnya.
  3. Buka Entity > Event Subscription.
  4. Klik + Langganan Peristiwa.
  5. Berikan nama deskriptif (misalnya Integrasi Google SecOps).
  6. Pilih Web Hook, lalu klik Configure an endpoint.
  7. Konfigurasikan endpoint:
    • Endpoint pelanggan: Masukkan URL endpoint Google SecOps API.
    • Tambahkan ?key=<API_KEY>&secret=<SECRET_KEY> ke URL Payload.
    • Tetapkan header Content-Type ke application/json.
  8. Klik Create.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
ActivityId metadata.product_log_id Dipetakan langsung dari kolom Id dalam log mentah jika kolom records tidak ada, atau dari kolom ActivityId dalam objek data jika records ada.
ActionId metadata.product_event_type Dipetakan langsung dari kolom ActionId dalam objek data.
ActorCUID additional.fields Disertakan sebagai kolom tambahan dengan kunci "CUID Aktor".
ActorDisplayName principal.user.user_display_name Dipetakan langsung dari kolom ActorDisplayName jika bukan "Azure DevOps Service". Jika "Azure DevOps Service", layanan tersebut akan ditambahkan sebagai label ke principal.resource.attribute.labels.
ActorUPN principal.user.email_addresses Dipetakan langsung dari kolom ActorUPN jika cocok dengan pola alamat email.
ActorUserId principal.user.userid Dipetakan langsung dari kolom ActorUserId.
Area target.application Digunakan untuk membuat kolom target.application dengan menambahkan "DevOps " di awal nilai Area.
AuthenticationMechanism extensions.auth.auth_details, security_result.rule_id Diurai untuk mengekstrak detail autentikasi dan ID aturan. Detail autentikasi dipetakan ke extensions.auth.auth_details. ID aturan yang diekstrak dipetakan ke security_result.rule_id.
CategoryDisplayName security_result.action_details Dipetakan langsung ke security_result.action_details.
City principal.location.city Dipetakan langsung dari kolom City.
Conditions additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Conditions".
Country principal.location.country_or_region Dipetakan langsung dari kolom Country.
Data.* Berbagai Kolom dalam objek Data dipetakan ke kolom UDM yang berbeda berdasarkan nama dan konteksnya. Lihat contoh spesifik di bawah.
Data.AccessLevel target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "AccessLevel".
Data.AgentId target.resource.product_object_id Dipetakan ke target.resource.product_object_id jika PipelineId dan AuthorizationId tidak ada.
Data.AgentName target.resource.name Dipetakan ke target.resource.name jika PipelineName, NamespaceName, dan DisplayName tidak ada.
Data.AuthorizationId target.resource.product_object_id Dipetakan ke target.resource.product_object_id jika PipelineId tidak ada.
Data.CallerProcedure additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "CallerProcedure".
Data.CheckSuiteId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "CheckSuiteId".
Data.CheckSuiteStatus additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "CheckSuiteStatus".
Data.ConnectionId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ConnectionId".
Data.ConnectionName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ConnectionName".
Data.ConnectionType additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ConnectionType".
Data.DefinitionId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "DefinitionId".
Data.DeploymentResult additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "DeploymentResult".
Data.DisplayName target.resource.name Dipetakan ke target.resource.name jika PipelineName dan NamespaceName tidak ada.
Data.EndpointIdList additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "EndpointIdList".
Data.EnvironmentName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "EnvironmentName".
Data.Filter.continuationToken target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "continuation_token".
Data.Filter.endTime target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "filter_end_time".
Data.Filter.startTime target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "filter_start_time".
Data.FinishTime additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "FinishTime".
Data.GroupId target.group.product_object_id Dipetakan langsung ke target.group.product_object_id jika Data.Updates.0.GroupId tidak ada.
Data.GroupName target.group.group_display_name Dipetakan langsung ke target.group.group_display_name.
Data.JobName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "JobName".
Data.MemberId target.user.userid Dipetakan langsung ke target.user.userid jika Data.Updates.0.MemberId tidak ada.
Data.MemberDisplayName target.user.user_display_name Dipetakan langsung ke target.user.user_display_name.
Data.NamespaceId target.resource.product_object_id Dipetakan ke target.resource.product_object_id jika PipelineId, AuthorizationId, dan AgentId tidak ada.
Data.NamespaceName target.resource.name Dipetakan ke target.resource.name jika PipelineName tidak ada.
Data.ownerDetails additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "OwnerDetails".
Data.OwnerId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "OwnerId".
Data.PipelineId target.resource.product_object_id Dipetakan langsung ke target.resource.product_object_id.
Data.PipelineName target.resource.name Dipetakan langsung ke target.resource.name.
Data.PipelineRevision target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "PipelineRevision".
Data.PipelineScope target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "PipelineScope".
Data.PlanType additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "PlanType".
Data.PreviousAccessLevel target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "PreviousAccessLevel".
Data.PublisherName target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "PublisherName".
Data.Reason additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Alasan".
Data.ReleaseId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ReleaseId".
Data.ReleaseName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ReleaseName".
Data.RequesterId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "RequesterId".
Data.RetentionLeaseId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "RetentionLeaseId".
Data.RetentionOwnerId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "RetentionOwnerId".
Data.RunName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "RunName".
Data.Scopes target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "Cakupan".
Data.StageName additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "StageName".
Data.StartTime additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "StartTime".
Data.TargetUser target.user.userid Dipetakan langsung ke target.user.userid.
Data.Timestamp metadata.event_timestamp Diurai dan dipetakan ke metadata.event_timestamp.
Data.TokenType target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "TokenType".
Data.Updates.0.GroupId target.group.product_object_id Dipetakan langsung ke target.group.product_object_id.
Data.Updates.0.MemberId target.user.userid Dipetakan langsung ke target.user.userid.
Data.ValidFrom target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "ValidFrom".
Data.ValidTo target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "ValidTo".
DewPoint additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "DewPoint".
Details metadata.description Dipetakan langsung ke metadata.description.
Humidity additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Humidity".
Icon additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Ikon".
Id metadata.product_log_id Dipetakan langsung ke metadata.product_log_id.
IpAddress principal.ip Dipetakan langsung ke principal.ip.
MoonPhase additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "MoonPhase".
Moonrise additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Moonrise".
Moonset additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Moonset".
OperationName metadata.product_event_type Dipetakan langsung ke metadata.product_event_type.
Precipitation additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Precipitation".
Pressure additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Tekanan".
ProjectId target.resource_ancestors.product_object_id Digunakan untuk mengisi kolom product_object_id dalam target.resource_ancestors jika ancestor berjenis CLOUD_PROJECT.
ProjectName target.resource_ancestors.name, target.resource.attribute.labels Digunakan untuk mengisi kolom name dalam target.resource_ancestors jika ancestor berjenis CLOUD_PROJECT. Juga ditambahkan sebagai label ke target.resource.attribute.labels dengan kunci "ProjectName".
RoleLocation target.location.name Dipetakan langsung ke target.location.name.
ScopeDisplayName target.resource_ancestors.name Digunakan untuk mengisi kolom name dalam target.resource_ancestors jika ancestor berjenis CLOUD_ORGANIZATION.
ScopeId target.resource_ancestors.product_object_id Digunakan untuk mengisi kolom product_object_id dalam target.resource_ancestors jika ancestor berjenis CLOUD_ORGANIZATION.
ScopeType additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "ScopeType".
Sunrise additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Sunrise".
Sunset additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Sunset".
Temperature additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Suhu".
TenantId metadata.product_deployment_id, additional.fields Dipetakan langsung ke metadata.product_deployment_id. Juga ditambahkan sebagai kolom tambahan dengan kunci "TenantId".
TimeGenerated metadata.event_timestamp Diurai dan dipetakan ke metadata.event_timestamp.
UserAgent network.http.user_agent, network.http.parsed_user_agent Dipetakan langsung ke network.http.user_agent. Juga diuraikan dan dipetakan ke network.http.parsed_user_agent.
UVIndex additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "UVIndex".
Visibility additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "Visibilitas".
WindDirection additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "WindDirection".
WindSpeed additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "WindSpeed".
_Internal_WorkspaceResourceId additional.fields Ditambahkan sebagai kolom tambahan dengan kunci "workspace_resource_id".
T/A metadata.event_type Ditentukan oleh logika berdasarkan OperationName dan kolom lainnya. Defaultnya adalah "GENERIC_EVENT" jika tidak ada jenis peristiwa tertentu yang cocok. Nilai yang mungkin mencakup "STATUS_SHUTDOWN", "RESOURCE_CREATION", "STATUS_UPDATE", "USER_RESOURCE_DELETION", "RESOURCE_READ", "RESOURCE_WRITTEN", "RESOURCE_DELETION", dan "GROUP_MODIFICATION".
T/A metadata.vendor_name Tetapkan ke "Microsoft".
T/A metadata.product_name Tetapkan ke "Azure DevOps".
T/A metadata.log_type Tetapkan ke "AZURE_DEVOPS".
T/A principal.user.account_type Tetapkan ke "SERVICE_ACCOUNT_TYPE" jika AuthenticationMechanism berisi "ServicePrincipal", jika tidak, tetapkan ke "CLOUD_ACCOUNT_TYPE".
T/A target.asset.attribute.cloud.environment Tetapkan ke MICROSOFT_AZURE.
T/A security_result.action Tetapkan ke "ALLOW" untuk operasi yang berhasil (Berhasil, Dibuat, Diubah, dieksekusi, diperbarui, dihapus) dan "BLOCK" untuk operasi yang gagal (Gagal, Waktu Habis).
T/A extensions.auth.mechanism Tetapkan ke "USERNAME_PASSWORD" jika summary adalah "UserAuthToken".
T/A target.resource.resource_type Tetapkan ke "SETTING" jika pipeline_id ada, "CREDENTIAL" jika authorization_id ada, "DEVICE" jika agent_id ada, atau "DATABASE" jika namespace_id ada. Jika tidak, nilai ini akan ditetapkan ke "STORAGE_BUCKET" dalam beberapa kasus berdasarkan operationName.
T/A target.resource.resource_subtype Tetapkan ke "Pipeline" jika pipeline_id ada, "Token" jika authorization_id ada, "Agen" jika agent_id ada, atau "Namespace" jika namespace_id ada.

Perubahan

2024-01-19

  • Mengubah nilai "metadata.eventtype" dari "SERVICE*" menjadi "USER_RESOURCE_UPDATE_CONTENT" jika data pengguna utama dan data resource target ada.
  • Mengubah pemetaan untuk "IpAddress" dari "target.ip" menjadi "principal.ip".
  • Mengubah pemetaan untuk "ActorCUID" dari "principal.user.product_object_id" menjadi "additional.fields".
  • Mengubah pemetaan untuk "ScopeId" dari "principal.asset_id" menjadi "resource_ancestors.product_object_id".
  • Mengubah pemetaan untuk "_Internal_WorkspaceResourceId" dari "target.resource.product_object_id" menjadi "additional.fields".
  • Mengubah pemetaan untuk "ProjectId" dari "target.resource.attribute.labels" menjadi "target.resource_ancestors.product_object_id".
  • Mengubah pemetaan untuk "AuthenticationMechanism" dari "security_result.summary" menjadi "extensions.auth.auth_details".
  • Mengubah pemetaan untuk "CorrelationId" dari "network.session_id" menjadi "additional.fields".
  • Mengubah pemetaan untuk "ScopeDisplayName" dari "additional.fields" menjadi "target.resource_ancestors.name".
  • Mengubah pemetaan untuk "PipelineId" dari "additional.fields" menjadi "target.resource.product_object_id".
  • Mengubah pemetaan untuk "PipelineName" dari "additional.fields" menjadi "target.resource.name".
  • Mengubah pemetaan untuk "PipelineScope" dari "additional.fields" menjadi "target.resource.attribute.labels".
  • Mengubah pemetaan untuk "PipelineRevision" dari "additional.fields" menjadi "target.resource.attribute.labels".
  • Mengubah pemetaan untuk "ProjectId" dari "target.resource.resource.attribute.labels" menjadi "target.resource_ancestors.product_object_id".
  • Mengubah pemetaan untuk "Area" dari "additional.fields" menjadi "target.application".
  • Memetakan nilai "MICROSOFT_AZURE" ke "target.asset.attribute.cloud.environment".
  • Jika "AuthenticationMechanism" memiliki nilai "ServicePrincipal", tetapkan "SERVICE_ACCOUNT_TYPE" ke "principal.user.account_type", atau tetapkan "CLOUD_ACCOUNT_TYPE" ke "principal.user.account_type".
  • Memetakan "Kategori" ke "security_result.action_details".
  • Memetakan "ALLOW" atau "BLOCK" ke "security_result.action" berdasarkan kolom "Details".
  • Memetakan "ActivityId" ke "additional.fields".

2024-01-09

  • Menambahkan Grok dan gsub untuk mengurai log JSON yang tidak diuraikan.
  • Memetakan "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" ke "security_result.detection_fields".
  • Memetakan "resultSignature.label", "rec.resultType", "Visibility", "Humidity", "Precipitation","MoonPhase", "Moonrise", "Moonset", "Pressure", "WindSpeed", "UVIndex", "DewPoint", WindDirection", "Sunrise", "Sunset", "Temperature", "Icon", "Conditions" ke "additional.fields".
  • Memetakan "level" ke "security_result.severity".
  • Memetakan "appname" ke "target.application".
  • Memetakan "category.details" ke "security.result.category.details".
  • Memetakan "rec.resourceId" ke "target.resource.id".
  • Memetakan "res.extensionResourceName" ke "principal.hostname".

2023-11-23

  • Menambahkan dukungan untuk pola log JSON baru.
  • Memetakan "data.TimeGenerated" ke "metadata.event_timestamp".
  • Jika "_Internal_WorkspaceResourceId" tidak ada, maka "topic" akan dipetakan ke "target.resource.product_object_id".
  • Memetakan "data.Data.ConnectionId" ke "additional.fields".
  • Memetakan "data.Data.ownerDetails" ke "additional.fields".
  • Memetakan "data.Data.DeploymentResult" ke "additional.fields".
  • Memetakan "data.Data.EnvironmentName" ke "additional.fields".
  • Memetakan "data.Data.JobName" ke "additional.fields".
  • Memetakan "data.Data.StageName" ke "additional.fields".
  • Memetakan "data.Data.RunName" ke "additional.fields".
  • Memetakan "data.Data.RetentionLeaseId" ke "additional.fields".
  • Memetakan "data.Data.CheckSuiteId" ke "additional.fields".
  • Memetakan "data.Data.CheckSuiteStatus" ke "additional.fields".
  • Memetakan "data.Data.ApprovalRequest" ke "additional.fields".
  • Memetakan "data.Data.ApprovalType" ke "additional.fields".
  • Memetakan "subject" ke "additional.fields".
  • Memetakan "data.ActorUserId" ke "principal.user.userid".
  • Memetakan "data.ActorDisplayName" ke "principal.user.user_display_name".
  • Memetakan "data.ActorCUID" ke "principal.user.product_object_id".
  • Memetakan "data.ActorUPN" ke "principal.user.email_addresses".
  • Memetakan "data.ScopeId" ke "principal.asset_id".
  • Memetakan "data.CorrelationId" ke "network.session_id".
  • Memetakan "data.UserAgent" ke "network.http.user_agent".
  • Memetakan "data.ProjectId" ke "target.resource.attribute.labels".
  • Memetakan "data.ScopeType" ke "additional.fields".
  • Memetakan "data.ProjectName" ke "target.resource.attribute.labels".
  • Memetakan "data.Details" ke "metadata.description".
  • Memetakan "data.CategoryDisplayName" ke "security_result.rule_name".
  • Memetakan "data.Area" ke "additional.fields".
  • Memetakan "data.Id" ke "metadata.product_log_id".
  • Memetakan "data.ActionId" ke "metadata.product_event_type".
  • Memetakan "data.Timestamp" ke "metadata.event_timestamp".

2022-06-28

  • Parser yang baru dibuat