Ketika sebuah agen AI di perusahaan Anda menghapus berkas, mengirim email, atau memanggil API pembayaran, dua pertanyaan langsung muncul: siapa yang mengizinkan aksi itu, dan bukti apa yang tersisa? Di banyak organisasi Indonesia yang mulai mengadopsi agen AI untuk helpdesk, analisis data, hingga otomasi operasional, jawaban jujurnya sering kali: satu API key bersama, akses luas, dan log yang tercecer. Tutorial ini membahas cara menutup celah tersebut dengan sebuah komponen sederhana namun efektif: gerbang tool (tool gateway) yang menerbitkan kredensial berumur pendek per agen, memaksakan izin minimal, meminta persetujuan manusia untuk aksi berisiko tinggi, dan mencatat semuanya ke jejak audit yang tidak bisa diubah diam-diam.
Rancangan ini tidak dikarang sendiri. Pada akhir April hingga awal Mei 2026, CISA dan NSA bersama otoritas keamanan siber Australia (ASD ACSC), Kanada, Selandia Baru, dan Inggris (NCSC) menerbitkan panduan bersama berjudul Careful Adoption of Agentic AI Services. Panduan ini menegaskan bahwa organisasi perlu menerapkan kerangka keamanan yang sudah mapan, yaitu zero trust, defense in depth, dan least privilege, pada sistem AI otonom, dengan identitas yang diamankan secara kriptografis, kredensial berumur pendek untuk tiap agen, serta persetujuan manusia untuk aksi berdampak tinggi. Kalimat kuncinya patut digarisbawahi: organisasi sebaiknya berasumsi bahwa sistem agentic AI dapat berperilaku tak terduga, sehingga penerapannya harus mengutamakan ketahanan, kemampuan dibatalkan (reversibility), dan pembatasan risiko.
Apa yang Dikhawatirkan Panduan Lima Negara Ini?
Panduan tersebut mengelompokkan risiko agen AI ke dalam lima kategori. Memahaminya membantu kita menentukan fitur apa yang wajib ada di gerbang tool.
- Privilege escalation: akses berlebih memperbesar dampak ketika agen dibajak, misalnya lewat prompt injection.
- Design flaw: konfigurasi yang buruk sejak sebelum deployment menciptakan celah bawaan.
- Behavioral risk: agen mengejar tujuan yang tidak dimaksudkan pemiliknya.
- Structural risk: kegagalan berantai di jaringan agen yang saling terhubung. Analisis para praktisi menyebutnya cascading compromise: agen berprivilese rendah yang tercemar menularkan keluarannya sebagai masukan ke agen berprivilese lebih tinggi.
- Accountability gap: sulit menelusuri keputusan dan hasilnya. Panduan menyebut contoh konkret dampaknya: berkas berubah, kontrol akses diubah, dan jejak audit terhapus.
Rekomendasi praktis yang muncul dari panduan ini dan ulasan para praktisi antara lain: batasi agar agen tidak dapat mengubah level aksesnya sendiri, gabungkan log tiap agen menjadi log terpadu yang mudah dibaca manusia (termasuk penggunaan tool dan jejak penalaran), tempatkan titik pemeriksaan manusia di alur kerja alih-alih membiarkan AI menentukan sendiri kapan perlu meminta persetujuan, serta pertahankan registri tool pihak ketiga yang sudah disetujui.
Arsitektur Gerbang Tool
Idenya sederhana: agen tidak pernah memegang kunci sistem tujuan. Setiap panggilan tool lewat satu gerbang yang berperan sebagai policy enforcement point. Alurnya:
- Penerbitan token: layanan penerbit memberi tiap agen token bertanda tangan dengan identitas unik, daftar scope yang sempit, dan masa berlaku singkat (misalnya 5 menit).
- Verifikasi: gerbang memeriksa tanda tangan dan masa berlaku setiap kali agen memanggil tool.
- Registri dan scope: hanya tool yang terdaftar yang bisa dipanggil, dan hanya jika scope token mencakup tool tersebut.
- Persetujuan manusia: tool berisiko tinggi (menghapus data, transfer dana) menunggu keputusan manusia. Keputusan ini ditentukan oleh kode gerbang, bukan oleh agen.
- Jejak audit berantai hash: setiap kejadian, baik berhasil maupun ditolak, dicatat dengan hash yang mengait ke entri sebelumnya, sehingga perubahan atau penghapusan entri tengah terdeteksi.
Catatan: kode di bawah adalah purwarupa edukatif berbasis pustaka standar Python. Untuk produksi, gunakan standar yang sudah teruji seperti JWT/OIDC atau workload identity (misalnya SPIFFE), simpan kunci di KMS/HSM, dan kirim log ke penyimpanan write-once di luar jangkauan agen.
Langkah 1: Token Berumur Pendek per Agen
Token berisi identitas agen (sub), scope, waktu kedaluwarsa (exp), dan pengenal unik (jti) untuk korelasi di log. Tanda tangan HMAC-SHA256 mencegah agen memalsukan atau memperluas scope-nya sendiri, sejalan dengan prinsip agar agen tidak dapat mengubah akses miliknya.
import base64, hashlib, hmac, json, time, secrets
KUNCI_PENERBIT = secrets.token_bytes(32) # produksi: simpan di KMS/HSM
def _b64(b):
return base64.urlsafe_b64encode(b).decode().rstrip("=")
def _unb64(s):
return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))
def terbitkan_token(agent_id, scopes, ttl_detik=300):
klaim = {"sub": agent_id, "scopes": sorted(scopes),
"exp": int(time.time()) + ttl_detik, "jti": secrets.token_hex(8)}
badan = _b64(json.dumps(klaim, separators=(",", ":")).encode())
tanda = _b64(hmac.new(KUNCI_PENERBIT, badan.encode(), hashlib.sha256).digest())
return f"{badan}.{tanda}"
def verifikasi_token(token):
badan, tanda = token.split(".")
harapan = _b64(hmac.new(KUNCI_PENERBIT, badan.encode(), hashlib.sha256).digest())
if not hmac.compare_digest(tanda, harapan):
raise PermissionError("tanda tangan token tidak valid")
klaim = json.loads(_unb64(badan))
if klaim["exp"] < time.time():
raise PermissionError("token kedaluwarsa")
return klaim
Perhatikan penggunaan hmac.compare_digest untuk perbandingan waktu-konstan, dan TTL yang sengaja pendek: kalau token bocor lewat log atau prompt injection, jendela penyalahgunaannya hanya hitungan menit.
Langkah 2: Jejak Audit Berantai Hash
Jejak audit adalah jawaban atas accountability gap. Setiap entri menyimpan hash entri sebelumnya, seperti rantai blok sederhana. Bila seorang penyerang (atau agen yang dibajak) menghapus atau mengedit satu entri, rantai tidak lagi konsisten dan fungsi verifikasi mengembalikan False.
class JejakAudit:
def __init__(self):
self.entri = []
self._hash_terakhir = "0" * 64
def catat(self, peristiwa):
peristiwa = {**peristiwa, "ts": time.time(), "prev": self._hash_terakhir}
mentah = json.dumps(peristiwa, sort_keys=True, separators=(",", ":"))
peristiwa["hash"] = hashlib.sha256(mentah.encode()).hexdigest()
self._hash_terakhir = peristiwa["hash"]
self.entri.append(peristiwa)
def verifikasi(self):
prev = "0" * 64
for e in self.entri:
salinan = {k: v for k, v in e.items() if k != "hash"}
mentah = json.dumps(salinan, sort_keys=True, separators=(",", ":"))
if e["prev"] != prev or hashlib.sha256(mentah.encode()).hexdigest() != e["hash"]:
return False
prev = e["hash"]
return True
Keterbatasan penting: rantai hash hanya mendeteksi perubahan di tengah rantai. Penyerang yang menguasai penyimpanan bisa saja membuang ekor rantai atau menulis ulang semuanya. Karena itu, di produksi, kirim hash terakhir secara berkala ke sistem terpisah (SIEM, penyimpanan WORM, atau layanan penanda waktu tepercaya) yang tidak dapat dijangkau agen.
Langkah 3: Gerbang Tool dengan Registri, Scope, dan Persetujuan Manusia
Inti dari tutorial ini adalah kelas gerbang. Perhatikan bahwa penolakan pun dicatat, karena percobaan aksi di luar wewenang justru sinyal deteksi yang paling berharga.
TINGKAT_RISIKO = {"baca_tiket": "rendah", "kirim_email": "sedang", "hapus_data": "tinggi"}
SCOPE_DIPERLUKAN = {"baca_tiket": "tiket:baca", "kirim_email": "email:kirim", "hapus_data": "data:hapus"}
class GerbangTool:
def __init__(self, registri_tool, audit, persetujuan_manusia):
self.registri, self.audit, self.setuju = registri_tool, audit, persetujuan_manusia
def panggil(self, token, nama_tool, argumen, alasan_agen=""):
try:
klaim = verifikasi_token(token)
except PermissionError as e:
self.audit.catat({"agent": "?", "tool": nama_tool, "hasil": "DITOLAK", "sebab": str(e)})
raise
agent = klaim["sub"]
if nama_tool not in self.registri:
self.audit.catat({"agent": agent, "tool": nama_tool, "hasil": "DITOLAK", "sebab": "tool tidak terdaftar"})
raise PermissionError("tool tidak ada di registri")
if SCOPE_DIPERLUKAN[nama_tool] not in klaim["scopes"]:
self.audit.catat({"agent": agent, "tool": nama_tool, "hasil": "DITOLAK", "sebab": "scope kurang"})
raise PermissionError("scope tidak mencukupi")
if TINGKAT_RISIKO[nama_tool] == "tinggi" and not self.setuju(agent, nama_tool, argumen):
self.audit.catat({"agent": agent, "tool": nama_tool, "hasil": "DITOLAK", "sebab": "manusia menolak"})
raise PermissionError("persetujuan manusia ditolak")
hasil = self.registri[nama_tool](**argumen)
self.audit.catat({"agent": agent, "tool": nama_tool, "argumen": argumen,
"alasan_agen": alasan_agen, "jti": klaim["jti"], "hasil": "OK"})
return hasil
Tiga keputusan desain layak dicermati. Pertama, registri tool bertindak sebagai daftar putih: tool dari sumber yang tidak dikenal tidak bisa dipanggil, yang mengurangi risiko tool berbahaya yang didistribusikan kepada agen. Kedua, persetujuan manusia dipicu oleh tingkat risiko yang ditetapkan pengembang, bukan oleh penilaian agen; agen yang telah dimanipulasi tentu tidak akan "merasa perlu" bertanya. Ketiga, kolom alasan_agen menyimpan penjelasan agen atas aksinya, melengkapi jejak penalaran yang direkomendasikan untuk audit. Ingat bahwa alasan itu hanya klaim agen dan tidak boleh dianggap bukti niat sebenarnya.
Langkah 4: Menguji Skenario Serangan
Uji gerbang dengan skenario yang mensimulasikan agen helpdesk yang "dibajak" agar menghapus data pelanggan:
audit = JejakAudit()
gw = GerbangTool(
{"baca_tiket": lambda id: f"isi tiket {id}",
"hapus_data": lambda tabel: f"{tabel} dihapus"},
audit, persetujuan_manusia=lambda a, t, x: False)
tok = terbitkan_token("agen-helpdesk-01", {"tiket:baca"}, 300)
print(gw.panggil(tok, "baca_tiket", {"id": 42}, "meringkas keluhan")) # OK
try:
gw.panggil(tok, "hapus_data", {"tabel": "pelanggan"}) # ditolak: scope kurang
except PermissionError as e:
print("ditolak:", e)
print(audit.verifikasi()) # True
audit.entri[0]["argumen"]["id"] = 7 # simulasi pemalsuan log
print(audit.verifikasi()) # False
Keluaran yang diharapkan: tiket terbaca, aksi penghapusan ditolak karena scope kurang (dan tercatat), verifikasi rantai bernilai True, lalu False setelah entri dipalsukan. Dalam pengujian penulis, purwarupa ini berjalan sesuai skenario tersebut.
Memperkuat untuk Produksi
- Identitas berbasis workload: ganti HMAC bersama dengan tanda tangan asimetris (JWT/OIDC atau SPIFFE) agar gerbang hanya menyimpan kunci publik dan penerbit terpisah dari verifikator.
- Cegah replay dan pencabutan: simpan
jtiyang sudah dicabut, dan batasi frekuensi panggilan per agen. - Validasi argumen: skema ketat untuk tiap tool, karena scope yang benar tidak menolong bila argumennya berbahaya (misalnya kueri SQL bebas).
- Isolasi output antaragen: perlakukan keluaran agen berprivilese rendah sebagai masukan tidak tepercaya bagi agen lain untuk membatasi cascading compromise.
- Konsensus untuk aksi kritis: untuk sistem berisiko tinggi, kombinasikan persetujuan manusia dengan kesepakatan lebih dari satu agen atau pemeriksa independen.
- Uji di lingkungan terisolasi: jalankan skenario red team, termasuk prompt injection, di sandbox sebelum agen menyentuh data produksi.
Sudut Pandang Hukum dan Kepatuhan di Indonesia
Bagi organisasi Indonesia, jejak audit bukan sekadar praktik baik. Bila agen AI menyebabkan kegagalan pelindungan data pribadi, Pasal 46 UU PDP No. 27 Tahun 2022 mewajibkan pemberitahuan tertulis kepada subjek data dan lembaga paling lambat 3x24 jam. Anda tidak dapat memenuhi tenggat itu bila tidak tahu data apa yang disentuh agen, kapan, dan atas dasar apa. Log yang lengkap dan tahan-ubah adalah fondasi investigasi tersebut. Ingat pula tenggat kepatuhan PP 33/2026 pada 16 Januari 2027 yang sudah kami bahas di artikel sebelumnya. Dari sisi pelaku eksternal, akses tanpa hak terhadap sistem melalui agen yang dibajak dapat masuk ranah Pasal 30 UU ITE. Untuk kepatuhan yang jelas, tinjau desain ini bersama penasihat hukum dan pejabat pelindungan data Anda, karena artikel ini bukan nasihat hukum.
Sebagai kerangka tata kelola, pendekatan ini selaras dengan fungsi Govern, Map, Measure, dan Manage dalam NIST AI RMF serta kontrol manajemen sistem AI dalam ISO/IEC 42001.
Penutup
Panduan lima negara tadi mengingatkan bahwa masalah agen AI bukan hanya soal kecerdasan model, melainkan soal tata kelola akses dan akuntabilitas. Gerbang tool dengan kredensial berumur pendek, scope minimal, persetujuan manusia yang ditegakkan kode, dan jejak audit berantai hash menerjemahkan prinsip tersebut menjadi komponen konkret yang dapat dibangun tim Anda dalam hitungan hari. Mulailah dari satu agen berisiko rendah, ukur apa yang ditolak gerbang, lalu perluas secara bertahap. Tim Siberindo siap membantu menilai kesiapan keamanan agen AI dan merancang arsitektur kontrol akses serta forensik log untuk organisasi Anda.
Sumber rujukan: CISA/NSA dan mitra Five Eyes, "Careful Adoption of Agentic AI Services" (2026); CyberScoop; Reed Smith; Cloud Security Alliance Labs.

