Episode ini membahas Access Control Lists: mengontrol siapa yang bisa mengakses resource apa melalui file ACL di admin console, aturan allow dan deny, contoh policy dasar, serta penggunaan tags dan groups untuk kebijakan yang terkelola.

Sampai episode 5, semua node di tailnet saling bisa diakses. Itu nyaman untuk eksperimen, tapi berbahaya untuk production. Bayangkan NAS rumah kalian tiba-tiba bisa diakses laptop rekan kerja hanya karena satu tailnet. Inilah masalah yang diselesaikan ACL (Access Control Lists).
Episode 6 membahas sistem keamanan inti Tailscale: file ACL di admin console, konsep aturan allow, prinsip default deny, serta tags dan groups untuk membuat kebijakan yang terkelola. Setelah episode ini, kalian bisa merancang tailnet yang aman sejak awal.
ACL di Tailscale adalah file HuJSON (JSON dengan komentar) yang diatur di admin console pada menu Access Controls. File ini menentukan siapa yang boleh mengakses apa — paket, port, dan fitur. Aturan paling dasar berbentuk src → dst:
{
"acls": [
{ "action": "accept",
"src": ["*"],
"dst": ["*:*"] }
]
}Aturan di atas mengizinkan semua user mengakses semua node di semua port. Ini default saat tailnet baru dibuat.
Tailscale tidak mengizinkan apa pun kecuali ACL menyatakannya secara eksplisit. Jadi file ACL adalah daftar pengecualian dari default deny. Setiap aturan punya tiga bagian:
accept untuk mengizinkan.{
"acls": [
{ "action": "accept",
"src": ["user1@example.com"],
"dst": ["server-prod:22"] }
]
}Aturan src: user1@example.com, dst: server-prod:22 mengizinkan hanya user tersebut mengakses port 22 node server-prod.
Untuk perangkat otomatis (server, CI, container), login berbasis user tidak cocok — perangkat tidak punya akun manusia. Tags memindahkan otorisasi dari user ke kategori perangkat. Tag selalu berawalan tag: dan diatur admin di file ACL.
sudo tailscale up --advertise-tags=tag:serverPerintah sudo tailscale up --advertise-tags=tag:server mengajukan tag tag:server ke admin. Persetujuan tag dikendalikan oleh blok tagOwners di ACL.
Hanya admin yang berhak memberikan tag. Aturan tagOwners menentukan siapa yang boleh meng-assign tag tertentu:
{
"tagOwners": {
"tag:server": ["group:devops"],
"tag:workstation": ["user1@example.com"]
},
"acls": [
{ "action": "accept",
"src": ["tag:server"],
"dst": ["tag:workstation:22"] }
]
}Di blok di atas, tag:server hanya bisa di-assign anggota group:devops, dan semua node bertag server boleh mengakses port 22 node bertag workstation.
Selain tag, ACL bisa memakai group — sekumpulan user dari identity provider (Google Workspace, Entra ID, GitHub). Contoh: group:engineering memakai definisi dari provider, bukan daftar manual. Ini membuat kebijakan konsisten dengan organisasi kalian.
{
"acls": [
{ "action": "accept",
"src": ["group:devops"],
"dst": ["tag:server:*"] },
{ "action": "accept",
"src": ["user1@example.com"],
"dst": ["nas-rumah:22,80,443"] }
],
"ssh": [
{ "action": "accept",
"src": ["group:devops"],
"dst": ["tag:server"],
"users": ["autogroup:nonroot", "root"] }
]
}Perhatikan detailnya:
src: ["group:devops"], dst: ["tag:server:*"] memberi seluruh anggota devops akses penuh ke semua node server.ssh mengatur kebijakan Tailscale SSH secara terpisah — kita bahas di episode 7.Setiap perubahan ACL langsung aktif. Selalu simpan dan uji dari dua sisi: jalankan tailscale ping dari node src ke node dst, dan pastikan node yang tidak diizinkan justru ditolak. Cek efeknya cepat dengan:
tailscale ping nas-rumah
tailscale status*:*, untuk service yang sensitif.Episode 6 memperkenalkan lapisan keamanan pertama dan terpenting Tailscale: ACL. Kalian bisa mengatur siapa yang mengakses apa, memakai tags untuk perangkat otomatis, group untuk manusia, dan menyusun policy yang terkelola.
Inti yang harus dibawa pulang:
tag:server) untuk perangkat otomatis, diatur lewat tagOwners.Di episode 7 selanjutnya kita akan membahas Tailscale SSH — mengaktifkan SSH berbasis identitas tailnet dengan tailscale up --ssh dan tailscale ssh <host>, menghilangkan manajemen password dan SSH key, serta mengatur akses SSH per-user dan per-group melalui blok ssh di ACL.