Keamanan Aplikasi AppSheet: Tips Lindungi Akses & Data

Tutorial AppSheet

AppSheet memudahkan pembuatan aplikasi tanpa coding, tapi keamanan tetap tanggung jawab kita. Di bawah ini adalah panduan ringkas—mulai dari kontrol akses, penyimpanan data, hingga audit—dengan contoh ekspresi yang bisa langsung dipakai.


Wajib Login & Batasi Domain

  • Aktifkan Require sign-in (Security → Require Sign-In).
  • Jika perusahaan memakai Google Workspace, batasi akses ke domain Anda.

Allowlist domain (contoh):

IN(RIGHT(USEREMAIL(), LEN(USEREMAIL()) - FIND("@", USEREMAIL())), 
    {"perusahaan.co.id","anakperusahaan.id"})

Catatan: Batasi juga “App link sharing” agar tidak bisa diakses publik.


Role & Izin Aksi per Pengguna

Buat tabel Users berisi Email dan Role (Admin / Supervisor / Staff).
Gunakan ekspresi di level tabel atau form.

Contoh: Hanya admin yang boleh edit

Are updates allowed? 
IF( LOOKUP(USEREMAIL(), "Users", "Email", "Role")="Admin", "ALL_CHANGES", "READ_ONLY")

Contoh: Sembunyikan field khusus admin

Show_If: LOOKUP(USEREMAIL(),"Users","Email","Role")="Admin"

Security Filter (Server-Side) — Bukan Sekadar Slice

Security Filter membatasi baris data yang dikirim ke perangkat (lebih aman & cepat).

Contoh: Data hanya milik user tersebut

[OwnerEmail] = USEREMAIL()

Contoh: Akses per lokasi

IN([LokasiID], SELECT(UserLokasi[LokasiID], [Email]=USEREMAIL()))

Hindari mengandalkan Slice atau User Settings untuk keamanan inti; keduanya bagus untuk UI, tapi data sudah terlanjur diunduh.


Jejak Audit & Tanggung Jawab

Sediakan kolom audit dan isi otomatis.

CreatedBy (App formula): USEREMAIL()
CreatedAt (App formula): NOW()
UpdatedBy (Reset on edit = TRUE, App formula): USEREMAIL()
UpdatedAt (Reset on edit = TRUE, App formula): NOW()

Gunakan Manage → Monitor → Audit History untuk menelusuri perubahan.


Validasi Data & Anti-Manipulasi

Gunakan Valid_If dan Editable_If agar data masuk sesuai aturan.

Contoh: Qty tidak boleh negatif & tidak melebihi stok

AND([Qty] > 0, [Qty] <= LOOKUP([SKU], "Produk", "SKU", "Stok"))

Contoh: Kunci kolom setelah disetujui

Editable_If: [Status] <> "Approved"

File & Gambar Lebih Aman

  • Simpan file di folder terpisah dengan hak akses Drive yang benar.
  • Gunakan kolom gambar MEDIUM/FULL untuk mengurangi ekspos data & beban jaringan.
  • Nonaktifkan “Download” di view publik; gunakan app yang wajib login untuk menampilkan file sensitif.

Offline & Sinkronisasi

  • Aktifkan Offline/Sync hanya bila perlu.
  • Hindari field yang bergantung data belum tersimpan.
  • Tunjukkan status sinkron agar pengguna paham.

Label status:

IF(CONTEXT("SyncState")="Syncing","Sedang sinkron…","")

Integrasi & Webhook yang Aman

  • Jangan taruh API key di sheet. Simpan di layanan aman (App Properties, Apps Script Properties, atau backend).
  • Batasi IP/Origin di gateway pihak ketiga.
  • Kirim hanya data yang diperlukan, hindari PII berlebihan.

Payload minimalis contoh (WA gateway / webhook):

{
  "to": "<<[NoWA]>>",
  "message": "Pesanan <<[OrderID]>> diproses."
}

Minimalkan Formula Berat di Spreadsheet

  • Hindari QUERY, IMPORTRANGE, dan kalkulasi berat di Sheet sumber.
  • Pindahkan ke Automation yang menulis hasil ke kolom fisik (lebih cepat & aman).

Checklist Cepat (Tempel di Proyek Anda)

  • Require sign-in + batasi domain
  • Tabel Users + role-based permission
  • Security Filter untuk row-level security
  • Kolom audit (Created/Updated By/At)
  • Valid_If & Editable_If untuk aturan bisnis
  • Folder file terpisah & kontrol Drive
  • Offline diaktifkan seperlunya
  • API key disimpan aman, payload minimal
  • Hindari formula berat di Sheet

Snippet Siap Pakai

Cek role cepat (helper expression):

CONTEXT("Host")="Browser" 
? LOOKUP(USEREMAIL(),"Users","Email","Role") 
: LOOKUP(USEREMAIL(),"Users","Email","Role")

Hanya Admin & Supervisor bisa delete:

IF(
  IN(LOOKUP(USEREMAIL(),"Users","Email","Role"), {"Admin","Supervisor"}),
  TRUE,
  FALSE
)

Penutup, Keamanan di AppSheet bukan fitur tunggal, melainkan kombinasi kontrol akses, filter di server, validasi, dan kebiasaan operasional yang disiplin. Mulailah dari tiga hal: Require sign-in, Security Filter, dan role-based permission—lalu lengkapi dengan audit, validasi, serta praktik integrasi yang aman. Dengan itu, aplikasi tetap nyaman digunakan dan data bisnis terlindungi.

Comments