Mengumpulkan log login Microsoft Entra ID
Dokumen ini menjelaskan cara mengumpulkan log login Microsoft Entra ID (sebelumnya Azure Active Directory) dengan menyiapkan feed Google Security Operations. Anda dapat mengonfigurasi penyerapan menggunakan dua metode: Azure Event Hub (direkomendasikan) atau Third Party API.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke portal Microsoft Azure
- Peran Administrator Keamanan atau Administrator Global di Microsoft Entra ID (diperlukan untuk setelan diagnostik)
- Untuk metode Third Party API, salah satu peran berikut untuk memberikan izin admin:
- Administrator Global - dapat memberikan izin untuk izin apa pun, untuk API apa pun
- Administrator Peran Istimewa - dapat memberikan izin untuk izin apa pun, untuk API apa pun
- Administrator Aplikasi Cloud - dapat memberikan izin untuk semua izin untuk semua API, kecuali peran aplikasi Microsoft Graph (izin aplikasi)
Metode 1: Azure Event Hub (direkomendasikan)
Metode ini melakukan streaming log login Entra ID melalui Azure Event Hub dengan Capture diaktifkan, yang menulis data ke Azure Blob Storage. Kemudian, Google SecOps menyerap log dari Blob Storage menggunakan jenis feed Azure Blob Storage V2.
Mengonfigurasi Akun Azure Storage
Buat Akun Penyimpanan
- Di portal Azure, cari Storage accounts.
- Klik + Create.
Berikan detail konfigurasi berikut:
Setelan Nilai Langganan Pilih langganan Azure Anda Grup resource Pilih yang sudah ada atau buat yang baru Nama akun penyimpanan Masukkan nama unik (misalnya, secopsaadsignin)Region Pilih region yang paling dekat dengan namespace Event Hub Anda Performa Standar (direkomendasikan) Redundansi LRS (Locally redundant storage) atau GRS (Geo-redundant storage) Klik Review + create.
Tinjau ringkasan, lalu klik Buat.
Tunggu hingga deployment selesai.
Mendapatkan kredensial Akun Penyimpanan
- Buka Akun Penyimpanan yang Anda buat.
- Di navigasi kiri, pilih Kunci akses di bagian Keamanan + jaringan.
- Klik Tampilkan kunci.
- Salin dan simpan yang berikut:
- Nama akun penyimpanan
- Key 1 atau Key 2: Kunci akses bersama.
Buat namespace Event Hub dan Event Hub
Buat namespace Event Hub
- Di portal Azure, cari Event Hubs.
- Klik + Create.
Berikan detail konfigurasi berikut:
Setelan Nilai Langganan Pilih langganan Azure Anda Grup resource Pilih grup resource yang sama dengan akun penyimpanan Anda Nama namespace Masukkan nama unik (misalnya, secops-entraid-signin)Location Pilih region yang sama dengan akun penyimpanan Anda Tingkatan harga Standar (wajib untuk Event Hub Capture) Klik Tinjau + buat, lalu klik Buat.
Tunggu hingga deployment selesai.
Membuat Hub Acara
- Buka namespace Event Hub yang Anda buat.
- Klik + Event Hub di bagian atas.
- Berikan detail konfigurasi berikut:
- Nama: Masukkan nama (misalnya,
entraid-signin-logs). - Jumlah partisi: 2 (default, tingkatkan untuk throughput yang lebih tinggi).
- Kebijakan pembersihan: Hapus.
- Waktu retensi (jam): 24 (minimum, tingkatkan jika diperlukan untuk ketahanan).
- Nama: Masukkan nama (misalnya,
- Klik Tinjau + buat, lalu klik Buat.
Mengaktifkan Azure Event Hubs Capture
- Buka Event Hub yang Anda buat (di dalam namespace).
- Di navigasi sebelah kiri, pilih Capture.
- Setel Capture ke On.
Berikan detail konfigurasi berikut:
Setelan Nilai Periode waktu (menit) 5 (atau lebih rendah untuk hampir real-time) Jendela ukuran (MB) 300 Penyedia Pengambilan Gambar Azure Blob Storage Langganan Azure Pilih langganan Anda Akun Penyimpanan Pilih akun penyimpanan yang Anda buat Blob Container Buat atau pilih penampung (misalnya, entraid-signin-capture)Klik Simpan.
Mengonfigurasi setelan diagnostik Entra ID
- Di portal Azure, cari Microsoft Entra ID.
- Di navigasi sebelah kiri, buka Monitoring & health > Diagnostic settings.
- Klik Tambahkan setelan diagnostik.
- Berikan detail konfigurasi berikut:
- Nama setelan diagnostik: Masukkan nama deskriptif (misalnya,
signin-logs-to-eventhub). - Di bagian Log, pilih kategori log login yang ingin Anda ekspor:
- SignInLogs - Login pengguna interaktif.
- NonInteractiveUserSignInLogs - Login pengguna non-interaktif (opsional, direkomendasikan).
- ServicePrincipalSignInLogs - Login akun utama layanan (opsional).
- ManagedIdentitySignInLogs - Login identitas terkelola (opsional).
- Di bagian Detail tujuan, pilih Streaming ke hub peristiwa.
- Subscription: Pilih langganan yang berisi namespace Event Hub Anda.
- Namespace hub peristiwa: Pilih namespace yang Anda buat (misalnya,
secops-entraid-signin). - Nama hub peristiwa: Pilih Event Hub yang Anda buat (misalnya,
entraid-signin-logs). - Nama kebijakan hub peristiwa: Pilih RootManageSharedAccessKey.
- Nama setelan diagnostik: Masukkan nama deskriptif (misalnya,
Klik Simpan.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed > Tambahkan Feed Baru
- Hub Konten > Paket Konten > Mulai
Mengonfigurasi feed di Google SecOps untuk menyerap log login Entra ID
- Klik paket Azure Platform.
- Cari jenis log Azure AD.
Tentukan nilai untuk kolom berikut:
- Jenis Sumber: Microsoft Azure Blob Storage V2
URI Azure: Masukkan URL endpoint Blob Service dengan jalur penampung pengambilan:
https://<storage-account>.blob.core.windows.net/entraid-signin-capture/Ganti
<storage-account>dengan nama akun penyimpanan Azure Anda.Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
- Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer.
- Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
- Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
Shared key: Masukkan nilai kunci akses bersama dari Akun Penyimpanan.
Namespace aset: Namespace aset.
Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
Klik Buat feed.
Setelah membuat feed, mungkin perlu waktu 5-10 menit sebelum log mulai muncul di Google SecOps.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi beberapa feed untuk berbagai jenis log dalam keluarga produk ini, lihat Mengonfigurasi feed menurut produk.
Untuk mengetahui informasi selengkapnya tentang feed Google Security Operations, lihat dokumentasi feed Google Security Operations. Untuk mengetahui informasi tentang persyaratan untuk setiap jenis feed, lihat Konfigurasi feed menurut jenis.
Konfigurasi firewall Azure Storage (jika diaktifkan)
Jika Akun Azure Storage Anda menggunakan firewall, Anda harus menambahkan rentang IP Google SecOps.
- Di portal Azure, buka Akun Penyimpanan Anda.
- Pilih Networking di bagian Security + networking.
- Di bagian Firewalls and virtual networks, pilih Enabled from selected virtual networks and IP addresses.
- Di bagian Firewall, di bagian Rentang alamat, klik + Tambahkan rentang IP.
- Tambahkan setiap rentang IP Google SecOps dalam notasi CIDR.
- Lihat dokumentasi Daftar IP yang Diizinkan.
- Atau ambil secara terprogram menggunakan Feed Management API.
- Klik Simpan.
Metode 2: API Pihak Ketiga
Metode ini menggunakan Microsoft Graph API untuk mengambil log login Entra ID langsung dari tenant Microsoft Anda.
Mengonfigurasi daftar IP yang diizinkan
Sebelum membuat feed, Anda harus memasukkan rentang IP Google SecOps ke dalam daftar yang diizinkan di setelan jaringan Microsoft Azure atau kebijakan Akses Bersyarat Anda.
Mendapatkan rentang IP Google SecOps
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Catat rentang IP yang ditampilkan di antarmuka pembuatan feed.
- Atau, ambil rentang IP secara terprogram menggunakan Feed Management API.
Mengonfigurasi Akses Bersyarat untuk identitas workload (jika diperlukan)
Jika organisasi Anda menggunakan kebijakan Akses Bersyarat yang membatasi akses berdasarkan lokasi:
- Di pusat admin Microsoft Entra, buka Protection > Conditional Access > Named locations.
- Klik + Lokasi baru.
- Berikan detail konfigurasi berikut:
- Nama: Masukkan
Google SecOps IP Ranges. - Tandai sebagai lokasi tepercaya: Opsional, berdasarkan kebijakan keamanan Anda.
- Rentang IP: Tambahkan setiap rentang IP Google SecOps dalam notasi CIDR.
- Nama: Masukkan
- Klik Create.
- Buka Conditional Access > Policies.
- Untuk kebijakan apa pun yang berlaku untuk identitas workload, konfigurasi pengecualian untuk lokasi bernama
Google SecOps IP Rangesatau prinsipal layanan tertentu.
Mengonfigurasi akses API Microsoft Azure AD
Membuat pendaftaran aplikasi
- Login ke pusat admin Microsoft Entra atau portal Azure.
- Buka Identity > Applications > App registrations.
- Klik New registration.
Berikan detail konfigurasi berikut:
- Name: Masukkan nama deskriptif (misalnya,
Google SecOps Sign-In Logs Integration). - Jenis akun yang didukung: Pilih Accounts in this organizational directory only (Single tenant).
- Redirect URI: Biarkan kosong (tidak diperlukan untuk autentikasi principal layanan).
- Name: Masukkan nama deskriptif (misalnya,
Klik Daftar.
Setelah pendaftaran, salin dan simpan nilai berikut:
- ID aplikasi (klien)
- ID Direktori (tenant)
Mengonfigurasi izin API
Integrasi ini memerlukan izin aplikasi Microsoft Graph berikut:
- Di pendaftaran aplikasi, buka API permissions.
- Klik Add a permission.
- Pilih Microsoft Graph > Izin aplikasi.
- Pilih izin berikut:
- AuditLog.Read.All - Diperlukan untuk membaca log login.
- Directory.Read.All - Diperlukan oleh Microsoft Graph API untuk akses log aktivitas login (masalah umum).
- SecurityEvents.Read.All - Diperlukan oleh Google Security Operations.
- Klik Add permissions.
- Klik Grant admin consent for [Your Organization].
- Verifikasi bahwa kolom Status menampilkan Diberikan untuk [Organisasi Anda] untuk ketiga izin tersebut.
| Izin | Jenis | Deskripsi |
|---|---|---|
| AuditLog.Read.All | Aplikasi | Membaca semua data log audit dan login |
| Directory.Read.All | Aplikasi | Membaca data direktori (diperlukan untuk akses API) |
| SecurityEvents.Read.All | Aplikasi | Membaca peristiwa keamanan |
Buat rahasia klien
- Buka Certificates & secrets.
- Klik New client secret.
Berikan detail konfigurasi berikut:
- Deskripsi: Masukkan nama deskriptif (misalnya,
Google SecOps Feed). - Masa berlaku: Pilih periode masa berlaku.
- Deskripsi: Masukkan nama deskriptif (misalnya,
Klik Tambahkan.
Penting: Segera salin Nilai rahasia klien. Nilai ini hanya ditampilkan satu kali dan tidak dapat diambil lagi.
Memverifikasi akses API sebelum membuat feed
Sebelum membuat feed Google SecOps, verifikasi bahwa akun utama layanan dapat berhasil mengautentikasi dan mengakses Microsoft Graph API.
Menguji autentikasi menggunakan PowerShell
# Replace with your actual values $tenantId = "your-tenant-id" $clientId = "your-client-id" $clientSecret = "your-client-secret" # Token request parameters (must be lowercase) $tokenBody = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://graph.microsoft.com/.default" } # Request access token $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -Body $tokenBody -ContentType "application/x-www-form-urlencoded" if ($tokenResponse.access_token) { Write-Host "✓ Successfully obtained access token" -ForegroundColor Green # Test API call to sign-ins endpoint $apiUrl = "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$top=1" $headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" } try { $signInResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers Write-Host "✓ Successfully accessed sign-ins API" -ForegroundColor Green Write-Host "Sample sign-in log retrieved successfully" -ForegroundColor Green } catch { Write-Host "✗ Failed to access sign-ins API" -ForegroundColor Red Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "✗ Failed to obtain access token" -ForegroundColor Red }Output yang diharapkan:
✓ Successfully obtained access token ✓ Successfully accessed sign-ins API Sample sign-in log retrieved successfullyMenguji autentikasi menggunakan curl
# Replace with your actual values TENANT_ID="your-tenant-id" CLIENT_ID="your-client-id" CLIENT_SECRET="your-client-secret" # Request access token curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=$CLIENT_ID" \ -d "client_secret=$CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default" # Test API access curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$top=1"
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed > Tambahkan Feed Baru
- Hub Konten > Paket Konten > Mulai
Mengonfigurasi feed di Google SecOps untuk menyerap log login Microsoft Azure AD
- Klik paket Azure Platform.
- Cari jenis log Azure AD.
Tentukan nilai untuk kolom berikut:
- Jenis Sumber: API pihak ketiga (direkomendasikan)
- Client ID OAuth: ID Aplikasi (klien) dari pendaftaran aplikasi.
- Rahasia klien OAuth: Nilai rahasia klien yang Anda salin sebelumnya.
- ID Tenant: ID tenant Microsoft Anda dari pendaftaran aplikasi (format UUID, misalnya,
0fc279f9-fe30-41be-97d3-abe1d7681418). Jalur Lengkap API: URL endpoint Microsoft Graph REST API:
graph.microsoft.com/v1.0/auditLogs/signInsEndpoint Autentikasi API: Endpoint Autentikasi Microsoft Active Directory:
login.microsoftonline.com
Opsi Lanjutan:
- Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
- Namespace aset: Namespace aset yang akan dikaitkan dengan feed.
- Label Penyerapan: Label akan ditambahkan ke semua peristiwa dari feed ini.
Klik Buat feed.
Setelah membuat feed, data konteks akan diambil secara berkala. Mungkin perlu waktu hingga 24 jam agar snapshot direktori awal muncul di Google SecOps.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi beberapa feed untuk berbagai jenis log dalam keluarga produk ini, lihat Mengonfigurasi feed menurut produk.
Untuk mengetahui informasi selengkapnya tentang feed Google Security Operations, lihat dokumentasi feed Google Security Operations. Untuk mengetahui informasi tentang persyaratan untuk setiap jenis feed, lihat Konfigurasi feed menurut jenis. Jika Anda mengalami masalah saat membuat feed, hubungi dukungan Operasi Keamanan Google.
Endpoint regional
Untuk deployment Microsoft Azure AD di sovereign cloud, gunakan endpoint regional yang sesuai:
| Lingkungan Cloud | Jalur Lengkap API | Endpoint Autentikasi API |
|---|---|---|
| Global | graph.microsoft.com/v1.0/auditLogs/signIns |
login.microsoftonline.com |
| L4 Pemerintah AS | graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| Pemerintah AS L5 (DOD) | dod-graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| China (21Vianet) | microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns |
login.chinacloudapi.cn |
Tabel Pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
activityDateTime |
principal.event_timestamp |
Diuraikan dari kolom activityDateTime. Jika kolom tidak dalam format "yyyy-MM-ddTHH:mm:ss.SSSZ" atau "ISO8601" yang diharapkan, parser akan mencoba format lain seperti "MM/dd/yyyy HH:mm:ss A" atau "MM/d/yyyy HH:mm:ss A". |
activityDisplayName |
security_result.summary |
Dipetakan langsung dari activityDisplayName. |
additionalDetails.0.value |
network.http.user_agent |
Dipetakan langsung dari additionalDetails.0.value. |
additionalDetails.1.key |
target.resource.attribute.labels.key |
Dipetakan langsung dari additionalDetails.1.key. |
additionalDetails.1.value |
target.resource.attribute.labels.value |
Dipetakan langsung dari additionalDetails.1.value. |
additionalInfo.[].Key |
network.http.user_agent, target.url |
Jika Key adalah userAgent, petakan Value ke network.http.user_agent dan network.http.parsed_user_agent. Jika Key adalah alertUrl, petakan Value ke target.url. |
additionalInfo.[].Value |
network.http.user_agent, target.url |
Jika Key adalah userAgent, petakan Value ke network.http.user_agent dan network.http.parsed_user_agent. Jika Key adalah alertUrl, petakan Value ke target.url. |
am_category |
metadata.description |
Dipetakan langsung dari am_category. |
am_tenantId |
metadata.product_deployment_id |
Dipetakan langsung dari am_tenantId. |
appId |
target.resource.attribute.labels.value |
Dipetakan langsung dari appId dengan kunci label sebagai "ID Aplikasi". |
appDisplayName |
target.application |
Dipetakan langsung dari appDisplayName. |
appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name, about.[].user.user_display_name |
Dipetakan langsung dari appliedConditionalAccessPolicies.[].displayName. |
appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
Dipetakan langsung dari appliedConditionalAccessPolicies.[].enforcedGrantControls dengan kunci label sebagai "applied_conditional_access_policies_enforced_grant_controls". |
appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
Dipetakan langsung dari appliedConditionalAccessPolicies.[].enforcedSessionControls dengan kunci label sebagai "applied_conditional_access_policies_enforced_session_controls". |
appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id, about.[].user.userid |
Dipetakan langsung dari appliedConditionalAccessPolicies.[].id. |
appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value, about.[].labels.value |
Dipetakan langsung dari appliedConditionalAccessPolicies.[].result dengan kunci label sebagai "Result". |
authenticationDetails.[].authenticationMethod |
security_result.[].detection_fields.value |
Dipetakan langsung dari authenticationDetails.[].authenticationMethod dengan kunci label sebagai "authenticationMethod". |
authenticationDetails.[].authenticationMethodDetail |
security_result.[].detection_fields.value |
Dipetakan langsung dari authenticationDetails.[].authenticationMethodDetail dengan kunci label sebagai "authenticationMethodDetail". |
authenticationDetails.[].authenticationStepDateTime |
security_result.[].detection_fields.value |
Dipetakan langsung dari authenticationDetails.[].authenticationStepDateTime dengan kunci label sebagai "authenticationStepDateTime". |
authenticationDetails.[].authenticationStepRequirement |
security_result.[].detection_fields.value |
Dipetakan langsung dari authenticationDetails.[].authenticationStepRequirement dengan kunci label sebagai "authenticationStepRequirement". |
authenticationDetails.[].authenticationStepResultDetail |
security_result.[].detection_fields.value |
Dipetakan langsung dari authenticationDetails.[].authenticationStepResultDetail dengan kunci label sebagai "authenticationStepResultDetail". |
authenticationDetails.[].succeeded |
security_result.action |
Jika nilai adalah "true", maka ALLOW, jika tidak BLOCK. |
authenticationRequirement |
additional.fields.value.string_value |
Dipetakan langsung dari authenticationRequirement dengan kunci label sebagai "AuthenticationRequirement". |
authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
Dipetakan langsung dari authenticationRequirementPolicies.[].detail dengan kunci label sebagai "detail". |
authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
Dipetakan langsung dari authenticationRequirementPolicies.[].requirementProvider dengan kunci label sebagai "requirementProvider". |
callerIpAddress |
principal.ip, principal.asset.ip |
Dipetakan langsung dari callerIpAddress. |
category |
metadata.description |
Dipetakan langsung dari category. |
clientAppUsed |
principal.application |
Dipetakan langsung dari clientAppUsed. |
conditionalAccessStatus |
additional.fields.value.string_value |
Dipetakan langsung dari conditionalAccessStatus dengan kunci label sebagai "conditionalAccessStatus". |
correlationId |
network.session_id, security_result.detection_fields.value |
Dipetakan langsung dari correlationId. Juga digunakan sebagai security_result.detection_fields.value dengan kunci label sebagai "CorrelationId". |
createdDateTime |
when |
Kolom when berasal dari kolom createdDateTime. Tanggal dan waktu diekstrak dari kolom createdDateTime menggunakan grok, lalu digabungkan untuk membentuk kolom when. |
deviceDetail.browser |
network.http.user_agent |
Dipetakan langsung dari deviceDetail.browser. |
deviceDetail.deviceId |
principal.asset.asset_id, principal.asset_id |
Dipetakan langsung dari deviceDetail.deviceId dan diawali dengan "ID Perangkat:". |
deviceDetail.displayName |
principal.asset.hostname |
Dipetakan langsung dari deviceDetail.displayName. |
deviceDetail.isCompliant |
principal.asset.attribute.labels.value |
Dipetakan langsung dari deviceDetail.isCompliant dengan kunci label sebagai "isCompliant". |
deviceDetail.isManaged |
principal.asset.attribute.labels.value |
Dipetakan langsung dari deviceDetail.isManaged dengan kunci label sebagai "isManaged". |
deviceDetail.operatingSystem |
principal.platform_version |
Dipetakan langsung dari deviceDetail.operatingSystem. |
deviceDetail.trustType |
principal.asset.attribute.labels.value |
Dipetakan langsung dari deviceDetail.trustType dengan kunci label sebagai "trustType". |
durationMs |
additional.fields.value.string_value |
Dipetakan langsung dari durationMs dengan kunci label sebagai "durationMs". |
event.id |
- | Tidak dipetakan sesuai petunjuk (poin 3). |
id |
metadata.product_log_id |
Dipetakan langsung dari id. |
identity |
target.user.user_display_name |
Dipetakan langsung dari identity jika berbeda dari userId dan bukan alamat email. |
initiatedBy.user.displayName |
principal.user.user_display_name |
Dipetakan langsung dari initiatedBy.user.displayName. |
initiatedBy.user.id |
principal.user.userid, principal.user.windows_sid |
Dipetakan langsung dari initiatedBy.user.id. |
initiatedBy.user.ipAddress |
principal.ip, principal.asset.ip |
Dipetakan langsung dari initiatedBy.user.ipAddress. |
initiatedBy.user.userPrincipalName |
principal.user.email_addresses, principal.user.userid |
Dipetakan langsung dari initiatedBy.user.userPrincipalName. Jika berupa alamat email, maka dipetakan ke email_addresses, jika tidak, maka dipetakan ke userid. |
Level |
security_result.severity_details, level |
Dipetakan langsung dari Level. |
level |
security_result.severity_details, security_result.severity |
Dipetakan langsung dari level. Juga dipetakan ke security_result.severity setelah dikonversi menjadi huruf besar. Penanganan khusus untuk nilai "Information", "Informational", "0", "4", "Warning", "1", "3", "Error", "2", dan "Critical". |
location.city |
principal.location.city |
Dipetakan langsung dari location.city. |
location.countryOrRegion |
principal.location.country_or_region |
Dipetakan langsung dari location.countryOrRegion. |
location.geoCoordinates.altitude |
additional.fields.value.string_value |
Dipetakan langsung dari location.geoCoordinates.altitude dengan kunci label sebagai "location_geoCoordinates_altitude". |
location.geoCoordinates.latitude |
principal.location.region_latitude, principal.location.region_coordinates.latitude |
Dipetakan langsung dari location.geoCoordinates.latitude. |
location.geoCoordinates.longitude |
principal.location.region_longitude, principal.location.region_coordinates.longitude |
Dipetakan langsung dari location.geoCoordinates.longitude. |
location.state |
principal.location.state |
Dipetakan langsung dari location.state. |
location |
principal.location.name |
Dipetakan langsung dari location. |
log_type |
metadata.log_type |
Dipetakan langsung dari log_type. |
networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
Nilai yang digabungkan dari networkLocationDetails.[].networkNames dengan kunci label sebagai "networkName {index}". |
networkLocationDetails.[].networkType |
security_result.detection_fields.value, additional.fields.value.string_value |
Dipetakan langsung dari networkLocationDetails.[].networkType dengan kunci label sebagai "networkType". Juga digunakan sebagai additional.fields.value.string_value dengan kunci label sebagai "networkType {index}". |
operationName |
event_type |
Jika operationName adalah "Aktivitas login", maka USER_LOGIN. Jika operationName adalah "Tambahkan anggota ke grup", maka USER_CHANGE_PERMISSIONS. |
operationType |
security_result.action_details |
Dipetakan langsung dari operationType. |
properties.activity |
security_result.summary |
Dipetakan langsung dari properties.activity. |
properties.activityDateTime |
when |
Diuraikan dari kolom properties.activityDateTime. Jika kolom tidak dalam format "yyyy-MM-ddTHH:mm:ss.SSSZ" atau "ISO8601" yang diharapkan, parser akan mencoba format lain seperti "MM/dd/yyyy HH:mm:ss A" atau "MM/d/yyyy HH:mm:ss A". |
properties.activityDisplayName |
security_result.summary |
Dipetakan langsung dari properties.activityDisplayName. |
properties.additionalInfo |
network.http.user_agent, target.url |
Diuraikan sebagai JSON dan jika kuncinya adalah userAgent, petakan nilai ke network.http.user_agent dan network.http.parsed_user_agent. Jika kuncinya adalah alertUrl, petakan nilai ke target.url. |
properties.appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name |
Dipetakan langsung dari properties.appliedConditionalAccessPolicies.[].displayName. |
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
Dipetakan langsung dari properties.appliedConditionalAccessPolicies.[].enforcedGrantControls dengan kunci label sebagai "applied_conditional_access_policies_enforced_grant_controls". |
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
Dipetakan langsung dari properties.appliedConditionalAccessPolicies.[].enforcedSessionControls dengan kunci label sebagai "applied_conditional_access_policies_enforced_session_controls". |
properties.appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id |
Dipetakan langsung dari properties.appliedConditionalAccessPolicies.[].id. |
properties.appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value |
Dipetakan langsung dari properties.appliedConditionalAccessPolicies.[].result dengan kunci label sebagai "Result". |
properties.appId |
appId |
Dipetakan langsung dari properties.appId. |
properties.appDisplayName |
target.application |
Dipetakan langsung dari properties.appDisplayName. |
properties.authenticationDetails.[].authenticationMethod |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationDetails.[].authenticationMethod dengan kunci label sebagai "authenticationMethod". |
properties.authenticationDetails.[].authenticationMethodDetail |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationDetails.[].authenticationMethodDetail dengan kunci label sebagai "authenticationMethodDetail". |
properties.authenticationDetails.[].authenticationStepDateTime |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationDetails.[].authenticationStepDateTime dengan kunci label sebagai "authenticationStepDateTime". |
properties.authenticationDetails.[].authenticationStepRequirement |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationDetails.[].authenticationStepRequirement dengan kunci label sebagai "authenticationStepRequirement". |
properties.authenticationDetails.[].authenticationStepResultDetail |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationDetails.[].authenticationStepResultDetail dengan kunci label sebagai "authenticationStepResultDetail". |
properties.authenticationRequirement |
additional.fields.value.string_value |
Dipetakan langsung dari properties.authenticationRequirement dengan kunci label sebagai "AuthenticationRequirement". |
properties.authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationRequirementPolicies.[].detail dengan kunci label sebagai "detail". |
properties.authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
Dipetakan langsung dari properties.authenticationRequirementPolicies.[].requirementProvider dengan kunci label sebagai "requirementProvider". |
properties.clientAppUsed |
principal.application |
Dipetakan langsung dari properties.clientAppUsed. |
properties.conditionalAccessStatus |
additional.fields.value.string_value |
Dipetakan langsung dari properties.conditionalAccessStatus dengan kunci label sebagai "conditionalAccessStatus". |
properties.crossTenantAccessType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.crossTenantAccessType dengan kunci label sebagai "crossTenantAccessType". |
properties.detectedDateTime |
additional.fields.value.string_value |
Dipetakan langsung dari properties.detectedDateTime dengan kunci label sebagai "detectedDateTime". |
properties.detectionTimingType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.detectionTimingType dengan kunci label sebagai "detectionTimingType". |
properties.homeTenantId |
additional.fields.value.string_value |
Dipetakan langsung dari properties.homeTenantId dengan kunci label sebagai "homeTenantId". |
properties.id |
metadata.product_log_id |
Dipetakan langsung dari properties.id. |
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
Dipetakan langsung dari properties.initiatedBy.user.displayName. |
properties.initiatedBy.user.id |
principal.user.windows_sid |
Dipetakan langsung dari properties.initiatedBy.user.id. |
properties.initiatedBy.user.ipAddress |
principal.ip, principal.asset.ip |
Dipetakan langsung dari properties.initiatedBy.user.ipAddress. |
properties.initiatedBy.user.userPrincipalName |
principal.user.email_addresses, principal.user.userid |
Dipetakan langsung dari properties.initiatedBy.user.userPrincipalName. Jika berupa alamat email, maka dipetakan ke email_addresses, jika tidak, maka dipetakan ke userid. |
properties.ipAddress |
principal.ip, principal.asset.ip |
Dipetakan langsung dari properties.ipAddress. |
properties.isGuest |
additional.fields.value.string_value |
Dipetakan langsung dari properties.isGuest dengan kunci label sebagai "isGuest". |
properties.isDeleted |
additional.fields.value.string_value |
Dipetakan langsung dari properties.isDeleted dengan kunci label sebagai "isDeleted". |
properties.isProcessing |
additional.fields.value.string_value |
Dipetakan langsung dari properties.isProcessing dengan kunci label sebagai "isProcessing". |
properties.lastUpdatedDateTime |
additional.fields.value.string_value |
Dipetakan langsung dari properties.lastUpdatedDateTime dengan kunci label sebagai "lastUpdatedDateTime". |
properties.location.city |
principal.location.city |
Dipetakan langsung dari properties.location.city. |
properties.location.countryOrRegion |
principal.location.country_or_region |
Dipetakan langsung dari properties.location.countryOrRegion. |
properties.location.geoCoordinates.latitude |
principal.location.region_latitude, principal.location.region_coordinates.latitude |
Dipetakan langsung dari properties.location.geoCoordinates.latitude. |
properties.location.geoCoordinates.longitude |
principal.location.region_longitude, principal.location.region_coordinates.longitude |
Dipetakan langsung dari properties.location.geoCoordinates.longitude. |
properties.location.state |
principal.location.state |
Dipetakan langsung dari properties.location.state. |
properties.networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
Nilai yang digabungkan dari properties.networkLocationDetails.[].networkNames dengan kunci label sebagai "properties networkName {index}". |
properties.networkLocationDetails.[].networkType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.networkLocationDetails.[].networkType dengan kunci label sebagai "properties networkType {index}". |
properties.riskEventType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskEventType dengan kunci label sebagai "riskEventType". |
properties.riskLastUpdatedDateTime |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskLastUpdatedDateTime dengan kunci label sebagai "riskLastUpdatedDateTime". |
properties.riskLevel |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskLevel dengan kunci label sebagai "riskLevel". |
properties.riskLevelDuringSignIn |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskLevelDuringSignIn dengan kunci label sebagai "riskLevelDuringSignIn". |
properties.riskState |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskState dengan kunci label sebagai "riskState". |
properties.riskDetail |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskDetail dengan kunci label sebagai "riskDetail". |
properties.riskType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.riskType dengan kunci label sebagai "riskType". |
properties.source |
additional.fields.value.string_value |
Dipetakan langsung dari properties.source dengan kunci label sebagai "source". |
properties.targetResources.0.id |
target.user.product_object_id |
Dipetakan langsung dari properties.targetResources.0.id. |
properties.targetResources.modifiedProperties.0.newValue |
target.group.product_object_id |
Dipetakan langsung dari properties.targetResources.modifiedProperties.0.newValue. |
properties.tokenIssuerType |
additional.fields.value.string_value |
Dipetakan langsung dari properties.tokenIssuerType dengan kunci label sebagai "tokenIssuerType". |
properties.userAgent |
network.http.user_agent, network.http.parsed_user_agent |
Dipetakan langsung dari properties.userAgent. |
properties.userDisplayName |
target.user.user_display_name |
Dipetakan langsung dari properties.userDisplayName. |
properties.userId |
target.user.product_object_id |
Dipetakan langsung dari properties.userId. |
properties.userPrincipalName |
target.user.userid, target.user.email_addresses |
Dipetakan langsung dari properties.userPrincipalName. Jika berupa alamat email, maka dipetakan ke email_addresses, jika tidak, maka dipetakan ke userid. |
result |
security_result.action, security_result.action_details |
Jika result adalah "success", maka ALLOW. |
resultDescription |
security_result.description |
Dipetakan langsung dari resultDescription. |
resultSignature |
additional.fields.value.string_value |
Dipetakan langsung dari resultSignature dengan kunci label sebagai "resultSignature". |
resultType |
security_result.rule_id, action, security_result.summary |
Jika resultType adalah "0", maka ALLOW dan "Login berhasil". Jika tidak, BLOCK dan "Terjadi kegagalan login". |
resourceId |
target.resource.id, target.resource.product_object_id |
Dipetakan langsung dari resourceId. |
resourceDisplayName |
target.resource.name, appDisplayName |
Dipetakan langsung dari resourceDisplayName. |
riskDetail |
additional.fields.value.string_value |
Dipetakan langsung dari riskDetail dengan kunci label sebagai "riskDetail". |
riskEventTypes.[]. |
additional.fields.value.string_value, additional.fields.value.list_value.values.string_value |
Nilai ditambahkan ke daftar dengan kunci sebagai "riskEventTypes" di additional.fields. Selain itu, setiap nilai ditambahkan sebagai kolom terpisah dengan kunci sebagai "riskEventType" di additional.fields. |
riskEventTypes_v2.[]. |
additional.fields.value.list_value.values.string_value |
Nilai ditambahkan ke daftar dengan kunci sebagai "riskEventTypes_v2" di additional.fields. |
riskLevelAggregated |
additional.fields.value.string_value |
Dipetakan langsung dari riskLevelAggregated dengan kunci label sebagai "riskLevelAggregated". |
riskLevelDuringSignIn |
additional.fields.value.string_value |
Dipetakan langsung dari riskLevelDuringSignIn dengan kunci label sebagai "riskLevelDuringSignIn". |
riskState |
additional.fields.value.string_value |
Dipetakan langsung dari riskState dengan kunci label sebagai "riskState". |
status.additionalDetails |
security_result.description |
Dipetakan langsung dari status.additionalDetails. |
status.errorCode |
security_result.rule_id, errorCode |
Dipetakan langsung dari status.errorCode. |
target.displayName |
resourceDisplayName |
Dipetakan langsung dari target.displayName. |
target.id |
resourceId |
Dipetakan langsung dari target.id. |
target.modifiedProperties.[].displayName |
target.resource.attribute.labels.key |
Dipetakan langsung dari target.modifiedProperties.[].displayName. |
target.modifiedProperties.[].newValue |
target.resource.attribute.labels.value, target.resource.product_object_id |
Dipetakan langsung dari target.modifiedProperties.[].newValue. |
target.modifiedProperties.[].oldValue |
target.resource.attribute.labels.value |
Dipetakan langsung dari target.modifiedProperties.[].oldValue. |
target.type |
target.resource.type |
Dipetakan langsung dari target.type. |
tenantId |
metadata.product_deployment_id |
Dipetakan langsung dari tenantId. |
time |
when |
Kolom when berasal dari kolom time. Tanggal dan waktu diekstrak dari kolom time menggunakan grok, lalu digabungkan untuk membentuk kolom when. |
userAgent |
network.http.user_agent, network.http.parsed_user_agent |
Dipetakan langsung dari userAgent. |
userDisplayName |
target.user.user_display_name |
Dipetakan langsung dari userDisplayName. |
userId |
target.user.product_object_id |
Dipetakan langsung dari userId. |
userPrincipalName |
target.user.userid, principal.administrative_domain, target.user.email_addresses |
Dipetakan langsung dari userPrincipalName. Jika berupa alamat email, alamat tersebut dipetakan ke email_addresses dan bagian domain diekstrak serta dipetakan ke principal.administrative_domain. Jika tidak, nilai ini dipetakan ke userid. |
| (Logika Parser) | event.idm.is_alert, event.idm.is_significant |
Tetapkan ke benar (true) jika tingkatnya adalah "Kritis". |
| (Logika Parser) | event.idm.read_only_udm.metadata.event_type |
Ditetapkan ke "USER_LOGIN" jika has_target_user adalah "true". Ditetapkan ke "USER_UNCATEGORIZED" jika has_principal_user adalah "true". Tetapkan ke "STATUS_UPDATE" jika has_principal adalah "true". Jika tidak, ditetapkan ke "GENERIC_EVENT". |
| (Logika Parser) | event.idm.read_only_udm.metadata.vendor_name |
Tetapkan ke "Microsoft". |
| (Logika Parser) | event.idm.read_only_udm.metadata.product_name |
Tetapkan ke "Azure AD". |
| (Logika Parser) | event.idm.read_only_udm.extensions.auth.type |
Ditetapkan ke "SSO". |
| (Logika Parser) | event.idm.read_only_udm.extensions.auth.mechanism |
Tetapkan ke "INTERACTIVE" jika isInteractive adalah "true". Jika tidak, setel ke "MECHANISM_OTHER". |
| (Logika Parser) | security_result.action |
Setel ke ALLOW jika hasilnya berhasil. |
| (Logika Parser) | security_result.action |
Disetel ke ALLOW jika resultType adalah 0. |
| (Logika Parser) | security_result.action |
Ditetapkan ke BLOCK jika resultType bukan 0 dan bukan "". |
| (Logika Parser) | security_result.category |
Ditetapkan ke "AUTH_VIOLATION" jika resultType bukan 0 dan bukan "". |
| (Logika Parser) | security_result.description |
Disetel ke "Keanggotaan grup diubah" jika operationName adalah "Tambahkan anggota ke grup" dan hasilnya adalah "berhasil". |
| (Logika Parser) | security_result.priority |
Ditetapkan ke "MEDIUM_PRIORITY" jika properties.riskLevelDuringSignIn adalah "medium". |
| (Logika Parser) | security_result.summary |
Ditetapkan ke "Login berhasil" jika resultType adalah 0. |
| (Logika Parser) | security_result.summary |
Ditetapkan ke "Terjadi login gagal" jika resultType bukan 0 dan bukan "". |
| (Logika Parser) | security_result.summary |
Ditetapkan ke properties.activityDisplayName jika ada. |
| (Logika Parser) | security_result.severity |
Setel ke INFORMATIONAL jika levelnya adalah "Information", "Informational", "0", atau "4". Setel ke SEDANG jika levelnya adalah "Peringatan", "1", atau "3". Disetel ke ERROR jika levelnya adalah "Error" atau "2". Disetel ke CRITICAL jika levelnya adalah "Critical". |
| (Logika Parser) | security_result.severity |
Ditetapkan ke ERROR jika resultType bukan 0 dan bukan "". |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.