Keamanan Sistem
Panduan ini menjelaskan konfigurasi keamanan RetailOS, termasuk jaringan VPN, proteksi web, autentikasi, dan best practices.
Arsitektur Keamanan
Tailscale VPN
RetailOS menggunakan Tailscale untuk koneksi aman antara toko dan kantor pusat.
Keuntungan Tailscale
| Fitur | Keterangan |
|---|---|
| Zero-config | Tidak perlu setup port forwarding |
| WireGuard | Enkripsi cepat dan aman |
| Mesh Network | Setiap node bisa berkomunikasi langsung |
| ACL | Kontrol akses per node/user |
| MagicDNS | DNS otomatis untuk setiap node |
Konfigurasi
- Install Tailscale di setiap server/komputer:
bash
curl -fsSL https://tailscale.com/install.sh | sh- Daftarkan node:
bash
sudo tailscale up --authkey=tskey-auth-xxxxx- Konfigurasi ACL di Tailscale admin console:
json
{
"acls": [
{"action": "accept", "src": ["tag:store"], "dst": ["tag:cloud:8090"]},
{"action": "accept", "src": ["tag:cloud"], "dst": ["tag:store:8081"]},
{"action": "accept", "src": ["tag:dc"], "dst": ["tag:cloud:8090"]}
]
}Cloudflare
Portal web dilindungi oleh Cloudflare:
| Fitur | Fungsi |
|---|---|
| WAF | Block serangan web (SQL injection, XSS) |
| DDoS Protection | Proteksi dari serangan DDoS |
| SSL/TLS | Enkripsi HTTPS otomatis |
| Rate Limiting | Batasi request per IP |
| Bot Protection | Block bot jahat |
Autentikasi
JWT Token
- Token disimpan di HttpOnly cookie (portal web) atau memory (POS)
- Expire: 1 jam access token, 7 hari refresh token
- Signing algorithm: HS256 dengan secret key min 32 karakter
WebAuthn (Passwordless)
Untuk POS dan Store Admin:
- Fingerprint reader
- Face ID (perangkat yang mendukung)
- Security key (USB/NFC)
Role-Based Access Control (RBAC)
| Role | Level Akses |
|---|---|
admin | Full access ke seluruh sistem |
ho_finance | Keuangan, settlement, laporan |
ho_purchasing | Procurement, supplier |
hr_manager | Data karyawan, payroll |
store_manager | Operasional toko (toko sendiri) |
cashier | POS dan member (terbatas) |
warehouse_staff | Inventori (toko sendiri) |
Best Practices
- Password Policy -- Min 8 karakter, kombinasi huruf+angka, ganti setiap 90 hari
- Access Control -- Least privilege, review quarterly, revoke saat karyawan keluar
- Network Security -- Semua via Tailscale, jangan expose Store Router ke internet
- Data Security -- Enkripsi at-rest, backup terenkripsi, audit log
Penting
Jangan pernah membagikan JWT secret, database password, atau Tailscale auth key ke pihak yang tidak berwenang.
Audit Log
| Event | Data yang Dicatat |
|---|---|
| Login/Logout | User, waktu, IP, success/fail |
| Transaksi POS | Kasir, item, total, metode bayar |
| Perubahan Data | User, field yang berubah, nilai lama/baru |
| Admin Action | User, action, target |
Halaman Terkait
- Cloudflare + Tailscale -- Detail setup jaringan
- API Authentication -- Detail autentikasi API