Skip to main content

Permission Blueprint

Blueprint ini adalah rekomendasi pemisahan otorisasi berdasarkan risiko route admin pada routes/admin.php.

Tujuan

  • Meminimalkan single-point-of-failure pada aksi kritikal
  • Memisahkan fungsi review vs execution
  • Memudahkan audit akses role admin

Role baseline (rekomendasi)

RoleFokus kerjaScope default
super-adminkonfigurasi platform menyeluruhsemua route, termasuk emergency
compliance-adminKYC, regulator, risk, whitelist maintenanceusers KYC + bappebti/report + maintenance read/write terbatas
wallet-ops-l1verifikasi awal transaksi walletapprove1/reject awal, monitoring
wallet-ops-l2approval final transaksi walletapprove2 + final reject
finance-adminlaporan keuangan dan pajakread finance/report + export/report actions
content-adminnews/banner/content marketsettings content CRUD terbatas
support-adminuser support non-kritisread user detail + action non-destruktif
auditor-readonlyaudit internalread-only semua laporan/log

Rule utama segregasi tugas

  1. Dual control:
    • Route approval tahap 1 dan tahap 2 harus dipisah role (wallet-ops-l1 vs wallet-ops-l2)
  2. No self-approval:
    • User yang submit aksi tidak boleh approve/reject record yang sama
  3. Least privilege:
    • Role support/content tidak boleh akses route delete/suspend/maintenance
  4. Emergency override:
    • Hanya super-admin untuk route yang mengubah availability sistem

Matriks permission by risk

High risk (write/destructive)

Kelompok routeContoh route nameRole yang diizinkan
User lifecycleuser_detail.suspend, user_detail.reactivate, user_detail.deletesuper-admin, compliance-admin
KYC decisionuser_kyc.approve, user_kyc.reject, user_kyc.suspendcompliance-admin
Wallet approvalpending_deposit.approve1, pending_deposit.approve2, withdrawal.approve1, withdrawal.approve2, withdrawal.rejectwallet-ops-l1/wallet-ops-l2 sesuai tahap
System statusconfiguration.updateStatus, maintenance_mode.update_statussuper-admin (opsional compliance-admin untuk maintenance)
Maintenance whitelistmaintenance_mode.add_whitelist, maintenance_mode.remove_whitelistsuper-admin, compliance-admin
Admin IAMadministrator.delete, administrator_role.deletesuper-admin
Broadcastsend (email blast)super-admin, content-admin (dengan approval policy)
Global setting deletesettings.destroysuper-admin

Medium risk (config mutation)

Kelompok routeContoh route nameRole yang diizinkan
Trading configtxpair.update, listed_coins.update, currency.updatesuper-admin, finance-admin (terbatas)
Wallet ruleswithdrawal_setting.updatesuper-admin, wallet-ops-l2
Infra feegas_fee.update, sync_gas_feesuper-admin, wallet-ops-l2
Fireblock opsfireblock.update_gas_stationsuper-admin

Low risk (read/reporting)

Kelompok routeContoh route nameRole yang diizinkan
User and wallet monitoringuser_detail.index, withdrawal.index, deposit.indexsemua role operasional + auditor
Financial reportoperation.index, tax_report.*finance-admin, super-admin, auditor-readonly
Regulator reportasset_transaction_report.*, quarterly_risk_assessment.indexcompliance-admin, super-admin, auditor-readonly
Logslog_history.activity.*, admin_login_log_history.indexsuper-admin, auditor-readonly

Control checklist implementasi

  • Mapping route name -> permission key di sistem role/permission.
  • Tambahkan middleware gate per module/action (bukan hanya google2fa).
  • Simpan audit trail: who, when, before, after, reason.
  • Wajib field alasan (reason) untuk aksi approve/reject/suspend/delete.
  • Aktifkan alert untuk:
    • maintenance toggles
    • whitelist changes
    • bulk delete/import
    • retry queue report regulator

Catatan adopsi

Blueprint ini baseline; finalisasi harus mengikuti struktur role internal dan kebijakan kepatuhan perusahaan.