18

Panduan Tata Kelola & Hak Akses Peran Pengawasan

Updated: Nov 2026Oleh: SystemFundamental & Tata Kelola

πŸ›‘οΈ Panduan Tata Kelola & Hak Akses Peran Pengawasan (Read-Only Oversight)

BUMDes Bolulango β€’ Desa Bandungan, Kecamatan Bulango Utara, Kabupaten Bone Bolango Standar Kepatuhan: PP No. 11 Tahun 2021, Permendesa PDTT No. 3 Tahun 2021, dan SAK EP


1. Landasan Hukum & Prinsip Segregation of Duties (SoD)#

Berdasarkan Peraturan Pemerintah (PP) No. 11 Tahun 2021 (Pasal 56 s/d 61) dan Permendesa PDTT No. 3 Tahun 2021, struktur tata kelola Badan Usaha Milik Desa (BUMDes) memisahkan secara tegas dan mutlak antara Pelaksana Operasional (Direksi & Manajer Unit) dengan Pengawas Independen (Penasihat, Badan Permusyawaratan Desa, Dewan Pengawas, dan Lembaga Pengawas Eksternal).

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ MUSYAWARAH DESA (MUSDES / LPJ) β”‚
β”‚ Kedaulatan Tertinggi Masyarakat & Pemerintah Desa β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ β”‚
 β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ DIREKSI & PELAKSANA UNIT β”‚ β”‚ DEWAN PENGAWAS & AUDITOR β”‚
β”‚ (Eksekutif Operasional) β”‚ β”‚ (Pengawas Independen) β”‚
β”‚ β€’ Menjalankan usaha & pembukuan β”‚ β”‚ β€’ Memeriksa keabsahan kas β”‚
β”‚ β€’ Melakukan transaksi kas/bank β”‚ β”‚ β€’ Mengaudit buku besar COA β”‚
β”‚ β€’ Menerbitkan draf & posting jurnal β”‚ β”‚ β€’ Menguji bukti fisik 3-fotoβ”‚
β”‚ β€’ Wewenang: Create, Update, Delete β”‚ β”‚ β€’ Wewenang: Read-Only Penuh β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Pemisahan tugas ini mencegah terjadinya konflik kepentingan (Conflict of Interest) di mana pengawas tidak boleh memeriksa atau memverifikasi transaksi yang dibuat oleh dirinya sendiri (Four-Eyes Principle).


2. Klasifikasi 7 Peran Pengawasan Resmi (ROLES_PENGAWAS)#

Sistem ERP BUMDes Bolulango menetapkan 7 peran pengawasan resmi pada level Level 6 (L6):

Kode Peran (user_role)Kedudukan Hukum / JabatanCakupan Akses Baca (SELECT)Wewenang Mutasi Data (INSERT/UPDATE/DELETE)Pengecualian Khusus (Controlled Whitelist)
pengawasDewan Pengawas BUMDes / Ketua BPDSeluruh Unit (Konsolidasi Global)❌ Diblokir MutlakTanda tangan digital LPJ Musdes (PENGAWAS/KETUA_BPD), profil sendiri, log audit sendiri
pengawas_1Anggota Pengawas Internal 1Seluruh Unit (Konsolidasi Global)❌ Diblokir MutlakTanda tangan digital LPJ Musdes (PENGAWAS), profil sendiri, log audit sendiri
pengawas_2Anggota Pengawas Internal 2Seluruh Unit (Konsolidasi Global)❌ Diblokir MutlakTanda tangan digital LPJ Musdes (PENGAWAS), profil sendiri, log audit sendiri
kepala_desaKepala Desa / Penasihat Ex-OfficioSeluruh Unit (Konsolidasi Global)❌ Diblokir MutlakTanda tangan digital LPJ Musdes (KEPALA_DESA), profil sendiri, log audit sendiri
bendahara_desaBendahara Desa (Verifikator PADes)Seluruh Unit (Konsolidasi Global)❌ Diblokir MutlakProfil sendiri, log audit sendiri
pendamping_desaPendamping Desa / Kemendesa PDTTSeluruh Unit (Konsolidasi Global)❌ Diblokir MutlakProfil sendiri, log audit sendiri (Masa berlaku terbatas)
auditor_eksternalAuditor Eksternal (KAP / Inspektorat / BPKP)Seluruh Unit (Konsolidasi Global)❌ Diblokir MutlakProfil sendiri, log audit sendiri (Masa berlaku penugasan terbatas)

3. Arsitektur Pertahanan 3-Lapis (3-Layer Defense-in-Depth)#

Untuk menjamin agar hak Read-Only tidak dapat dibobol baik secara sengaja maupun tidak sengaja, ERP BUMDes Bolulango mengimplementasikan arsitektur keamanan 3 lapis:

[Permintaan Pengguna L6]
 β”‚
 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ LAPIS 1: Middleware & Sesi Auth (lib/auth.ts) β”‚
β”‚ β€’ Memvalidasi token sesi Supabase β”‚
β”‚ β€’ Mengecek kolom profiles.access_expires_at β”‚
β”‚ β€’ Jika kedaluwarsa -> Tolak akses & arahkan logout β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ LAPIS 2: Server Actions Guard (lib/auth-guard.ts) β”‚
β”‚ β€’ requireReadGuard(): Izinkan operasional & pengawas β”‚
β”‚ β€’ requireMutationGuard(): Blokir seluruh pengawas β”‚
β”‚ β€’ createAdminClient() terlindungi dari pengawas β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ LAPIS 3: PostgreSQL Database Engine (Migrasi 294 & 295)β”‚
β”‚ β€’ 651 Kebijakan AS RESTRICTIVE (oversight_ro_guard_*) β”‚
β”‚ β€’ Aktif di seluruh 217 tabel aplikasi ber-RLS β”‚
β”‚ β€’ Evaluasi AND PostgreSQL: Menutup celah OR-Bypass β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

A. Lapis 1 β€” Validasi Kedaluwarsa Akses (access_expires_at)

Akun pengawas eksternal (seperti Kantor Akuntan Publik, Inspektorat Kabupaten Bone Bolango, atau BPKP) dapat diberikan masa aktif terbatas pada kolom profiles.access_expires_at. Ketika tanggal batas penugasan terlampaui (access_expires_at < NOW()), fungsi requireAuth() dan database helper public.is_account_expired() secara otomatis menolak sesi pengguna.

Kolom access_expires_at dilindungi secara ketat oleh trigger database protect_profile_role_elevation sehingga hanya super_admin yang dapat menetapkan atau memperpanjang masa aktif.

B. Lapis 2 β€” Otorisasi Server Actions (requireReadGuard vs requireMutationGuard)

  1. Fungsi Baca / Laporan / Ekspor: Menggunakan await requireReadGuard() yang mengizinkan peran operasional dan ketujuh peran pengawasan untuk membaca data, memeriksa buku besar, mencetak bukti transaksi, dan mengekspor laporan keuangan.
  2. Fungsi Mutasi Data: Menggunakan await requireMutationGuard() yang secara eksplisit memeriksa isReadOnlyRole(user.role). Jika terdeteksi peran pengawasan, aksi ditolak dengan pesan kesalahan baku: "Akses ditolak: Akun pengawas bersifat baca-saja (read-only)."
  3. Pembersihan DEFAULT_ADMIN_ROLES: Peran pengawasan telah dikeluarkan dari daftar peran admin bawaan sehingga pemanggilan requireRoleGuard() tanpa argumen tidak lagi memberikan izin mutasi kepada pengawas.

C. Lapis 3 β€” Row-Level Security RESTRICTIVE PostgreSQL (Migrasi SQL 294 & 295)

Di tingkat basis data, PostgreSQL mengevaluasi kebijakan bertipe PERMISSIVE dengan operator logis OR. Apabila sebuah tabel memiliki kebijakan warisan yang longgar, kebijakan AS RESTRICTIVE bertindak sebagai gerbang penyaring mutlak dengan operator logis AND:

sql
-- Contoh kebijakan RESTRICTIVE di PostgreSQL
CREATE POLICY oversight_ro_guard_insert ON public.tabel_aplikasi
 AS RESTRICTIVE
 FOR INSERT
 TO authenticated
 WITH CHECK (NOT public.is_oversight_role());

Dengan 3 kebijakan AS RESTRICTIVE (oversight_ro_guard_insert, oversight_ro_guard_update, oversight_ro_guard_delete) yang terpasang pada seluruh 217 tabel, tidak ada satu pun operasi SQL INSERT, UPDATE, atau DELETE yang dapat dieksekusi oleh akun pengawas.


4. Tiga Pengecualian Tulis Terkontrol (Controlled Write Whitelist)#

Demi mendukung siklus tata kelola legal yang sah tanpa mengorbankan integritas data finansial, sistem menyediakan 3 pengecualian terkontrol:

  1. Pengesahan Tanda Tangan LPJ Musdes (lpj_musdes_signatories):
  • kepala_desa: Berhak memperbarui kolom tanda tangan digital dan status pengesahan untuk baris dengan peran penandatangan KEPALA_DESA.
  • pengawas, pengawas_1, pengawas_2: Berhak memperbarui kolom tanda tangan digital untuk baris dengan peran penandatangan PENGAWAS atau KETUA_BPD.
  1. Pembaruan Profil Pribadi (profiles):
  • Seluruh pengawas berhak memperbarui biodata pribadi (nama lengkap, nomor telepon, foto profil) pada baris akun miliknya sendiri (id = auth.uid()). Upaya mengubah role, assigned_unit_id, atau access_expires_at otomatis digagalkan oleh trigger database.
  1. Perekaman Jejak Audit Mandiri (audit_logs):
  • Akun pengawas berhak mencatatkan riwayat aktivitas login, navigasi, dan ekspor dokumen miliknya sendiri (actor_id = auth.uid()) ke tabel audit_logs.

5. Prosedur Operasional Pengawasan Lapangan#

A. Membuka Dasbor Audit Forensik

  1. Masuk ke ERP menggunakan kredensial akun pengawas.
  2. Di bilah menu samping (Sidebar), klik Audit & Pengawasan β†’ Log Audit & Forensik (/dashboard/pengaturan).
  3. Pengawas dapat meninjau latensi koneksi basis data, total record jejak audit, aksi kritis berisiko tinggi, serta memfilter riwayat mutasi berdasarkan modul, aktor, dan tanggal.

B. Meninjau Manajemen Akun Pengguna

  1. Buka menu Pengguna (/dashboard/pengguna).
  2. Banner "Mode Pengawasan (Read-Only) Aktif" akan muncul di bagian atas.
  3. Seluruh tombol penambahan pengguna baru, pengubahan peran, penghapusan akun, dan reset kata sandi dinonaktifkan secara otomatis.

C. Menelaah Laporan Keuangan & Menandatangani LPJ Musdes

  1. Buka menu Laporan LPJ Tahunan (/dashboard/keuangan/lpj).
  2. Telaah kepatuhan 7 laporan keuangan SAK EP, keseimbangan neraca konsolidasi, dan alokasi Sisa Hasil Usaha (SHU).
  3. Pada tab Sidang Musdes & Berita Acara, bubuhkan tanda tangan digital resmi untuk penerbitan dokumen Berita Acara Musyawarah Desa yang sah.

6. Sanksi & Penegakan Integritas#

  1. Segala upaya rekayasa sosial, manipulasi parameter kueri URL, atau injeksi API untuk mengubah data pembukuan BUMDes Bolulango akan terekam secara otomatis di audit_logs dengan tingkat keparahan CRITICAL.
  2. Akun pengawas yang masa penugasannya telah selesai akan otomatis dikunci oleh sistem dan memerlukan penerbitan Surat Tugas / SK baru dari Kepala Desa Bandungan untuk pengaktifan kembali oleh Super Admin.

Apakah panduan ini membantu Anda?