Back to IF5161 Keamanan Data dan Perangkat Lunak

Model Otorisasi RBAC ABAC dan ReBAC

Questions/Cues

  • Apa perbedaan RBAC, ABAC, dan ReBAC?
  • Apa itu role explosion?
  • Bagaimana ABAC mengekspresikan kebijakan berbasis atribut dan konteks?
  • Apa itu Google Zanzibar dan bagaimana ia memeriksa izin?
  • Apa fungsi policy language seperti OPA/Rego dan AWS Cedar?

Reference Points

  • IF5161 — W05 Identity, Authentication, and Authorization, bagian “Authorization Models” s.d. “Policy Languages”

Perbandingan Model

Standar industri: RBAC untuk kesederhanaan, ABAC untuk granularitas.

ModelDasar keputusanKekuatanKelemahan
RBAC (Role-Based)Peran penggunaSederhana, mudah diauditRole explosion bila peran terlalu granular
ABAC (Attribute-Based)Atribut subjek, resource, aksi, konteksSangat granular dan dinamisKebijakan kompleks, sulit diuji
ReBAC (Relationship-Based)Relasi antar-entitas (owner, editor, viewer, member)Cocok untuk berbagi dokumen/sosialButuh penyimpanan graf relasi yang konsisten
flowchart LR
    U["User"] --> R["Role"] --> P["Permission"] --> O["Resource"]
    subgraph RBAC
        U
        R
        P
    end

ABAC: Kebijakan Berbasis Atribut

Contoh kebijakan (gaya Cedar): izinkan read bila departemen principal = departemen resource, clearance principal >= sensitivitas resource, waktu antara jam 9–17, dan lokasi negara tertentu. Atribut konteks (waktu, lokasi) memungkinkan keputusan yang tidak dapat diekspresikan oleh peran statis.

ReBAC dan Google Zanzibar

Zanzibar menyimpan tuple relasi: document:doc1#owner@user:alice, document:doc1#editor@user:bob, document:doc1#viewer@group:company. Pemeriksaan “bolehkah Bob mengedit doc1?” menjadi: apakah Bob berada dalam relasi editor (atau relasi turunan yang memberi hak edit)? Jika ya, permit. Makalah: “Google’s Zanzibar: Consistent, Global Authorization System” (2019).

Policy Languages

Bahasa kebijakan memisahkan keputusan dari kode aplikasi (policy-as-code):

  • OPA/Rego: default allow = false lalu aturan allow { input.user.role == "admin" } dan allow { input.user.department == input.resource.department; input.action == "read" }.
  • AWS Cedar: permit (principal == User::"alice", action == Action::"read", resource == Document::"doc1");

Perhatikan pola default deny pada Rego, sesuai prinsip fail-safe defaults (Prinsip Desain Saltzer dan Schroeder).

Summary

RBAC sederhana tetapi berisiko role explosion, ABAC granular berbasis atribut dan konteks, ReBAC (Google Zanzibar) memutuskan akses dari relasi antar-entitas. Kebijakan modern ditulis sebagai kode di OPA/Rego atau Cedar dengan default deny, memisahkan logika otorisasi dari aplikasi.