Mengatur siklus hidup ticket Kerberos: memahami sifat lifetime, renewable, forwardable, proxiable, dan postdated, memperbarui ticket untuk job jangka panjang, serta membaca flag ticket dengan klist.

Di episode 8 kalian mengatur atribut principal seperti -maxlife dan -maxrenewlife dari sisi admin. Episode 9 ini membahas hal yang sama dari sisi ticket itu sendiri — bagaimana sifat-sifatnya bekerja di runtime, bagaimana mengontrolnya saat meminta ticket, dan bagaimana menjaga ticket tetap hidup untuk job yang berjalan lama. Ini materi yang terasa langsung setiap kali kalian menemukan pesan Ticket expired di tengah proses batch.
Setiap ticket membawa sejumlah sifat (attributes) yang menentukan apa yang bisa dan tidak bisa dilakukan dengan ticket itu:
Perbedaan forwardable dan proxiable sering membingungkan. Forwardable memberi kartu blanko ke host tujuan — host itu bisa meneruskannya lagi. Proxiable memberi kartu bertulis nama — hanya untuk service tertentu dan tidak bisa diteruskan lebih jauh. Untuk penggunaan harian, forwardable adalah yang paling umum, proxiable lebih jarang.
Nilai default lifetime ditetapkan di [libdefaults] pada /etc/krb5.conf:
[libdefaults]
default_realm = EXAMPLE.COM
ticket_lifetime = 10h
renew_lifetime = 7d
forwardable = true
proxiable = falseticket_lifetime mengatur umur default TGT; renew_lifetime mengatur sampai kapan ticket masih bisa diperpanjang. Nilai efektifnya selalu min(permintaan klien, maxlife principal, default KDC) — sebagaimana dipelajari di episode 8. Jadi mengubah ticket_lifetime di sini hanya memengaruhi klien ini, bukan seluruh realm.
Kadang kalian butuh ticket yang lebih pendek (untuk sesi singkat yang sensitif) atau lebih panjang (untuk job panjang). kinit menyediakan -l untuk lifetime dan -r untuk renewable:
kinit -l 4h -r 7d budi
klistkinit -l 4h -r 7d meminta TGT dengan masa berlaku 4 jam yang bisa diperpanjang hingga 7 hari. Tanpa -r, ticket tidak bisa diperpanjang sama sekali. Kombinasi -l dan -r inilah yang menjadi dasar dari semua strategi renewable di bawah.
Masalah klasik: sebuah job batch (misalnya pipeline data atau backup) mulai jam 8 pagi dan butuh autentikasi terus hingga 3 hari ke depan. Ticket biasa akan kedaluwarsa dalam hitungan jam. Solusinya ada dua lapis:
kinit -R memperpanjang ticket selama masih dalam batas renewable dan belum kedaluwarsa.kinit -Rk5start atau krenew menjaga ticket tetap hidup dengan keytab, tanpa campur tangan manusia. k5start memperoleh ticket awal dan memperbaruinya berkala; krenew hanya memperbarui ticket yang sudah ada.k5start -f /etc/keytabs/batch.keytab -b -K 60 -l 24h -r 7d -p /run/batch.pidOpsi -f menunjuk keytab, -b menjalankan di background, -K 60 memperbarui setiap 60 menit, -l 24h meminta lifetime 24 jam, -r 7d memperbolehkan renewal hingga 7 hari, dan -p menulis PID untuk memantau prosesnya. Dengan pola ini, job yang berjalan berhari-hari tetap punya ticket valid — asalkan lifetime-nya selalu diperbarui sebelum kedaluwarsa.
Important
Kunci utama renewable: perbarui sebelum kedaluwarsa. Begitu TGT habis masa berlakunya, kinit -R akan gagal dengan error Ticket expired — setelah itu tidak ada jalan lain selain kinit ulang dengan password atau keytab. Aturan praktis: jadwalkan renewal pada setengah umur ticket, bukan di akhir.
Tidak semua ticket diciptakan sama. TGT dan service ticket punya siklus hidup yang berbeda:
| Properti | TGT | Service Ticket |
|---|---|---|
| Diterbitkan oleh | AS (Authentication Server) | TGS (Ticket Granting Server) |
| Isi | Identitas user | Identitas user plus identitas service |
| Lifetime | Ditentukan ticket_lifetime | Sampai batas maxlife principal service |
| Perpanjangan | Bisa kinit -R | Tidak bisa diperpanjang |
| Kedaluwarsa | Ticket mati total | Ticket mati total, permintaan baru butuh TGT valid |
Poin pentingnya: saat TGT kedaluwarsa, service ticket yang sudah dipegang masih valid sampai masa berlakunya sendiri berakhir — tetapi kalian tidak bisa meminta service ticket baru tanpa TGT yang valid. Karena itu dalam praktik, yang paling sering diperbarui adalah TGT, bukan service ticket.
Untuk tahu sifat-sifat apa yang dimiliki ticket yang sedang kalian pegang, gunakan klist dengan -f:
klist -fOutput akan menampilkan flag di kolom tertentu dengan arti:
| Flag | Arti |
|---|---|
F | Forwardable — bisa di-forward |
f | Forwarded — sudah di-forward dari host lain |
R | Renewable — bisa diperpanjang |
P | Proxiable — bisa diproksi |
p | Proxy — ticket proksi |
D | Postdateable — bisa di-postdate |
d | Postdated — ticket postdated |
Perhatikan huruf besar dan kecil: F adalah kemampuan (ticket bisa di-forward), f adalah keadaan (ticket ini memang sudah di-forward). Begitu juga P vs p dan D vs d. Membaca flag ini adalah keterampilan debugging yang sering menyelamatkan kalian saat sebuah aplikasi mengeluh ticket tidak bisa di-forward.
Jika kinit adalah pintu masuk, kdestroy adalah pintu keluar. Menghapus cache ticket secara eksplisit itu penting, terutama di mesin bersama, terminal publik, atau setelah kalian selesai dengan tugas administratif:
kdestroy
kdestroy -Akdestroy menghapus cache default; kdestroy -A menghapus semua cache yang ada. Gunakan -A saat kalian yakin tidak ada sesi lain yang masih membutuhkan ticketnya. Kebiasaan yang baik: pasang kdestroy di logout shell atau di akhir skrip administratif yang memakai kinit — sehingga kredensial tidak mengendap di disk lebih lama dari yang dibutuhkan.
Pada episode 9 ini, kalian memahami siklus hidup ticket: sifat-sifat lifetime, renewable, forwardable, proxiable, dan postdated; cara menetapkan default di krb5.conf; meminta lifetime khusus dengan kinit -l dan -r; menjaga job panjang hidup dengan kinit -R dan k5start; perbedaan TGT dan service ticket; membaca flag dengan klist -f; serta menutup sesi dengan kdestroy.
Inti yang harus dibawa pulang:
renew_lifetime adalah batas maksimum perpanjangan, bukan lifetime awal.kinit -R tidak bisa menyelamatkan apa pun.klist -f adalah jendela ke sifat sebenarnya dari setiap ticket.Di episode 10 berikutnya, kita melebarkan cakrawala dari satu realm ke banyak realm: cross-realm authentication — bagaimana dua organisasi atau dua domain menghubungkan Kerberos mereka lewat trust. Konsep ticket dan principal yang kalian kuasai sekarang akan diuji di skala yang lebih besar.