GatewayScript sandbox
- Tidak ada require/import user.
- Tidak ada process.env.
- Tidak ada filesystem/child_process.
- Tidak ada fetch/network langsung.
- Tidak ada eval/Function.
- AST dibatasi dan node/function diperiksa sebelum runtime.
Trusted plugin boundary
Library eksternal dipasang admin/runtime, lalu plugin mendaftarkan capability. User hanya memanggil capability ID. Ini memisahkan business logic tenant dari akses library/server.
Credential boundary
GatewayScript hanya menyebut alias credential. Secret baru didekripsi backend ketika capability trusted menjalankan request untuk user tersebut.
Media boundary
Inbound media menggunakan signed opaque ref `wam_...`; output temporary menggunakan `med_...`. User script tidak mendapat path filesystem atau raw Buffer.
Network boundary
HTTP keluar dilakukan melalui Integration policy. Normal tenant tidak dapat menggunakan script untuk mengakses metadata endpoint/private network. Trusted admin local integration memiliki policy terpisah dan diverifikasi server-side.
Operational practice
- Jangan log credential/PII yang tidak diperlukan lewat `log()`.
- Gunakan integration/capability scope paling sempit.
- Gunakan processing feedback tanpa membocorkan detail internal.
- Batasi retention media temporary dan audit plugin yang dipasang admin.