Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
MXC memisahkan intensi workload dari mekanisme platform yang menjalankan beban kerja. Aplikasi host Anda menggunakan SDK .NET, TypeScript, atau Rust untuk menjelaskan izin sumber daya dan meminta agar eksekusi dijalankan. MXC menerjemahkan permintaan ke dalam operasi backend containment pada host saat ini.
Desain ini memberi aplikasi antarmuka integrasi yang konsisten tanpa mengklaim bahwa setiap backend menyediakan kemampuan atau properti isolasi yang sama.
Lapisan arsitektur
Integrasi MXC memiliki empat lapisan utama:
| Lapisan | Tanggung Jawab |
|---|---|
| Aplikasi host atau runtime agen | Mengklasifikasikan tugas, memilih default kebijakan tepercaya, menyediakan input, dan menangani output dan persetujuan |
| MXC SDK dan kontrak kebijakan | Menemukan dukungan, mengonversi niat beban kerja menjadi konfigurasi versi, memulai sandbox, dan menyediakan informasi siklus hidup dan diagnostik |
| Lapisan eksekusi MXC | Memeriksa keabsahan konfigurasi, menentukan backend, dan menerjemahkan kontrak yang didukung sistem ke operasi platform |
| Backend containment | Membuat lingkungan eksekusi dan menerapkan fitur kebijakan yang didukung platform dan backend |
Aplikasi host tetap bertanggung jawab atas keputusan kebijakan. Agen pengkodian dapat menyarankan model atau pemberian sumber daya, tetapi tidak boleh memilih atau memperluas otoritasnya sendiri tanpa logika tepercaya atau persetujuan manusia. Kode yang dijalankan host di luar MXC tetap berada di luar isolasi beban kerja.
Pengaturan kebijakan, konfigurasi, dan pengaturan runtime
Kebijakan ini menjelaskan apa yang boleh diakses beban kerja. Permintaan eksekusi menambahkan apa yang harus dijalankan, tempat menjalankannya, dan containment mana yang akan digunakan. Pengaturan runtime menyediakan nilai yang diperlukan untuk eksekusi, seperti titik akhir proksi yang sudah berjalan.
SDK V1 membawa pengaturan ini dalam satu ContainerRequest. Properti filesystem, jaringan, dan UI-nya menjelaskan akses, dan perintahnya, direktori kerja, lingkungan, batas waktu, dan properti pengurungannya menjelaskan eksekusi. SDK mengonversi permintaan ke kontrak skema stabil 1.0.0, sehingga Anda tidak perlu menentukan versi skema.
Konfigurasi eksekusi JSON tidak dapat dipertukarkan dengan objek SDK yang diserialkan. Misalnya, properti timeoutMs dan ui.allowInputInjection dari permintaan sesuai dengan setelan ui.injection dan process.timeout dari konfigurasi. Gunakan jenis SDK, atau skema untuk versi konfigurasi yang Anda buat.
Siklus hidup sekali jalan dan peka terhadap status
MXC mendukung dua pola siklus hidup.
Eksekusi sekali jalan membuat sandbox, menjalankan satu beban kerja, dan menghapus sandbox. Gunakan untuk alat agen pengodean independen, perintah yang dihasilkan, build, pengujian, dan skrip. Sandbox sempit baru untuk setiap tindakan membatasi keadaan yang dipertahankan dan mengurangi tekanan untuk membuat satu kebijakan yang luas.
Eksekusi yang sadar status mengekspos lima fase: provisi, mulai, jalankan, hentikan, dan deprovisi. Provisioning mengembalikan opaque ContainerId, yang diteruskan oleh pemanggil tanpa perubahan ke fase selanjutnya, dan pemanggil dapat menjalankan beberapa perintah sebelum melakukan teardown. Gunakan pola ini hanya ketika beban kerja bergantung pada state persisten, seperti profil agen, alat yang diinstal, konfigurasi, atau lingkungan sistem operasi. Di MXC 1.0, API siklus hidup V1 SDK mendukung IsolationSession dan WSLc.
Eksekusi yang memahami status tidak menjadikan MXC sebagai pemilik status. Backend memiliki sumber daya kotak pasir, dan pemanggil menyimpan pengidentifikasinya dan mengelola siklus hidupnya. Menghentikan eksekusi dan mendeprovisi sumber daya adalah operasi yang berbeda; persis status mana yang bertahan dari pemberhentian tergantung pada backend.
Menjalankan, spawn, dan eksekusi PTY menjelaskan bagaimana host Anda berinteraksi dengan proses yang sedang berjalan, bukan berapa lama lingkungan ada. Panggilan run mengembalikan output yang diambil saat eksekusi selesai. Panggilan spawn memberi host Anda stream stdin, stdout, dan stderr secara langsung saat beban kerja berjalan. Panggilan PTY menghubungkan workload ke pseudoterminal yang dikontrol host Anda, termasuk ukurannya. Periksa SDK dan backend yang dipilih untuk kombinasi yang didukung.
Tanggung jawab host
Atur batas waktu eksekusi dan tangani kegagalan beban kerja, kegagalan peluncuran, dan pembatalan secara terpisah. Membatalkan proses menunggu SDK belum tentu sama dengan menghentikan workload. Ikuti ketentuan penghentian dan pelepasan sumber daya SDK, dan selesaikan masa tunggu yang diperlukan sehingga eksekusi dan pencatatan penolakan opsional dapat diselesaikan.
Untuk eksekusi yang mengetahui status, atur pembersihan bahkan ketika fase selanjutnya gagal. Penghentian yang gagal seharusnya tidak mencegah upaya untuk mendeprovisi sumber daya yang dimiliki aplikasi Anda.
Pembongkaran kotak pasir umumnya tidak membatalkan penulisan ke direktori host yang diberi izin atau tindakan yang dilakukan melalui layanan jaringan yang diizinkan. Pilih lokasi output dengan sengaja, dan putuskan hasil mana yang akan dipertahankan sebelum tugas berikutnya menggunakannya.
Pilih jenis penampungan
Mulailah dengan tujuan dan batasan beban kerja Anda, misalnya:
| Kebutuhan beban kerja | Tipe awal | Mengapa |
|---|---|---|
| Perintah yang memerlukan alat dan jalur host yang dipilih dengan overhead startup rendah | Isolasi proses | Beroperasi dekat dengan lingkungan host dengan izin yang dibatasi untuk tugas tersebut |
| Beban kerja yang memerlukan profil Windows terpisah atau sesi interaktif | Isolasi sesi | Memisahkan status pengguna dan sesi beban kerja dari lingkungan pengguna interaktif, tanpa pemfilteran file MXC, jaringan, atau UI |
| Beban kerja yang memerlukan kernel terpisah atau lingkungan operasi tamu | Lingkungan tervirtualisasi | Menggunakan batas VM atau micro-VM, tunduk pada kemampuan backend yang dipilih |
Pada Windows, isolasi proses adalah jenis umum karena cocok dengan banyak beban kerja yang membutuhkan sumber daya host yang dipilih dengan biaya startup yang rendah.
Isolasi sesi memisahkan pengguna dan sesi, tetapi tidak membatasi apa yang dapat diakses beban kerja. Pada Windows, IsolationSession menolak kebijakan sistem file dan UI. Permintaannya juga harus mengatur egress, ingress, dan host loopback ke allow, tanpa aturan jaringan atau proksi. Jika beban kerja memerlukan pembatasan tersebut, pilih backend yang dapat memberlakukannya. Untuk detailnya, lihat Pilihan dan pengaturan backend.
Intent abstrak, seperti process, memungkinkan MXC menyelesaikan backend khusus platform. Pilih backend konkret saat Anda memerlukan lingkungan operasi atau siklus hidup tertentu. Perhatikan bahwa baik niat abstrak maupun mekanisme isolasi yang lebih kuat tidak menjamin dukungan untuk setiap kontrol file, jaringan, atau UI.
Lihat opsi containment MXC dan dukungan platform untuk panduan pemilihan dan tautan ke dokumentasi backend terperinci.
Mode Pembelajaran dalam arsitektur
Learning Mode membantu penulisan dan diagnostik kebijakan untuk beban kerja Windows ProcessContainer. Lihat Pembuatan dan penyempurnaan kebijakan MXC dengan Mode Pembelajaran.
Panduan desain untuk agen pemrograman
Saat menggunakan agen coding untuk membantu memilih jenis containment, mintalah agen tersebut untuk mengevaluasi:
- Sistem operasi dan arsitektur prosesor mana yang harus didukung aplikasi?
- File, jalur jaringan, fitur antarmuka pengguna, perangkat, dan alat host mana yang dibutuhkan workload?
- Apakah setiap perintah independen, atau harus identitas dan status bertahan di antara perintah?
- Waktu mulai, penggunaan sumber daya, penyebaran, dan batasan interaksi apa yang berlaku?
- Apakah beban kerja memerlukan Windows, Linux, desktop penuh, atau lingkungan operasi lainnya?
- Batas isolasi mana yang sesuai untuk asumsi kepercayaan dan data beban kerja?
- Fitur kebijakan mana yang diminta yang dapat diterapkan oleh masing-masing backend yang tersedia?
Agen harus membandingkan jenis containment yang layak, menyatakan asumsi dan tradeoff-nya, dan mengidentifikasi persyaratan yang tidak didukung. Anda kemudian dapat memilih jenis containment yang sesuai dan membangun kebijakan.
Konten terkait
Windows developer