Mengungkap Titik Buta Kepatuhan M365 dengan Microsoft Graph
By Mirko Peters ·
Selamat datang kembali di podcast dan blog teknis pendamping kami! Jika Anda pernah mempercayai dasbor kepatuhan Microsoft 365 bawaan dan menganggap semuanya sudah tercatat sepenuhnya, Anda mungkin sedang berada dalam rasa aman yang semu. Dasbor kepatuhan bawaan dirancang sebagai ringkasan, bukan gambaran utuh…
Automatically translated with AI from the original post. Read the English original
Selamat datang kembali di podcast dan blog teknis pendamping kami! Jika Anda pernah mempercayai dasbor kepatuhan Microsoft 365 bawaan dan menganggap semuanya sudah tercatat sepenuhnya, Anda mungkin sedang berada dalam rasa aman yang semu. Dasbor kepatuhan bawaan memang dirancang sebagai ringkasan, bukan kebenaran mutlak. Sinyal-sinyal kritis, seperti temuan Data Loss Prevention (DLP), tindakan eDiscovery, dan alert keamanan yang mendasarinya, sering kali berada di balik endpoint Microsoft Graph yang memerlukan izin terpisah, parameter kueri lanjutan, dan penggabungan data yang tepat. Dalam pembahasan mendalam ini, kami akan mengulas mengapa laporan bawaan Anda melewatkan informasi penting, memetakan endpoint Graph yang perlu Anda kueri, dan menunjukkan cara mengalirkan bukti mentah tersebut langsung ke Microsoft Purview untuk pelaporan yang jelas dan dapat dipertanggungjawabkan. Untuk mendengarkan diskusi lengkap kami tentang topik ini, jangan lewatkan episode podcast terkait: Temukan Data Kepatuhan Microsoft 365 yang Hilang dengan Graph.
Ikhtisar
Dasbor kepatuhan bawaan adalah ringkasan, bukan kebenaran utuh. Sinyal kritis (temuan DLP, tindakan eDiscovery, alert keamanan) sering kali berada di balik endpoint Graph dengan izin terpisah. Kami memetakan API, cakupan, dan pola skrip yang tepat untuk mengekstrak bukti dengan fidelitas penuh, lalu memusatkannya di Purview untuk pelaporan yang jelas dan dapat dipertanggungjawabkan.
Siapa yang Terbantu
Pemilik Kepatuhan/Legal/Risiko yang membutuhkan bukti siap audit
Admin M365/Entra yang membangun pelaporan dan otomatisasi
Tim keamanan yang mengorelasikan telemetri DLP, eDiscovery, dan alert
Titik Buta (mengapa dasbor bawaan melewatkan informasi)
Agregasi & keterlambatan: Ringkasan UI menghilangkan detail insiden bertingkat dan aktivitas terbaru
Celah cakupan: Tindakan eDiscovery dan temuan DLP mungkin berada di luar ekspor standar
Izin terpisah: Endpoint /security dan /compliance memerlukan cakupan yang berbeda
Tanpa penggabungan data: Dasbor jarang mengorelasikan insiden dengan pengguna/custodian/langkah kasus
Endpoint Graph Bernilai Tinggi (daftar siap salin)
Alert keamanan (cakupan luas)
Endpoint:
/security/alertsatau/security/alerts_v2Izin aplikasi (contoh):
SecurityEvents.Read.All(atau Alerts.Read.All pada model yang lebih baru)Digunakan untuk: Linimasa alert, tingkat keparahan, status, penugasan
Kebijakan & aktivitas DLP (kehilangan data)
Endpoint (bergantung pada ketersediaan di penyewa):
/security/dataLossPreventionPolicies(inventaris kebijakan)/security/dlpIncidentsatau endpoint insiden DLP lanjutan di namespace security (bergantung pada penyewa)
Izin aplikasi:
SecurityEvents.Read.All(dan/atau cakupan baca DLP tertentu jika tersedia)Digunakan untuk: Temuan, lokasi (Exchange/SharePoint/Teams), disposisi
eDiscovery (kasus & tindakan)
/compliance/ediscovery/casesJalur turunan:
/custodians,/searches,/reviewSets,/noncustodialDataSources,/operationsIzin aplikasi:
eDiscovery.Read.All(dan tulis jika mengelola kasus)Digunakan untuk: Status kasus, hold, custodian, ekspor, tindakan reviewer
Audit & konteks sign-in (bukti pendukung)
/auditLogs/directoryAudits,/auditLogs/signInsIzin aplikasi:
AuditLog.Read.All,Directory.Read.AllDigunakan untuk: Siapa mengubah apa dan kapan, konteks sesi
Tips: Banyak payload kepatuhan bersifat sangat bertingkat. Rencanakan untuk menggunakan
$expand, melakukan paging melalui@odata.nextLink, dan menggabungkan dengan/users/{id}untuk nama tampilan dan departemen.
Autentikasi & Izin (jalur tanpa repot)
Gunakan izin Application (service principal) untuk tugas tanpa pengawasan
Daftarkan aplikasi terpisah untuk keamanan dan Graph inti jika organisasi Anda mewajibkan pemisahan hak istimewa
Setujui hanya cakupan dengan hak akses minimum; simpan secret/sertifikat di Key Vault
Terapkan backoff eksponensial untuk 429/503 dan catat
x-ms-request-iddi log
Pola Skrip (PowerShell atau Python)
Pilih & perluas: minta hanya bidang yang dibutuhkan,
$select=…,$expand=…untuk entitas bertingkatFilter & batasi waktu:
$filter=createdDateTime ge {ISO8601}untuk deltaPaginasi: lakukan perulangan pada
@odata.nextLink; jangan pernah berasumsi hasil hanya ada di satu halamanNormalisasi: petakan ID pengguna/objek ke nama dan departemen di awal agar output mudah dibaca
Gabungkan untuk konteks: perkaya insiden dengan metadata pengguna, situs, tim, atau kasus sebelum diekspor
Mengintegrasikannya ke Purview (ubah data menjadi keputusan)
Standarkan output: CSV/JSON dengan nama field yang konsisten (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)
Ingest: simpan file di lokasi penyimpanan yang aman dan dapat dibaca Purview (misalnya ADLS Gen2)
Beri tag & label: terapkan label sensitivitas atau tag kustom (misalnya “DLP-PII-High”) untuk perutean
Dasbor: Purview (atau Power BI di atas data Purview) untuk tren, pemilik, dan aging SLA
Otomatisasi: aturan untuk memberi tahu pemilik kasus saat terjadi pengulangan atau eskalasi; ringkasan PDF mingguan
Pilot 30 Menit (langkah demi langkah)
0–10 menit: Registrasi aplikasi +
SecurityEvents.Read.All/eDiscovery.Read.All; buat secret/sertifikat10–20 menit: Buat skrip untuk satu endpoint (alerts atau cases) dengan paging +
$filteruntuk 7 hari terakhir20–30 menit: Perkaya dengan
/users, ekspor ke CSV, simpan ke jalur ADLS, lalu visualisasikan grafik dasar
KPI yang Membuktikan Nilai
% insiden yang sudah terisi pemilik & disposisi
Rata-rata waktu dari insiden → kasus (atau peninjau)
Akun/lokasi pelanggar berulang per 30 hari
Selisih dengan jumlah di dasbor OOTB (penutupan celah)
Waktu siklus audit (jam persiapan bukti yang dihemat)
Kesalahan Umum (dan solusinya)
Hasil kosong → cakupan (scope) yang salah atau menggunakan Delegated padahal Application yang dibutuhkan
Detail tidak lengkap → lupa
$expand/ koleksi bertingkat tidak diuraiData parsial → tanpa paginasi; hanya halaman pertama yang tertangkap
Ketidakcocokan nama → tidak ada penggabungan pengayaan dengan
/usersatau data HRDasbor usang → tidak ada jadwal eksekusi; tambahkan job dan peringatan saat terjadi kegagalan
Kemenangan Cepat Minggu Ini
Ambil 7 hari terakhir dari
/security/alertsdan bandingkan jumlahnya dengan portalEkspor kasus eDiscovery yang masih terbuka + custodian; bagikan kepada tim Legal untuk validasi
Jalankan pemindaian insiden DLP dan beri tag pada pengulangan; buka tindak lanjut di Purview
Jadwalkan paket bukti mingguan (CSV + PDF) ke kotak surat kepatuhan
Pertanyaan Umum
Apakah saya harus menjadi developer? Tidak—PowerShell atau skrip Python singkat sudah cukup.
Mengapa perlu izin aplikasi? Sebagian besar endpoint /security dan /compliance memerlukan akses tanpa antarmuka pengguna (headless) dengan tingkat kepercayaan tinggi.
Bisakah saya tetap menggunakan PowerShell? Bisa—gunakan Microsoft Graph PowerShell SDK dan tangani
$top,$filter,$expand, serta paginasi.Apakah Purview wajib? Tidak secara ketat—tetapi Purview mengubah JSON mentah menjadi alur kerja dan dasbor yang dapat diaudit.
Kesimpulan
Dasbor merangkum; Graph menceritakan keseluruhan kisahnya. Gunakan endpoint yang tepat, perbaiki autentikasi, lakukan paginasi dan expand, lalu pusatkan di Purview. Anda akan beralih dari kepatuhan sekadar centang kotak menuju visibilitas yang terbukti dan real-time—tanpa tenggelam dalam ekspor manual. Untuk diskusi mendalam dan tips dari para ahli tentang cara mengatasi titik buta ini, dengarkan episode podcast kami Find Missing Microsoft 365 Compliance Data with Graph. Terus perbaiki skrip Anda, amankan izin aplikasi Anda, dan mulailah menampilkan data yang selama ini tersembunyi dari dasbor Anda!