Episode ini membahas keamanan data di BI: row-level security (RLS), role-based access control, data masking, dan praktik menerapkan RLS di database serta di Power BI/Tableau/Looker untuk data Superstore

Semakin banyak orang yang memakai data kalian (self-service di episode 13), semakin besar risiko: tidak semua orang berhak melihat semua data. Analis sales tidak seharusnya melihat margin per transaksi seluruh region; karyawan HR tidak seharusnya melihat data gaji; dan akun yang dipakai demo tidak boleh mengakses data produksi.
Episode ini membahas data security dari sudut pandang BI Analyst: bagaimana memastikan setiap pengguna hanya melihat data yang memang berhak mereka lihat — lewat row-level security (RLS), role-based access, dan data masking. Ini bukan sekadar teknis; ini fondasi kepercayaan dan kepatuhan hukum.
Keamanan data berlapis, dan kalian harus memahami di lapisan mana tiap kontrol bekerja:
| Lapisan | Contoh Kontrol | Siapa yang Mengatur |
|---|---|---|
| Database | GRANT, RLS policy, view ber-filter | Data Engineer / DBA |
| Semantic layer | Definisi metrik, field tersembunyi | Analytics Engineer / BI |
| BI tool | Workspace permission, role | BI Analyst |
| Dashboard | Akses per dashboard | BI Analyst |
Konsep kuncinya: defense in depth — jangan bergantung pada satu lapisan. Dashboard tanpa akses di level database hanyalah ilusi keamanan.
RLS membatasi baris data yang bisa dilihat pengguna berdasarkan aturan. Contoh paling umum di dunia BI: analis sales regional hanya melihat data regionnya sendiri.
Implementasi paling murni ada di database — kendali tidak bisa dilewati tool apa pun:
CREATE POLICY region_isolation ON fact_orders
USING (region = current_setting('app.region', true));
ALTER TABLE fact_orders ENABLE ROW LEVEL SECURITY;
-- Peran analis regional
CREATE ROLE analyst_west;
GRANT SELECT ON fact_orders TO analyst_west;
-- Setiap sesi menetapkan region-nya
SET app.region = 'West';Dengan policy ini, koneksi sebagai analyst_west hanya bisa melihat baris region = 'West' — meskipun query menulis SELECT * FROM fact_orders. Inilah RLS yang tidak bisa diakali.
Power BI menerapkan RLS di level model — cocok untuk pengguna yang tidak punya akses database langsung. Buat peran dan DAX filter:
# Manage Roles → New Role
Role: Regional Manager
DAX filter: [region] = LOOKUPVALUE(dim_customer[region], dim_customer[region], USERPRINCIPALNAME())USERPRINCIPALNAME() mengambil email pengguna yang sedang login — lalu mencocokkan ke region miliknya. Saat user membuka report, mereka hanya melihat data regionnya.
USERNAME()/CURRENT_USER() di calculated field, lalu gabungkan dengan data user-mapping.access_filter di LookML — misalnya field region dibatasi sesuai user attribute:access_filter: {
field: orders__region
user_attribute: user_region
}Prinsipnya sama di semua tool: kunci pengguna → atribut pengguna → filter baris otomatis. Nama fungsinya beda, konsepnya identik.
Jika RLS membatasi baris, RBAC membatasi fitur dan data apa yang boleh diakses siapa. Di tool BI, contohnya:
| Peran | Bisa Melihat | Bisa Membuat | Bisa Mengubah |
|---|---|---|---|
| Viewer | Semua dashboard | Tidak | Tidak |
| Analyst | Semua dashboard | Dashboard baru | Dashboard sendiri |
| Publisher | Semua | Semua | Semua (certified) |
| Admin | Semua | Semua | Semua + permission |
Prinsip least privilege: beri akses minimum yang dibutuhkan untuk bekerja. Mulai dari viewer, naikkan hanya saat dibutuhkan. Audit akses secara berkala — akun karyawan yang sudah keluar sering menjadi lubang keamanan yang terlupakan.
Data masking menampilkan data dengan versi tersamarkan — bukan menghapus, tetapi menyembunyikan. Contohnya:
| Data Asli | Masked (untuk tim non-penting) |
|---|---|
customer_id: CUS-101, nama & email penuh | CUS-*** |
order_amount: 12.500.000 | *** (atau dikelompokkan) |
credit_card: 4532 9812 7734 2091 | 4532 **** **** 2091 |
Teknik masking:
Masking paling efektif dilakukan di semantic layer: kalian mendefinisikan kolom mana yang boleh dilihat peran mana. Tool BI modern punya fitur object-level security (mis. Power BI OLS) untuk menyembunyikan kolom sensitif dari peran tertentu.
Warning
Jangan pernah menyimpan data sensitif (password, token API, nomor kartu penuh) di dalam warehouse analitik untuk keperluan BI. Kalau ada data sensitif yang harus masuk, terapkan masking + RBAC + RLS sekaligus — dan audit aksesnya. Satu dashboard bocor bisa menjadi insiden serius (kita bahas compliance di episode 19).
Terapkan RLS untuk skenario nyata: empat regional manager, masing-masing hanya melihat regionnya.
analyst_west, analyst_east, dll. plus RLS policy region_isolation seperti contoh di atas.region dari user mapping.Uji RLS ini wajib — keamanan yang tidak diuji adalah dugaan.
Inti yang harus dibawa pulang:
Di episode 19 selanjutnya kita akan membahas privacy & compliance BI — GDPR, penanganan PII, dan audit trail, plus praktik membangun compliance report. Keamanan yang baik dilengkapi kepatuhan hukum yang benar. Pastikan tetap semangat!