Mengumpulkan log Konteks Microsoft Azure AD
Dokumen ini menjelaskan cara mengumpulkan log Microsoft Azure Active Directory (AD) dengan menyiapkan feed Google Security Operations.
Azure Active Directory (AZURE_AD
) kini disebut Microsoft Entra ID. Log audit Azure AD
(AZURE_AD_AUDIT
) kini menjadi log audit Microsoft Entra ID.
Untuk mengetahui informasi selengkapnya, lihat Penyerapan data ke Google Security Operations.
Label penyerapan mengidentifikasi parser yang menormalisasi data log mentah ke format UDM terstruktur.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Langganan Azure yang dapat Anda gunakan untuk login
- Peran administrator global atau administrator Azure AD
- Azure AD (tenant) di Azure
Cara mengonfigurasi Azure AD
- Login ke portal Azure.
- Buka Beranda > Pendaftaran aplikasi, pilih aplikasi yang terdaftar atau daftarkan aplikasi jika Anda belum membuat aplikasi.
- Untuk mendaftarkan aplikasi, di bagian App registration, klik New registration.
- Di kolom Name, berikan nama tampilan untuk aplikasi Anda.
- Di bagian Jenis akun yang didukung, pilih opsi yang diperlukan untuk menentukan siapa yang dapat menggunakan aplikasi atau mengakses API.
- Klik Daftar.
- Buka halaman Ringkasan, lalu salin ID aplikasi (klien) dan ID direktori (tenant), yang diperlukan untuk mengonfigurasi feed Google Security Operations.
- Klik API permissions.
- Klik Add a permission, lalu pilih Microsoft Graph di panel baru.
- Klik Application permissions.
- Pilih izin AuditLog.Read.All, Directory.Read.All, dan SecurityEvents.Read.All. Pastikan izinnya adalah Izin aplikasi, bukan Izin yang didelegasikan.
- Klik Grant admin consent for default directory. Aplikasi diberi otorisasi untuk memanggil API jika aplikasi diberi izin oleh pengguna atau administrator sebagai bagian dari proses izin.
- Buka Setelan > Kelola.
- Klik Certificates and secrets.
- Klik New client secret. Di kolom Nilai, rahasia klien akan muncul.
- Salin nilai rahasia klien. Nilai ini hanya ditampilkan pada saat pembuatan dan diperlukan untuk pendaftaran aplikasi Azure dan untuk mengonfigurasi feed Google Security Operations.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed
- Hub Konten > Paket Konten
Menyiapkan feed dari Setelan SIEM > Feed
Untuk mengonfigurasi beberapa feed untuk berbagai jenis log dalam keluarga produk ini, lihat Mengonfigurasi feed menurut produk.
Untuk mengonfigurasi satu feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed; misalnya, Azure AD Context Logs.
- Pilih Third party API sebagai Source type.
- Pilih Azure AD Organizational Context sebagai Jenis log.
- Klik Berikutnya.
- Konfigurasikan parameter input wajib berikut:
- OAUTH client ID: Tentukan client ID yang Anda peroleh sebelumnya.
- Rahasia klien OAUTH: Tentukan rahasia klien yang Anda peroleh sebelumnya.
- Tenant ID: Tentukan tenant ID yang Anda peroleh sebelumnya.
- Klik Berikutnya, lalu klik Kirim.
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.
Menyiapkan feed dari Hub Konten
Tentukan nilai untuk kolom berikut:
- OAUTH client ID: Tentukan client ID yang Anda peroleh sebelumnya.
- Rahasia klien OAUTH: Tentukan rahasia klien yang Anda peroleh sebelumnya.
- Tenant ID: Tentukan tenant ID yang Anda peroleh sebelumnya.
Opsi lanjutan
- Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
- Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
- Namespace Aset: Namespace yang terkait dengan feed.
- Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
Referensi pemetaan kolom
Kode parser ini mengubah log berformat JSON mentah dari Azure Active Directory menjadi model data terpadu (UDM). Alat ini mengekstrak informasi pengguna dan pengelola, termasuk atribut, peran, hubungan, dan label, sekaligus menangani berbagai inkonsistensi data dan memperkaya output dengan kolom standar.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
businessPhones | user.phone_numbers | Dipetakan langsung dari kolom businessPhones dalam log mentah. Beberapa nomor telepon diekstrak dan dipetakan sebagai entri terpisah. |
city | user.personal_address.city | Dipetakan langsung dari kolom city dalam log mentah. |
companyName | user.company_name | Dipetakan langsung dari kolom companyName dalam log mentah. |
country | user.personal_address.country_or_region | Dipetakan langsung dari kolom country dalam log mentah. Jika country kosong, nilai akan diambil dari usageLocation . |
createdDateTime | user.attribute.creation_time | Dikonversi menjadi stempel waktu dari kolom createdDateTime di log mentah menggunakan format RFC 3339. |
department | user.department | Dipetakan langsung dari kolom department dalam log mentah. Beberapa departemen diekstrak dan dipetakan sebagai entri terpisah. |
displayName | user.user_display_name | Dipetakan langsung dari kolom displayName dalam log mentah. |
employeeId | user.employee_id | Dipetakan langsung dari kolom employeeId dalam log mentah. Jika employeeId kosong, nilai akan diambil dari extension_employeeNumber . |
employeeType | user.attribute.labels.value (kunci: employeeType) | Dipetakan langsung dari kolom employeeType dalam log mentah dan ditambahkan sebagai label dengan kunci employeeType . |
extension_employeeNumber | user.employee_id | Dipetakan ke user.employee_id jika employeeId kosong. |
extension_wfc_AccountType | event.idm.entity.entity.labels.value (kunci: wfc_AccountType) | Dipetakan langsung dari kolom extension_wfc_AccountType dalam log mentah dan ditambahkan sebagai label dengan kunci wfc_AccountType . |
extension_wfc_AccountingUnitName | event.idm.entity.entity.labels.value (kunci: extension_wfc_AccountingUnitName) | Dipetakan langsung dari kolom extension_wfc_AccountingUnitName dalam log mentah dan ditambahkan sebagai label dengan kunci extension_wfc_AccountingUnitName . |
extension_wfc_execDescription | event.idm.entity.entity.labels.value (kunci: extension_wfc_execDescription) | Dipetakan langsung dari kolom extension_wfc_execDescription dalam log mentah dan ditambahkan sebagai label dengan kunci extension_wfc_execDescription . |
extension_wfc_groupDescription | event.idm.entity.entity.labels.value (kunci: extension_wfc_groupDescription) | Dipetakan langsung dari kolom extension_wfc_groupDescription dalam log mentah dan ditambahkan sebagai label dengan kunci extension_wfc_groupDescription . |
extension_wfc_orgDescription | event.idm.entity.entity.labels.value (kunci: extension_wfc_orgDescription) | Dipetakan langsung dari kolom extension_wfc_orgDescription dalam log mentah dan ditambahkan sebagai label dengan kunci extension_wfc_orgDescription . |
givenName | user.first_name | Dipetakan langsung dari kolom givenName dalam log mentah. |
gopher-devices | event.idm.entity.relations | Setiap perangkat dalam array gopher-devices dipetakan ke entri relasi terpisah. deviceId dipetakan ke product_object_id , operatingSystem dan operatingSystemVersion digabungkan untuk membentuk platform_version , model dipetakan secara langsung, dan createdDateTime dikonversi menjadi stempel waktu dan dipetakan ke created_timestamp . Hubungan disetel ke OWNS dan arah disetel ke UNIDIRECTIONAL . |
gopher-groups | event.idm.entity.relations | Setiap grup dalam array gopher-groups dipetakan ke entri relasi terpisah. id dipetakan ke product_object_id , dan displayName dipetakan ke group_display_name . Hubungan disetel ke MEMBER dan arah disetel ke UNIDIRECTIONAL . |
gopher-manager.businessPhones | empmanager.phone_numbers | Dipetakan ke empmanager.phone_numbers jika manager kosong. |
gopher-manager.country | empmanager.personal_address.country_or_region | Dipetakan ke empmanager.personal_address.country_or_region jika manager kosong. Jika gopher-manager.country dan gopher-manager.usageLocation kosong, kolom akan dibiarkan kosong. |
gopher-manager.department | empmanager.department | Dipetakan ke empmanager.department jika manager kosong. |
gopher-manager.displayName | empmanager.user_display_name | Dipetakan ke empmanager.user_display_name jika manager kosong. |
gopher-manager.employeeId | empmanager.employee_id | Dipetakan ke empmanager.employee_id jika manager kosong dan gopher-manager.employeeId tidak kosong. |
gopher-manager.extension_employeeNumber | empmanager.employee_id | Dipetakan ke empmanager.employee_id jika manager dan gopher-manager.employeeId kosong, dan gopher-manager.extension_employeeNumber tidak kosong. |
gopher-manager.givenName | empmanager.first_name | Dipetakan ke empmanager.first_name jika manager kosong. |
gopher-manager.id | empmanager.product_object_id | Dipetakan ke empmanager.product_object_id jika manager kosong. |
gopher-manager.jobTitle | empmanager.title | Dipetakan ke empmanager.title jika manager kosong. |
gopher-manager.mail | empmanager.email_addresses | Dipetakan ke empmanager.email_addresses jika manager kosong. |
gopher-manager.onPremisesImmutableId | user.attribute.labels.value (key: gopher-manager onPremisesImmutableId) | Dipetakan sebagai label dengan kunci gopher-manager onPremisesImmutableId . |
gopher-manager.onPremisesSamAccountName | empmanager.userid | Dipetakan ke empmanager.userid jika manager kosong. |
gopher-manager.onPremisesSecurityIdentifier | empmanager.windows_sid | Dipetakan ke empmanager.windows_sid jika manager kosong. |
gopher-manager.proxyAddresses | empmanager.email_addresses, empmanager.group_identifiers | Jika manager kosong, setiap alamat dalam array gopher-manager.proxyAddresses dipetakan ke empmanager.email_addresses atau empmanager.group_identifiers berdasarkan apakah alamat tersebut diawali dengan "smtp" atau "SMTP". |
gopher-manager.refreshTokensValidFromDateTime | empmanager.attribute.labels.value (kunci: refreshTokensValidFromDateTime) | Dipetakan sebagai label dengan kunci refreshTokensValidFromDateTime jika manager kosong. |
gopher-manager.streetAddress | empmanager.personal_address.name | Dipetakan ke empmanager.personal_address.name jika manager kosong. |
gopher-manager.surname | empmanager.last_name | Dipetakan ke empmanager.last_name jika manager kosong. |
gopher-manager.usageLocation | user.attribute.labels.value (kunci: manager_src_usageLocation) | Dipetakan sebagai label dengan kunci manager_src_usageLocation . |
gopher-manager.userType | empmanager.attribute.roles.name | Dipetakan ke empmanager.attribute.roles.name jika manager kosong. |
id | user.product_object_id | Dipetakan langsung dari kolom id dalam log mentah. |
identitas | user.attribute.labels.value (key: signInType), user.attribute.labels.value (key: userPrincipalName) | signInType dipetakan sebagai label dengan kunci signInType . Jika signInType dan userPrincipalName tidak kosong, keduanya akan digabungkan dan dipetakan sebagai label dengan kunci userPrincipalName . |
jobTitle | user.title | Dipetakan langsung dari kolom jobTitle dalam log mentah. |
user.email_addresses | Dipetakan langsung dari kolom mail dalam log mentah. Jika mail dimulai dengan "svc-", user_role.type akan disetel ke SERVICE_ACCOUNT . |
|
mailNickname | user.attribute.labels.value (kunci: mailNickname) | Dipetakan langsung dari kolom mailNickname dalam log mentah dan ditambahkan sebagai label dengan kunci mailNickname . |
manager.businessPhones | empmanager.phone_numbers | Dipetakan ke empmanager.phone_numbers jika gopher-manager kosong. |
manager.city | empmanager.personal_address.city | Dipetakan ke empmanager.personal_address.city jika gopher-manager kosong. |
manager.companyName | empmanager.company_name | Dipetakan ke empmanager.company_name jika gopher-manager kosong. |
manager.country | empmanager.personal_address.country_or_region | Dipetakan ke empmanager.personal_address.country_or_region jika gopher-manager kosong. Jika manager.country dan manager.usageLocation kosong, kolom akan dibiarkan kosong. |
manager.department | empmanager.department | Dipetakan ke empmanager.department jika gopher-manager kosong. |
manager.displayName | empmanager.user_display_name | Dipetakan ke empmanager.user_display_name jika gopher-manager kosong. |
manager.employeeId | empmanager.employee_id | Dipetakan ke empmanager.employee_id jika gopher-manager kosong dan manager.employeeId tidak kosong. |
manager.extension_employeeNumber | empmanager.employee_id | Dipetakan ke empmanager.employee_id jika gopher-manager dan manager.employeeId kosong, dan manager.extension_employeeNumber tidak kosong. |
manager.givenName | empmanager.first_name | Dipetakan ke empmanager.first_name jika gopher-manager kosong. |
manager.id | empmanager.product_object_id | Dipetakan ke empmanager.product_object_id jika gopher-manager kosong. |
manager.jobTitle | empmanager.title | Dipetakan ke empmanager.title jika gopher-manager kosong. |
manager.mail | empmanager.email_addresses | Dipetakan ke empmanager.email_addresses jika gopher-manager kosong. |
manager.onPremisesSamAccountName | empmanager.userid | Dipetakan ke empmanager.userid jika gopher-manager kosong. |
manager.onPremisesSecurityIdentifier | empmanager.windows_sid | Dipetakan ke empmanager.windows_sid jika gopher-manager kosong. |
manager.proxyAddresses | empmanager.email_addresses, empmanager.group_identifiers | Jika gopher-manager kosong, setiap alamat dalam array manager.proxyAddresses dipetakan ke empmanager.email_addresses atau empmanager.group_identifiers berdasarkan apakah alamat tersebut diawali dengan "smtp" atau "SMTP". |
manager.refreshTokensValidFromDateTime | empmanager.attribute.labels.value (kunci: refreshTokensValidFromDateTime) | Dipetakan sebagai label dengan kunci refreshTokensValidFromDateTime jika gopher-manager kosong. |
manager.state | empmanager.personal_address.state | Dipetakan ke empmanager.personal_address.state jika gopher-manager kosong. |
manager.streetAddress | empmanager.personal_address.name | Dipetakan ke empmanager.personal_address.name jika gopher-manager kosong. |
manager.surname | empmanager.last_name | Dipetakan ke empmanager.last_name jika gopher-manager kosong. |
manager.usageLocation | user.attribute.labels.value (kunci: manager_src_usageLocation), empmanager.personal_address.country_or_region | Dipetakan sebagai label dengan kunci manager_src_usageLocation . Jika manager.country kosong, nilai juga dipetakan ke empmanager.personal_address.country_or_region . |
manager.userType | empmanager.attribute.roles.name | Dipetakan ke empmanager.attribute.roles.name jika gopher-manager kosong. |
onPremisesDistinguishedName | user.attribute.labels.value (key: onPremisesDistinguishedName), user.attribute.labels.value (key: onPremisesDistinguishedName-OU data) | Nama yang dibedakan sepenuhnya dipetakan sebagai label dengan kunci onPremisesDistinguishedName . Bagian OU dari nama yang dibedakan diekstrak dan dipetakan sebagai label dengan kunci onPremisesDistinguishedName-OU data . Jika bagian OU berisi "Admin", user_role.type ditetapkan ke ADMINISTRATOR . Jika berisi "Service Accounts", user_role.type disetel ke SERVICE_ACCOUNT . |
onPremisesDomainName | user.group_identifiers, user.attribute.labels.value (kunci: onPremisesDomainName) | Dipetakan langsung ke user.group_identifiers dan ditambahkan sebagai label dengan kunci onPremisesDomainName . |
onPremisesImmutableId | user.attribute.labels.value (key: onPremisesImmutableId) | Dipetakan langsung dari kolom onPremisesImmutableId dalam log mentah dan ditambahkan sebagai label dengan kunci onPremisesImmutableId . |
onPremisesSamAccountName | user.userid, user.attribute.labels.value (key: onPremisesSamAccountName) | Dipetakan ke user.userid jika sAMAccountName kosong. Juga ditambahkan sebagai label dengan kunci onPremisesSamAccountName . |
onPremisesSecurityIdentifier | user.windows_sid | Dipetakan langsung dari kolom onPremisesSecurityIdentifier dalam log mentah. |
proxyAddresses | user.email_addresses, user.group_identifiers | Setiap alamat dalam array proxyAddresses dipetakan ke user.email_addresses atau user.group_identifiers berdasarkan apakah alamat tersebut diawali dengan "smtp" atau "SMTP". Jika alamat dimulai dengan "smtp" atau "SMTP", awalan "smtp:" atau "SMTP:" akan dihapus dan alamat email yang tersisa akan diekstrak dan dipetakan ke user.email_addresses . |
refreshTokensValidFromDateTime | user.attribute.labels.value (kunci: refreshTokensValidFromDateTime) | Dipetakan langsung dari kolom refreshTokensValidFromDateTime dalam log mentah dan ditambahkan sebagai label dengan kunci refreshTokensValidFromDateTime . |
sAMAccountName | user.userid | Dipetakan langsung dari kolom sAMAccountName dalam log mentah. |
state | user.personal_address.state | Dipetakan langsung dari kolom state dalam log mentah. |
streetAddress | user.personal_address.name | Dipetakan langsung dari kolom streetAddress dalam log mentah. |
surname | user.last_name | Dipetakan langsung dari kolom surname dalam log mentah. |
usageLocation | user.personal_address.country_or_region | Jika country kosong, nilai akan dipetakan ke user.personal_address.country_or_region . |
userPrincipalName | user.email_addresses | Dipetakan langsung dari kolom userPrincipalName dalam log mentah. Jika userPrincipalName dimulai dengan "svc-", user_role.type akan disetel ke SERVICE_ACCOUNT . |
userType | user.attribute.roles.name | Dipetakan langsung dari kolom userType di log mentah dan ditambahkan ke user.attribute.roles.name . |
Logika Parser | Pemetaan UDM | Logika |
T/A | event.idm.entity.metadata.vendor_name | Tetapkan ke "Microsoft". |
T/A | event.idm.entity.metadata.product_name | Setel ke "Azure Active Directory". |
T/A | event.idm.entity.metadata.entity_type | Tetapkan ke "USER". |
T/A | event.idm.entity.metadata.collected_timestamp | Tetapkan ke kolom create_time dari log mentah. |
accountEnabled | user.user_authentication_status, user.attribute.labels.value (kunci: accountEnabled) | Jika accountEnabled benar, user.user_authentication_status disetel ke "AKTIF" dan label dengan kunci accountEnabled dan nilai "true" ditambahkan. Jika tidak, label dengan kunci accountEnabled dan nilai "false" akan ditambahkan. |
empmanager-src.accountEnabled | user.user_authentication_status, user.attribute.labels.value (kunci: accountEnabled) | Jika manager kosong dan empmanager-src.accountEnabled adalah "true", user.user_authentication_status disetel ke "ACTIVE" dan label dengan kunci accountEnabled dan nilai "true" ditambahkan. Jika tidak, label dengan kunci accountEnabled dan nilai "false" akan ditambahkan. |
onPremisesDistinguishedName | user_role.type | Jika bagian OU dari nama khusus berisi "Admin", user_role.type akan ditetapkan ke ADMINISTRATOR . Jika berisi "Service Accounts", user_role.type disetel ke SERVICE_ACCOUNT . |
userPrincipalName | user_role.type | Jika userPrincipalName dimulai dengan "svc-", user_role.type akan disetel ke SERVICE_ACCOUNT . |
empmanager-src.onPremisesDistinguishedName | manager_role.type | Jika gopher-manager kosong dan bagian OU dari nama khusus pengelola berisi "Pengguna", manager_role.type akan disetel ke ADMINISTRATOR . Jika berisi "Service Accounts", manager_role.type disetel ke SERVICE_ACCOUNT . |
empmanager-src.userPrincipalName | manager_role.type | Jika gopher-manager kosong dan empmanager-src.userPrincipalName dimulai dengan "svc-", manager_role.type akan disetel ke SERVICE_ACCOUNT . |
user_role.type | Jika mail dimulai dengan "svc-", user_role.type akan disetel ke SERVICE_ACCOUNT . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.