0Pricing
AI Agents · Pelajaran

Kontrol Akses pada Alat

Alat harus memeriksa bahwa pengguna (bukan hanya agen) memiliki otorisasi — agen bukanlah prinsipal.

Kontrol Akses pada Alat adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Alat Bukan Prinsipal

Model "memanggil alat", tetapi ACTION yang sebenarnya dilakukan oleh kode Anda. Pengguna — bukan agen — adalah prinsipal yang izinnya harus diperhatikan.

Berikan otorisasi berdasarkan identitas USER, jangan hanya karena "agen memutuskan demikian".

Authorise at the Tool Boundary

def refund_order(order_id, *, user):
    order = db.get_order(order_id)
    if order.customer_id != user.id and not user.is_staff:
        raise PermissionError(f'User {user.id} cannot refund order {order_id}')
    return stripe.refund(order.payment_id)

Teruskan Konteks Pengguna

Teruskan objek pengguna ke setiap pemanggilan alat:

def dispatch(tool_call, user):
    args = json.loads(tool_call.function.arguments)
    fn = TOOLS[tool_call.function.name]
    return fn(**args, user=user)

Izin per Alat

Tentukan alat yang boleh digunakan oleh setiap peran:

ROLE_TOOLS = {
    'customer': ['search_orders', 'open_ticket'],
    'support': ['search_orders', 'refund_order', 'cancel_order'],
    'admin': ['*']
}

visible_tools = [t for t in ALL_TOOLS if t.name in ROLE_TOOLS[user.role] or 'admin' in ROLE_TOOLS[user.role]]

Membatasi Cakupan Akses Data

Alat yang melakukan kueri ke basis data harus secara otomatis membatasi cakupannya berdasarkan pengguna:

def search_orders(query, user):
    # NEVER let the model bypass this WHERE clause
    return db.query('SELECT * FROM orders WHERE customer_id = %s AND ...', (user.id,))

Audit Setiap Pemanggilan Alat

Catat: siapa, apa, kapan, dengan argumen apa, dan hasilnya. Ini adalah jejak forensik Anda ketika terjadi kesalahan:

audit_log({
    'user_id': user.id,
    'tool': tool_name,
    'args': args,
    'result_status': result.status,
    'timestamp': now()
})

Konfirmasi Tindakan Destruktif

Bahkan untuk pengguna yang memiliki otorisasi, periksa kembali operasi destruktif:

def delete_account(user_id, confirmed=False, user=None):
    if not confirmed:
        return {'requires_confirmation': True, 'msg': 'Confirm deletion of account.'}
    db.execute('DELETE ...', (user_id,))

Alat OAuth / Bertoken Terbatas

Untuk agen yang bertindak atas nama pengguna dalam layanan eksternal, batasi cakupan token OAuth secara ketat:

# Token only has gmail.send scope, not gmail.read
send_email = build_with_token(user_token_scoped_send)

Batas Akun Layanan

Akun layanan milik agen harus memiliki izin seminimal mungkin:

  • Pengguna basis data hanya-baca untuk alat analitik
  • Bucket S3 per pelanggan
  • Jaringan yang diisolasi dengan VPC

Rate Limits Per Tool

def ratelimit(key, per_user_per_day=10):
    counts = {}
    def decorator(func):
        def wrapper(user_id, *args, **kwargs):
            counts.setdefault(user_id, 0)
            if counts[user_id] >= per_user_per_day:
                print(f'{key}: user {user_id} rate limited')
                return None
            counts[user_id] += 1
            return func(user_id, *args, **kwargs)
        return wrapper
    return decorator

@ratelimit(key='tool:refund', per_user_per_day=2)
def refund_order(user_id, order_id):
    print(f'refunding order {order_id} for user {user_id}')
    return True

for i in range(3):
    refund_order('user1', f'order{i}')

Antarmuka Izin yang Terlihat oleh Pengguna

Tunjukkan kepada pengguna hal-hal yang dapat dilakukan agen atas nama mereka. Izinkan mereka mencabut izin per alat. Ini sangat penting untuk membangun kepercayaan.

Autentikasi Ulang untuk Tindakan Berisiko Tinggi

Pastikan alat sensitif memerlukan autentikasi baru (login terakhir < 5 menit):

if tool.is_sensitive and user.last_auth_age_seconds > 300:
    raise StaleAuthError('Please re-authenticate to perform this action.')

Uji Otorisasi Seperti Kode

Tulis pengujian yang memverifikasi "pengguna A tidak dapat mengembalikan dana pesanan pengguna B" — jangan pernah berasumsi bahwa kontrol akses berfungsi. Kontrol akses adalah sumber nomor satu bug keamanan agen.

Prinsip Otorisasi

Izin siapa yang diperiksa ketika agen memanggil alat?

Ringkasan

Pengguna adalah prinsipal. Teruskan identitas pengguna ke setiap alat. Batasi cakupan data berdasarkan pengguna. Audit setiap pemanggilan. Konfirmasi operasi destruktif. Uji otorisasi seperti Anda menguji kode.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kontrol Akses pada Alat” gratis?

Ya — teks lengkap “Kontrol Akses pada Alat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kontrol Akses pada Alat”?

Alat harus memeriksa bahwa pengguna (bukan hanya agen) memiliki otorisasi — agen bukanlah prinsipal. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Kontrol Akses pada Alat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?

Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pertahanan terhadap Injeksi Prompt
  2. Pemfilteran Keluaran (Llama Guard, NeMo)
  3. Eksekusi Terisolasi untuk Agen Kode
  4. Kontrol Akses pada Alat
← Kembali ke AI Agents