Apache Hop Web: RBAC, Auth Modes dan SSO

Terakhir diedit:

DITULIS Oleh:

Vincent Paruh

Apache Hop Web comes with SSO and RBAC security features
Apache Hop Web hadir dengan fitur SSO dan RBAC. Fitur SSO bisa di integrasikan dengan berbaga IdP seperti Authentik dan Okta

Saat Apache Hop 2.19 dirilis, rilisnya sendiri sudah jadi kabar besar, 337 issue ditutup, ada plugin Marketplace, dan engine Spark native. Tapi kami sempat menandai hal lain sebagai cerita yang lebih besar untuk deployment tim: lapisan keamanan lengkap sedang disiapkan untuk Hop Web, versi browser dari Hop GUI.

Lapisan keamanan itu kini sudah ada. Fitur ini tersedia sekarang di build terbaru Hop Web, dan akan dirilis resmi sebagai bagian dari Hop 2.20. Singkatnya: Hop Web berubah dari yang tadinya tidak punya login sama sekali menjadi punya empat mode autentikasi, role-based access control, dan tab Security khusus di perspective Configuration tempat admin mengelola semuanya tanpa perlu menyentuh file konfigurasi.

Kenapa ini penting

Hop Web memberi tim Anda Hop GUI lengkap di browser. Selama ini Hop Web hadir dalam kondisi terbuka total, siapa pun yang bisa menjangkau server bisa membuka semua project, mengedit semua pipeline, dan menginstall plugin. Kalau ingin ada login, Anda harus mengonfigurasi server Tomcat di bawahnya secara manual, dan bahkan itu pun Hop tidak punya konsep role di dalam UI-nya.

Lapisan baru ini menyelesaikan kedua masalah tersebut, dengan dua bagian:

  • Autentikasi mengatur siapa yang boleh masuk, dengan empat mode pilihan.
  • Otorisasi mengatur apa yang boleh dilakukan tiap orang setelah masuk, melalui role yang Hop terapkan di seluruh UI, mulai dari menu, toolbar, dialog, keyboard shortcut, sampai apa yang bisa di-drag di canvas.

Empat mode autentikasi

Anda memilih salah satunya di tab Security (panduannya di bawah). Authentication mode yang tersedia:

  • NONE adalah akses terbuka, default selama ini. Tidak ada halaman login, tidak ada pembatasan, persis perilaku Hop Web dulu. Cocok untuk container pribadi di laptop, tidak cocok untuk apa pun yang dipakai bersama.
  • BASIC adalah login yang dikelola Hop sendiri. Hop Web menampilkan halaman sign-in dan memeriksa username serta password ke daftar user miliknya. Anda membuat dan mengelola user dari UI. Ini pilihan yang tepat untuk tim kecil yang belum punya identity provider sendiri.
  • EXTERNAL menyerahkan autentikasi ke sesuatu yang sudah Anda jalankan. Servlet container atau reverse proxy di depan Hop Web yang menangani login, dan Hop memercayai user yang diterimanya. Ini pilihan alami kalau organisasi Anda sudah mengautentikasi orang melalui LDAP atau gateway yang sudah ada.
  • OAUTH2 adalah single sign-on. User klik satu tombol, dikirim ke identity provider, dan kembali dalam keadaan sudah login. Bekerja dengan Keycloak, Microsoft Entra ID, Google, Okta, atau penyedia mana pun yang berbicara dalam OpenID Connect.

Empat role, diterapkan di mana-mana

Setelah seseorang login, Hop memetakan mereka ke satu atau lebih dari empat role bawaan:

Role HopApa yang bisa dilakukan orang tersebut
AdminSemuanya, termasuk mengelola pengaturan keamanan dan menginstall plugin dari marketplace
User (developer)Membuat, mengedit, menyimpan, menghapus, dan menjalankan pipeline serta workflow, dan mengelola metadata. Tidak bisa mengatur keamanan, tidak bisa install plugin
OperatorHanya melihat dan menjalankan. Tidak bisa menyimpan, mengedit, atau menghapus apa pun
Read-onlyHanya melihat. Bahkan tidak bisa mengeksekusi

Penerapannya menyeluruh. Menu, tombol toolbar, aksi klik kanan, dan keyboard shortcut semuanya dibatasi, jadi user Read-only memang tidak akan melihat tombol Save atau Run. Kalau seseorang memicu aksi yang tidak berhak dia lakukan, dia akan mendapat dialog Access denied. Yang lebih baik lagi, dialog terbuka dalam mode read-only bagi user tanpa hak edit: field tidak bisa diubah dan tombol OK dimatikan, cara yang bagus untuk membiarkan staf junior melihat isi konfigurasi sebuah transform tanpa risiko perubahan yang tidak disengaja. Canvas pipeline dan workflow juga memblokir drag, delete, dan reconnect bagi mereka.

Dua sentuhan kecil yang menunjukkan ketelitian desainnya:

  • Toolbar menampilkan siapa yang sedang login, di samping tombol Log off.
  • Admin mendapat dropdown session privilege untuk menurunkan haknya sementara ke Operator atau Read-only tanpa perlu logout, berguna untuk mengecek apa yang sebenarnya dilihat rekan kerja. Anda hanya bisa turun, tidak bisa naik, jadi tidak ada jalan untuk menaikkan hak sendiri.

Tab Security yang baru, field per field

Ini inti update untuk pengguna UI. Buka perspective Configuration di Hop Web, Anda akan menemukan tab Security. Tab ini hanya muncul untuk admin, dan hanya di Hop Web, tidak pernah di GUI desktop.

Di bagian atas ada status line yang memberi tahu posisi Anda: “Session is unrestricted (no AuthN)” saat autentikasi mati, atau “Signed in as ‘nama’ with roles […]”. Di bawahnya ada empat sampai lima sub-tab, plus tombol Save dan Reload. Save menulis pengaturan Anda, Reload membuang perubahan dan membaca ulang dari disk. Berikut isi tiap sub-tab.

General

Tempat Anda melakukan enable authentication.

FieldFungsinya
Authentication modeDropdown dengan empat mode: NONE, EXTERNAL, BASIC, OAUTH2
Login welcome messageTeks kustom yang tampil di bawah judul “Apache Hop Web” pada halaman sign-in (hanya BASIC dan OAUTH2). Kosongkan untuk pesan default: “Sign in to design and run data pipelines and workflows.”

Basic

Layar manajemen user, dipakai saat mode BASIC. Satu tabel Users dengan satu baris per orang:

FieldFungsinya
UsernameNama login
RoleDropdown: admin, user, operator, atau readonly. Role kosong menjadi user
EnabledSaklar Y/N. Akun yang dinonaktifkan selalu gagal login, berguna untuk menangguhkan seseorang tanpa menghapus barisnya
New passwordKetik untuk mengatur atau mengganti password. Biarkan kosong untuk mempertahankan yang lama. Password disimpan sebagai one-way hash, bukan teks polos

Menambahkan rekan satu tim cuma butuh satu baris: username, role, password, Save. Anda memerlukan setidaknya satu user agar mode BASIC bisa jalan.

Satu masalah telur dan ayam yang perlu diketahui: saat autentikasi baru dinyalakan, daftar user masih kosong dan belum ada yang bisa login ke UI yang mengelola user. Anda bootstrap admin pertama dengan environment variable sebelum container dinyalakan, HOP_WEB_ADMIN_USER dan HOP_WEB_ADMIN_PASSWORD. Untuk demo lokal cepat ada juga HOP_WEB_SEED_DEMO_USERS=true, yang membuat empat akun contoh, admin, developer, operator, dan viewer, masing-masing dengan username-nya sendiri sebagai password.

External

Satu tabel mapping, Role mappings (container / IdP → Hop), dengan dua kolom:

FieldFungsinya
Container / IdP roleNama role atau group sebagaimana diterima dari container, reverse proxy, LDAP, atau identity provider Anda. Bebas diisi, tulis apa yang dikirim dari sisi Anda
Hop roleDropdown: admin, user, operator, readonly. Terjemahan nama tersebut di dalam Hop

Misalnya, kalau LDAP Anda mengirim group data-engineers, tambahkan baris yang memetakannya ke user, dan semua orang di group itu menjadi developer di Hop Web. Baris kosong diabaikan, dan kalau tabelnya kosong Hop memakai pencocokan nama bawaan yang masuk akal. Tab ini penting untuk mode EXTERNAL dan untuk SSO, karena keduanya butuh tempat untuk menerjemahkan “nama group dari luar” menjadi “role Hop”.

OAuth

Pengaturan single sign-on, dipakai saat mode OAUTH2.

FieldFungsinya
Issuer URLAlamat identity provider Anda, misalnya https://keycloak.example/realms/hop. Hop mengambil sisanya secara otomatis dari sini
Client IDClient yang Anda daftarkan di identity provider
Client secretSecret client, tampilannya disamarkan. Client publik yang memakai PKCE boleh mengosongkannya
Redirect URIKe mana provider mengembalikan user. Kosongkan dan Hop menyusunnya otomatis, Anda tinggal mendaftarkan alamat itu ke provider
ScopesApa yang Hop boleh tahu tentang user. Default-nya, openid profile email, cocok untuk mayoritas provider
Role / groups claimField mana di token login yang berisi daftar group milik user, inilah yang mengisi tabel mapping di tab External. Default groups
Username claimField mana yang menyimpan username. Default preferred_username, untuk Google pakai email
Use PKCE (S256)Lapisan keamanan tambahan pada proses login, aktif secara default. Biarkan menyala

Projects

Kontrol dengan finest grain, menentukan siapa yang boleh membuka project yang mana saja:

FieldFungsinya
Enable project access controlSaklar utama. Mati secara default, semua orang melihat semua project. Session desktop tidak pernah difilter
When no rule matches, allow all projectsDicentang (default), siapa pun yang tidak tercakup rule melihat semuanya. Dihilangkan centangnya, hanya admin yang tetap punya akses penuh dan yang lain hanya melihat yang diberikan rule
Rules → TypeRule mencocokkan pada apa: user (username), role (role Hop), atau group (group dari container, LDAP, atau identity provider Anda)
Rules → SubjectNama username, role, atau group sebenarnya
Rules → All projectsY berarti orang atau group ini boleh membuka semua project terdaftar
Rules → ProjectsDaftar nama project dipisahkan koma, dipakai saat All projects bernilai N

Satu catatan soal Save: setelah menyimpan, orang yang sudah login akan mempertahankan role lamanya sampai mereka login ulang. Dan kalau Anda memakai login BASIC milik Hop, jangan sekalian menyalakan login di level Tomcat, pilih satu jalur saja.

Penutup

Hop Web berubah dari titik terlemah dalam adopsi Hop di enterprise menjadi platform yang benar-benar bisa Anda jalankan untuk tim yang campur. Empat mode login mencakup semuanya dari demo di laptop sampai SSO berbasis Keycloak, empat role diterapkan sampai ke dialog individual dan operasi canvas, dan tab Security yang baru berarti admin mengelola semuanya dari UI yang sama tempat tim mereka merancang pipeline.

Kalau Anda ingin merasakannya sebelum rilis resmi 2.20, jalankan perintah Docker satu baris di atas dan luangkan sepuluh menit login sebagai tiap user demo. Bedanya langsung terlihat. Dokumentasi lengkapnya ada di manual Hop Web.

Photo of author

ABOUT THE AUTHOR

Vincent Paruh

Vincent adalah Solution Manager di Toba Consulting dengan pengalaman implementasi ERP iDempiere dan Data Analytics di berbagai industri seperti retail, marine logistics, insurance, manufacturing, distribution, ecommerce sejak 2018
Index