Episode ini membahas accounts untuk isolasi logika antar tim dan service, users beserta permission subscribe, publish, dan response, lalu nsc dan JWT untuk membuat accounts dan users, serta ekspor dan impor subject antar account.

Semua contoh sejauh ini memakai akun default tunggal. Episode 12 ini membuka dunia multi-tenancy: memisahkan service, tim, dan lingkungan ke dalam accounts sehingga satu server NATS bisa melayani banyak tenant secara aman dan terisolasi.
Kita akan membahas konsep accounts, users dan permission, lalu perangkat nsc yang mengelola semuanya lewat JWT. Ini fondasi keamanan yang akan dilanjutkan di episode 13.
Account adalah unit isolasi di NATS: subject, stream, consumer, dan permission dalam satu account tidak bisa dilihat account lain tanpa izin eksplisit. Bayangkan account sebagai namespace terpisah di server yang sama.
account PAYMENTS -> subject payments.>, stream PAY_ORDERS
account ORDERS -> subject orders.>, stream ORDERS
account ADMINS -> subject admin.>, akses semuaStruktur account PAYMENTS menunjukkan setiap account punya dunianya sendiri. Dua account boleh memakai nama subject yang sama — misalnya orders.created — tanpa saling mengganggu.
Beberapa pola umum:
nats account infonats account info menampilkan akun yang sedang dipakai beserta kuota JetStream. Dengan accounts, kuota stream dan resource bisa dialokasikan per account secara adil.
Setiap account berisi satu atau lebih user. Setiap user punya identitas dan permission sendiri:
nats add user --account ORDERS --name api-workerPerintah nats add user --account ORDERS --name api-worker (dalam lingkungan nsc) membuat user api-worker di account ORDERS. Permission menentukan apa yang boleh dilakukan user itu.
NATS membedakan tiga tipe permission:
authorization {
users = [
{ user: worker, permissions: {
subscribe: { allow: ["jobs.>"] }
publish: { allow: ["jobs.done"] }
response: { allow: ["_INBOX.>"] }
}}
]
}Blok permissions di atas memberi user worker hak subscribe semua subject jobs, publish hanya ke jobs.done, dan membalas request apa pun. Model response ini yang menjaga request-reply tetap aman.
nsc (NATS Tooling) adalah toolkit untuk mengelola operator, accounts, dan users berbasis JWT. JWT tidak disimpan di file konfigurasi server — setiap client membawa kredensialnya sendiri.
nsc add operator --generate-signing-key
nsc add account ORDERS
nsc add user --account ORDERS api-worker
nsc generate creds --account ORDERS --user api-workerRangkaian nsc add account ORDERS membuat account, nsc add user membuat user, dan nsc generate creds menghasilkan file kredensial .creds untuk dipakai client. Alur ini jauh lebih aman daripada menyebarkan password plaintext.
JWT memindahkan kepercayaan dari server ke tanda tangan kriptografis:
nats-server --js --auth config.jsonDengan JWT, server tidak perlu menyimpan daftar user. Client menghadirkan token yang ditandatangani operator, dan server memverifikasi tanda tangannya. Ini memungkinkan akun dan user dibuat dan dicabut tanpa merestart server.
Untuk komunikasi lintas account, gunakan ekspor dan impor:
exports: [
{ stream: { subject: "orders.created" } }
]Blok exports di account ORDERS mengizinkan subject orders.created dibagikan. Account lain lalu mengimpornya:
imports: [
{ stream: { subject: "orders.created" }, to: "orders.imported" }
]Blok imports menerima subject tersebut dan memetakannya ke orders.imported di account penerima. Ekspor-impor ini memungkinkan arsitektur multi-account yang bersih — setiap account memilih apa yang dipublikasi dan apa yang dikonsumsi.
Tip
Gunakan pola ekspor-impor dengan prefix to untuk menghindari tabrakan subject antar account. Dengan begini, source account bebas menamai subjectnya sendiri dan account konsumen tetap punya namespace yang terkendali.
Episode 12 memperkenalkan multi-tenancy NATS: accounts sebagai unit isolasi logika antar tim dan service, users dengan permission subscribe, publish, dan response, perangkat nsc yang mengelola semuanya lewat JWT, serta ekspor-impor subject untuk komunikasi lintas account yang terkontrol.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita akan membahas security & authentication — autentikasi user dan password, token, nkeys dengan pasangan kunci publik-privat, serta JWT, dilanjutkan TLS untuk enkripsi koneksi dan authorization per user, lengkap dengan best practice di production. Keamanan NATS mulai diuji di medan sesungguhnya.