Untuk Developer · 10 menit baca
Keamanan dan Kepatuhan
Isi artikel · 12 bagian
Posisi dokumen
Dokumen ini menjelaskan kontrol keamanan dan kepatuhan yang relevan bagi developer, partner, dan auditor teknis. Isinya merangkum dokumen keamanan internal repository, audit frontend maubisa.id, dan praktik arsitektur ekosistem.
Dokumen ini tidak menyatakan Maubisa sudah memiliki sertifikasi ISO 27001, SOC 2, PCI DSS, atau sertifikasi lain kecuali ada dokumen resmi yang menyatakan demikian. Untuk beberapa framework, posisi yang tepat adalah pemetaan kontrol, arah kesiapan, atau sebagian terpenuhi.
Gunakan bahasa yang akurat saat berbicara dengan partner: "dipetakan ke", "selaras dengan", atau "mendukung kesiapan", bukan "tersertifikasi", kecuali sertifikasinya benar-benar sudah ada.
Prinsip keamanan
Maubisa memakai pendekatan berlapis. Browser publik dianggap tidak tepercaya, CMS dianggap semitepercaya dengan role terbatas, pembayaran dipusatkan, dan edge AWS (CloudFront dan AWS WAF) menjadi lapisan keamanan dan performa di depan server aplikasi.
| Lapisan | Kontrol utama |
|---|---|
| Edge | TLS, HSTS, CSP dan CORS per domain, AWS WAF dengan aturan terkelola dan pembatasan laju (rate limit), CAPTCHA pada penarikan dana bila diaktifkan, serta cache yang aman. |
| Jaringan dan data | Server aplikasi hanya menerima koneksi HTTPS dari jaringan CloudFront. Database dan cache berada di jaringan privat. Data terenkripsi saat disimpan. File privat hanya lewat tautan bertanda tangan. |
| Aplikasi | Validasi input, Turnstile server-side fail-closed, sanitasi HTML CMS, error aman, dan minimisasi data. |
| CMS | Role terbatas, token read-only untuk frontend, audit operasional, dan pemisahan token admin. |
| Identitas | Pusat Akun, SSO, cookie aman, dan pengelolaan sesi lintas subdomain. |
| Pembayaran | Harga server-side, webhook tervalidasi, idempotensi, pemeriksaan amount, dan audit transaksi. |
| CI dan kode | Dependency scanning, SAST, review kode, dan pencegahan secret masuk repository. |
| Operasional | Log audit aktivitas AWS dan log WAF dicatat, error aplikasi dipantau (Sentry), kesehatan infrastruktur dan server dipantau (Datadog), database memiliki backup otomatis harian, dan vendor dikelola lewat daftar subprosesor. |
Kontrol aplikasi yang sudah menjadi pola
Pada Situs Utama, endpoint form publik menerapkan allowlist form, batas body, batas jumlah field, batas panjang teks, validasi file, Turnstile server-side, rate limit aplikasi, dan log tanpa data pribadi. Jika Turnstile gagal di produksi, form ditolak.
Konten HTML dari CMS disanitasi server-side dengan DOMPurify sebelum dirender. Sanitasi membuang script, handler on*, URL berbahaya, dan iframe, sambil mempertahankan elemen aman yang diperlukan untuk konten.
Email acara disusun dan dikirim server-side oleh layanan notifikasi Pusat Akun (hub) lewat SMTP Gmail, bukan oleh Situs Utama. Nilai pengguna di-escape dan pengirim ditentukan dari konfigurasi server. Undangan kalender dibangun dari data acara di server, bukan dari input browser.
Pengiriman notifikasi email lintas layanan (transaksional, keamanan, dan lifecycle langganan) dikonsolidasikan lewat satu Notification Service hub di Pusat Akun (ADR-013). Layanan lain memanggil hub ini alih-alih mengelola SMTP sendiri-sendiri, sehingga preferensi notifikasi, suppress-list, dan deduplikasi dapat ditegakkan secara konsisten di satu tempat, selaras dengan prinsip minimisasi data UU PDP.
Lapisan keamanan di AWS
Sejak migrasi ke AWS, domain aplikasi utama masuk lewat satu pintu depan yang sama. Penjelasan berikut berada di tingkat konsep. Detail konfigurasi tidak dipublikasikan.
| Lapisan | Cara kerjanya |
|---|---|
| DNS | Zona maubisa.id dikelola di Route 53. Domain aplikasi utama diarahkan ke CloudFront, kecuali halaman status yang berjalan di Cloudflare. |
| TLS dan header | CloudFront mengakhiri koneksi HTTPS dengan TLS 1.2 atau lebih baru. HSTS aktif. CSP dan CORS ditentukan per domain oleh fungsi di edge, sehingga domain yang berbeda mendapat kebijakan yang berbeda. |
| AWS WAF | Filter di depan origin. Aturan terkelola menyaring pola serangan umum seperti injeksi SQL, XSS, input berbahaya yang dikenal, dan alamat IP berreputasi buruk. Pembatasan laju dipasang per jenis endpoint, misalnya login, checkout, dan penarikan dana. Penarikan dana juga dapat dilindungi CAPTCHA. |
| Origin terkunci | Firewall server aplikasi hanya membuka koneksi HTTPS dari jaringan CloudFront, dan CloudFront memakai HTTPS saat menghubungi origin. |
| Jaringan privat | Database (RDS) dan cache (Valkey) berada di subnet privat tanpa rute ke internet. Keduanya hanya dapat dijangkau dari server aplikasi. |
| Enkripsi | Database, disk, cache, dan penyimpanan objek terenkripsi saat disimpan. Penyimpanan objek (S3) hanya dapat dibaca lewat CloudFront. |
| File privat | Dokumen di jalur /portal dan /private hanya dilayani untuk tautan bertanda tangan HMAC dengan waktu kedaluwarsa. Tautan salah atau kedaluwarsa dijawab 403. |
Asisten MinBi berjalan di dalam AWS: pertanyaan diterima situs utama dan jawabannya disusun Amazon Bedrock di Jakarta. Beberapa komponen tetap berada di luar AWS: Turnstile (anti-bot), Worker Cloudflare untuk halaman status dan penjadwal pengingat, Cloudflare Stream untuk video pelajaran MBG+, layanan AI Cloudflare untuk alat bantu menulis dan cadangan MinBi, Sentry dan Datadog untuk pemantauan, serta Midtrans untuk pembayaran.
Lapisan AWS melengkapi, bukan menggantikan, kontrol aplikasi. Validasi input, sanitasi HTML, verifikasi webhook, dan pemeriksaan harga di server tetap wajib di setiap produk.
Pemetaan ISO dan SOC, tanpa overclaim
Audit memetakan beberapa kontrol kode ke ISO 27001 Annex A dan SOC 2 Trust Services Criteria. Pemetaan ini membantu persiapan audit, tetapi bukan bukti sertifikasi.
| Kontrol | Contoh implementasi | Status teknis |
|---|---|---|
| Input validation | Allowlist form, batas payload, validasi file. | Kuat di web utama. |
| Output encoding dan sanitasi | DOMPurify untuk HTML CMS. | Diterapkan di titik render CMS. |
| Anti-bot | Turnstile fail-closed. | Diterapkan untuk form publik. |
| Secret management | Hanya PUBLIC_* ke browser, token read-only. | Kuat di kode, perlu disiplin operasional. |
| Security headers | Middleware aplikasi dan fungsi edge CloudFront. | Aktif, tetapi roadmap CSP tetap ada. |
| Dependency dan SAST | Dependabot, audit, CodeQL sesuai repository audit. | Mendukung kesiapan teknis. |
| Logging privasi | Log error tanpa isi data pribadi. | Diterapkan di endpoint form. |
| Retensi dan penghapusan | Didokumentasikan di kebijakan. | Perlu bukti eksekusi operasional. |
| Vendor management | Subprosesor ditampilkan. | Perlu DPA dan review formal sesuai ruang lingkup. |
UU PDP dan privasi
Maubisa mengacu pada UU 27/2022 tentang Pelindungan Data Pribadi dan aturan PSE Indonesia. Praktik yang relevan mencakup minimisasi data, consent form, kebijakan privasi, retensi, hak akses, koreksi, penghapusan, dan pemberitahuan insiden sesuai ketentuan yang berlaku.
Data pribadi dari form publik, seperti nama, email, WhatsApp, instansi, lamaran, atau pendaftaran acara, harus diproses sesuai tujuan yang jelas. Data tidak boleh masuk log dalam bentuk terbaca dan akses Directus harus dibatasi berdasarkan kebutuhan kerja.
Lokasi data
Data utama ekosistem disimpan di AWS Jakarta (ap-southeast-3). Pusat Akun menyimpan identitas dan tagihan di database terkelola di Jakarta, dan media serta dokumen disimpan di penyimpanan objek di Jakarta.
Dokumentasi ini tidak menyatakan bahwa seluruh data tidak pernah keluar dari Indonesia. Beberapa komponen melibatkan layanan di luar Indonesia:
- CloudFront adalah jaringan edge global, sehingga trafik dan cache dapat diproses di titik edge di berbagai negara,
- Midtrans memproses pembayaran dan terhubung dengan jaringan pembayaran global,
- Sentry menerima laporan error di Frankfurt (Uni Eropa), dikonfigurasi tanpa isi formulir dan tanpa data pengguna,
- Cloudflare dipakai untuk Turnstile, Worker, Stream (video pelajaran), dan layanan AI untuk alat bantu menulis serta cadangan asisten MinBi saat Amazon Bedrock bermasalah,
- Datadog menerima metrik operasional, daftar proses dan paket server, serta metadata infrastruktur di Amerika Serikat (US1), tanpa log, tanpa isi permintaan, dan tanpa data pribadi pengguna,
- analitik dan pemasaran opsional (Google Analytics 4 dan Tag Manager, Google Ads, Microsoft Clarity) hanya aktif setelah persetujuan,
- Google Workspace dan Google Meet dipakai untuk email notifikasi internal dan sesi bimbingan.
Subprosesor
Subprosesor adalah pihak ketiga yang dapat memproses data pribadi atas nama Maubisa. Daftar resmi dipublikasikan di Pusat Kepercayaan situs utama. Ringkasan berikut menjelaskan peran tiap subprosesor dalam arsitektur saat ini.
| Subprosesor | Peran | Lokasi |
|---|---|---|
| Amazon Web Services (AWS) | Hosting aplikasi, database terkelola, penyimpanan berkas dan media, CDN, WAF, dan DNS. | Jakarta, Indonesia |
| Amazon Bedrock (AWS) | Model AI asisten MinBi. Email, nomor telepon, dan NIK disamarkan sebelum dikirim, dan isi percakapan tidak disimpan. | Jakarta, Indonesia |
| Cloudflare | Verifikasi anti-bot (Turnstile), Worker untuk halaman status dan penjadwal pengingat, dan Stream untuk video pelajaran. | Jaringan global |
| Cloudflare Workers AI, AI Search, dan Vectorize | Alat bantu menulis (opsional) dan cadangan asisten MinBi. Teks diredaksi dari data pribadi sebelum dikirim. | Jaringan global |
| Sentry | Pemantauan error aplikasi, tanpa isi formulir dan tanpa data pengguna. | Frankfurt, Uni Eropa |
| Datadog | Pemantauan infrastruktur dan kinerja situs: Memantau kesehatan, kinerja, dan keamanan infrastruktur cloud dan server (server, container aplikasi, basis data, jaringan tepi, firewall aplikasi web) agar gangguan, kerentanan, dan ancaman cepat terdeteksi; memindai kode sumber di GitHub untuk dependensi rentan dan rahasia yang ter-commit; serta mengukur kecepatan dan kesalahan halaman maubisa.id di peramban pengunjung yang menyetujui cookie Analitik (Real User Monitoring). Data: Dari server: metrik operasional host, container, dan layanan AWS (mis. CPU, memori, disk, jaringan, jumlah token AI, serta jumlah permintaan, error, dan latensi per endpoint), daftar proses dan paket perangkat lunak server, peristiwa keamanan runtime server (proses yang dijalankan beserta argumen yang disamarkan, perubahan berkas sistem, dan aktivitas container), hasil pemeriksaan konfigurasi host dan Docker, serta metadata infrastruktur (nama, ID, tag, hostname, dan alamat IP server) dari wilayah Jakarta dan us-east-1; tanpa log, tanpa isi permintaan, dan tanpa data pribadi pengguna. Dari GitHub: kode sumber repositori Maubisa beserta metadata commit (akses baca lewat GitHub App) untuk pemindaian dependensi, kode, rahasia, dan konfigurasi infrastruktur; tanpa data pengguna. Dari peramban, hanya setelah kamu menyetujui kategori Analitik: alamat halaman tanpa query string, waktu muat dan Core Web Vitals, klik pada tombol dan tautan (isi yang kamu ketik disamarkan), error JavaScript, berkas yang dimuat halaman, jenis peramban dan perangkat, alamat IP yang dipakai untuk perkiraan lokasi lalu tidak disimpan, serta pengenal sesi acak (cookie _dd_s_v2); tanpa rekaman sesi. Akses baca-saja ke akun AWS dan Datadog Agent di server produksi sejak 12 Oktober 2026; argumen perintah yang memuat rahasia disamarkan, dan log, trace, isi permintaan, header, cookie, serta variabel lingkungan tidak dikirim. Pemantauan keamanan runtime (Workload Protection) aktif sejak 12 Oktober 2026. Pemindaian kode sumber (Code Security) aktif sejak 12 Oktober 2026. Real User Monitoring berjalan sejak 12 Oktober 2026, hanya dimuat setelah kamu menyetujui kategori Analitik, dan berhenti saat persetujuan dicabut lewat Pengaturan Cookie. | Amerika Serikat (US1) |
| Google Analytics 4 dan Tag Manager | Analitik situs, dengan Consent Mode (opsional). | Lintas negara |
| Google Ads | Pengukuran konversi dan pemasaran ulang, hanya setelah persetujuan (opsional). | Lintas negara |
| Microsoft Clarity | Heatmap dan perekaman sesi anonim, hanya setelah persetujuan (opsional). | Lintas negara |
| Google Workspace | Email notifikasi internal. | Lintas negara |
| Google Meet | Sesi bimbingan virtual. Perekaman hanya atas persetujuan dan disimpan maksimal 90 hari. | Lintas negara |
| Midtrans | Pemrosesan pembayaran melalui Pusat Akun. | Indonesia dan jaringan pembayaran global |
Directus dan Coolify dijalankan sendiri di infrastruktur Maubisa, jadi keduanya bukan subprosesor.
Untuk audit formal, daftar ini perlu dilengkapi dengan kontrak, DPA, lokasi pemrosesan, kontak vendor, dan hasil review risiko vendor sesuai kebutuhan organisasi.
Tanggung jawab developer dan partner
Developer dan partner yang mengintegrasikan produk baru harus mengikuti aturan berikut:
- Gunakan Pusat Akun untuk identitas dan pembayaran.
- Jangan membuat sumber harga final di frontend.
- Validasi webhook, order, amount, dan status di server.
- Buat provisioning idempoten.
- Sanitasi konten HTML dari CMS.
- Gunakan token dengan privilege minimum.
- Jangan menyimpan secret di CMS, frontend, atau repository.
- Jangan menaruh data privat di jalur publik CDN. Gunakan tautan bertanda tangan untuk file privat.
- Log error secukupnya tanpa data pribadi.
- Dokumentasikan data apa yang diproses, tujuan, retensi, dan subprosesor yang dipakai.
Pelaporan kerentanan
Jika Anda menemukan kerentanan keamanan, laporkan melalui jalur privat. Jangan membuka issue publik untuk laporan keamanan.
| Kanal | Alamat |
|---|---|
| Keamanan | security@maubisa.id |
| Cadangan privasi | privasi@maubisa.id |
Sertakan URL, langkah reproduksi, payload, dampak, log yang relevan, dan tangkapan layar jika ada. Dokumentasi keamanan menyebut laporan biasanya dikonfirmasi dalam 3 hari kerja.
Batas klaim yang aman
Gunakan pernyataan yang tidak berlebihan:
| Aman dikatakan | Hindari mengatakan |
|---|---|
| "Kontrol teknis dipetakan ke ISO 27001 dan SOC 2." | "Maubisa sudah ISO 27001 atau SOC 2 certified." |
| "Pembayaran diproses melalui Midtrans." | "Semua sistem Maubisa PCI certified." |
| "Data utama disimpan di AWS Jakarta." | "Seluruh data tidak pernah keluar Indonesia dalam kondisi apa pun." |
| "CloudFront dan AWS WAF menyediakan edge security dan CDN." | "AWS WAF menggantikan semua kontrol aplikasi." |
| "Situs melakukan sanitasi HTML CMS." | "XSS mustahil terjadi." |