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.
sandbox Microsoft Execution Containers (MXC) menolak secara default, sehingga workload dalam kontainer hanya dapat menggunakan file, kemampuan, dan sumber daya lain yang diizinkan oleh kebijakannya.
Namun, mungkin sulit untuk memprediksi semua sumber daya yang mungkin perlu diakses oleh beban kerja. MXC Learning Mode membantu Anda membuat kebijakan hak istimewa paling sedikit pada Windows dengan merekam sumber daya yang coba diakses oleh beban kerja, sehingga Anda dapat membuat atau memperbaiki kebijakan dari bukti alih-alih percobaan dan kesalahan.
Note
Mode Pembelajaran saat ini tersedia untuk beban kerja yang berjalan di ProcessContainer MXC pada Windows. Gunakan penemuan runtime untuk mengonfirmasi dukungan ProcessContainer pada host.
Pilih perilaku mode pembelajaran
Mode Pembelajaran memiliki dua cara kerja. Perbedaannya terletak pada apakah MXC terus memberlakukan kebijakan saat mencatat akses, yang menentukan siapa yang harus menggunakan masing-masing opsi dan kapan.
| Karakteristik | Tolak dan rekam | Izinkan dan catat |
|---|---|---|
| Akses ditolak | Diblok dan direkam | Diizinkan dan direkam |
| Penegakan kebijakan | Diberlakukan, tetapi capture dapat mengubah tingkat isolasi | Kebijakan deny-by-default dilonggarkan untuk proses run |
| Pengguna umum | Pengembang aplikasi dan penulis kebijakan | Admin dan pengembang TI yang mengevaluasi beban kerja yang ada |
| Kapan harus menggunakannya | Saat Anda mengembangkan aplikasi dan kebijakannya | Sebelum ada kebijakan, pelajari apa yang diakses oleh beban kerja tepercaya |
Tangkap mode nilai |
block (standar) |
allow |
Tolak dan rekam: pengembangan aplikasi dan kebijakan
Gunakan deny and record (learningModeLogging) saat Anda mengembangkan aplikasi atau agen dan kebijakan MXC-nya. MXC terus memberlakukan kebijakan saat merekam, sehingga akses yang tidak diizinkan gagal sebagaimana mestinya bagi pengguna Anda. Mode Pembelajaran menambahkan catatan untuk setiap akses yang diblokir kebijakan. Pada beberapa host, capture mengubah tingkat isolasi yang dipilih MXC. Untuk detailnya, lihat Rencana prasyarat pengambilan.
Penggunaan umum meliputi:
- Mendiagnosis mengapa workload dalam kontainer gagal, dan membedakan izin yang tidak ada dari kesalahan yang tidak terkait.
- Iterasi pada kebijakan draf hingga skenario yang didukung berhasil dan pengujian negatif masih gagal.
- Mengidentifikasi kemampuan yang diminta workload.
- Memungkinkan pengguna aplikasi Anda menyetel sandbox mereka sendiri. Aplikasi Anda mencatat apa yang diblokir, menyajikannya di antarmuka penggunanya sendiri, dan meregenerasi kebijakan hanya setelah pengguna menyetujui perubahan.
Karena MXC terus memberlakukan kebijakan, tolak dan rekam adalah pilihan yang lebih aman. Gunakan itu setiap kali Anda memiliki kebijakan untuk diuji, bahkan yang belum lengkap.
Izinkan dan catat: evaluasi beban kerja yang ada sebelum Anda membuat kebijakan
Gunakan izinkan dan rekam (permissiveLearningMode) saat Anda perlu mempelajari apa yang diakses oleh beban kerja tepercaya yang sudah ada sebelum menerapkan kebijakan MXC ke dalamnya. Misalnya, admin TI dapat menjalankan aplikasi bisnis khusus atau skrip untuk menjalankan tugas-tugas yang biasanya pada perangkat pengujian, lalu menggunakan hasilnya untuk membuat kebijakan dasar sebelum mengaktifkan penerapan. Pengembang yang membawa alat yang ada ke MXC dapat menggunakan pendekatan yang sama untuk menyusun kebijakan pertama.
Izinkan dan catat pelonggaran penerapan kebijakan tolak bawaan untuk eksekusi, jadi perlakukan beban kerja seolah-olah berjalan dengan izin penuh pengguna. MXC mencatat setiap akses yang seharusnya ditolak oleh kebijakan. Setiap kali mode ini aktif, MXC juga mengembalikan peringatan keamanan dengan hasil eksekusi. Host Anda harus memunculkan peringatan itu daripada membuangnya.
Sebelum Anda menggunakan Izinkan & Rekam:
- Jalankan hanya kode tepercaya, dengan data yang tidak sensitif representatif, pada perangkat atau akun pengujian terkontrol.
- Uji tugas khas beban kerja. Akses yang tidak dijalankan oleh sebuah run tidak muncul dalam hasil.
- Perlakukan hasilnya sebagai inventori awal. Hapus izin yang tidak perlu, lalu verifikasi kebijakan draf dengan deny and record sebelum Anda menyebarkannya.
Important
Jangan mengekspos Mode Pembelajaran "allow-and-record" sebagai alat produksi yang dapat dipanggil agen. Kode host tepercaya atau seseorang harus menyetujui penggunaan kode tersebut dan setiap perluasan izin yang diakibatkannya.
Rencana prasyarat pengambilan
MXC mengumpulkan hasil Mode Pembelajaran melalui salah satu dari dua jalur pengambilan. Ini memilih jalur pada waktu proses, berdasarkan host dan kebijakan yang diminta. Ini berlaku untuk captureDenials dalam mode apa pun dan pada alur kerja wxc-exec.exe --audit.
| Jalur tangkapan | Saat MXC menggunakannya | Tingkat isolasi | Ketinggian |
|---|---|---|---|
| Perekaman native | Windows menyediakan lingkungan keamanan proses dan API Learning Mode yang dibutuhkan MXC, dan lingkungan serta API tersebut dapat mewakili kebijakan yang diminta | BaseContainer | None |
| Pengambilan terlindungi | Penangkapan native tidak tersedia atau tidak dapat mewakili kebijakan yang diminta | Tingkat AppContainer yang kompatibel | MXC memulai pembantu yang ditandatangani, plm.exe, dengan elevasi untuk merekam jejak Windows Performance Recorder (WPR). Pengguna harus menyetujui permintaan UAC atau memberikan kredensial administrator. |
native capture tidak dapat mewakili beberapa kebijakan, seperti processContainer.leastPrivilege, beberapa konfigurasi proksi jaringan, dan jalur yang ditolak pada host yang tidak mendukungnya secara native. Permintaan tersebut menggunakan guarded capture bahkan pada host yang mendukung native capture. Jika tidak ada jalur yang dapat mempertahankan kebijakan penuh, MXC mengembalikan kesalahan alih-alih melemahkan kebijakan atau melewatkan pengambilan.
Untuk mengetahui jalur mana yang akan digunakan permintaan, probe permintaan dengan pengambilan diaktifkan sebelum Anda meluncurkannya. Probe tidak membuat kontainer.
| SDK | Call | Hasil yang perlu diperiksa |
|---|---|---|
| .NET | MxcContainer.Probe(request) |
Tier, Probes.NativeCaptureAvailable, Probes.GuardedCaptureAvailable |
| TypeScript | probe(request) |
tier, probes.nativeCaptureAvailable, probes.guardedCaptureAvailable |
| Rust | v1::probe(Some(&request)) |
tier, probes.native_capture_available, probes.guarded_capture_available |
Tingkat BaseContainer berarti perekaman native. Tingkat AppContainer berarti guarded capture dan permintaan elevasi. Fakta pengambilan native merujuk ke host, bukan permintaan Anda, jadi periksa tingkat juga.
Perhitungkan perbedaan ini:
- Di aplikasi, lakukan pemeriksaan sebelum Anda mulai perekaman, dan beri tahu pengguna saat perekaman memerlukan persetujuan administrator. Jangan berasumsi bahwa capture berjalan secara senyap di setiap host.
- Saat admin TI mengevaluasi beban kerja, konfirmasikan bahwa perangkat pengujian mendukung perekaman native atau bahwa administrator dapat menyetujui prompt guarded capture. Tingkat AppContainer juga dapat memerlukan persiapan host.
- Perlakukan hasil pengambilan sebagai bukti untuk penulisan kebijakan. Karena guarded capture dapat menjalankan beban kerja pada tingkat yang berbeda dari lingkungan produksi, konfirmasikan kebijakan akhir dengan proses yang tidak menggunakan capture.
Contoh: mengaktifkan pengambilan melalui MXC SDK
Gunakan capture SDK saat aplikasi Anda menjalankan workload. Untuk mengevaluasi beban kerja tanpa menulis kode host, lihat Menggunakan Mode Pembelajaran dari baris perintah.
Mulailah dengan panduan cepat SDK, termasuk kasus penolakan penulisan. Fragmen berikut memperluas contoh tersebut dan menggunakan beban kerja dan grant sumber daya yang sama. Sisipkan fragmen yang dipilih segera sebelum SDK meluncurkan beban kerja.
Contohnya menggunakan API SDK MXC 1.0 V1. Di setiap SDK, Anda mengonfigurasi capture pada pemilihan containment ProcessContainer yang eksplisit, yang menggantikan intent proses abstrak pada quickstart.
Buat direktori output milik host untuk capture. Ini tidak perlu dapat ditulis oleh workload di dalamnya.
Atur opsi capture pada containment ProcessContainer eksplisit permintaan:
string captureDirectory = Path.GetFullPath("captures");
Directory.CreateDirectory(captureDirectory);
request.Containment = new Containment.ProcessContainer
{
CaptureDenials = new CaptureDenialsPolicy
{
Mode = CaptureDenialsMode.Block,
OutputPath = Path.Combine(captureDirectory, "denials.json"),
},
};
Dalam block mode, kasus penulisan yang ditolak masih gagal. Mencatat penolakan tidak memberikan izin tulis. Untuk eksekusi allow-and-record yang disetujui, ubah hanya mode menjadi CaptureDenialsMode.Allow di C#, 'allow' di TypeScript, atau CaptureDenialsMode::Allow di Rust.
Saat mengadaptasi integrasi yang ada, pertahankan pengaturan containment lainnya. Gunakan opsi pengambilan khusus, bukan nama kemampuan internal learningModeLogging atau permissiveLearningMode yang dicadangkan.
Temukan hasil tangkapan yang telah selesai
Tunggu hingga eksekusi dan penyelesaian perekaman selesai sebelum membaca hasilnya. MXC menyisipkan pengidentifikasi eksekusi unik ke dalam nama file yang dikonfigurasi, jadi denials.json menjadi nama seperti denials.<run-id>.json. Gunakan path yang dilaporkan alih-alih menebaknya atau memindai untuk mencari file terbaru.
Setelah MxcContainer.RunAsync(request) selesai dan Anda melaporkan result.Warnings, periksa metadata hasil:
if (result.OutputMetadata?.CaptureDenialsError is { } captureError)
{
Console.Error.WriteLine($"Denial capture failed: {captureError.Message}");
return 1;
}
if (result.OutputMetadata?.CaptureDenials is not { } capture)
{
Console.Error.WriteLine("The run did not produce denial capture metadata.");
return 1;
}
Console.WriteLine($"Denial document: {capture.OutputPath}");
Console.WriteLine($"Unique denials: {capture.TotalDenials}");
if (capture.DeniedResourcesTruncated)
{
Console.Error.WriteLine("The capture is incomplete; don't generate a policy from this run.");
return 1;
}
Pertahankan penanganan di panduan mulai cepat untuk status keluar, batas waktu, dan result.Warnings. Secara khusus, SDK .NET mengembalikan peringatan tentang Mode Pembelajaran yang permisif alih-alih menuliskannya ke terminal Anda secara otomatis.
Jika Anda menggunakan eksekusi streaming, selesaikan penantian di terminal sebelum memeriksa MxcProcess.OutputMetadata. Membuang proses tanpa menunggu bukanlah pengganti untuk finalisasi capture.
Baca output penolakan
Dokumen JSON yang dapat ditindaklanjuti mengidentifikasi sumber daya, akses yang dicoba, dan ringkasan. Untuk kasus denied-write pada quickstart, entri perwakilan terlihat seperti:
{
"denials": [
{
"resource": "C:\\src\\MxcQuickstart\\workspace\\input\\blocked.txt",
"resourceType": "file",
"accessType": "write",
"pid": 1234,
"filetime": "132847890123456789"
}
],
"summary": {
"exitCode": 1,
"totalDenials": 1,
"deniedResourcesTruncated": false
}
}
Dokumen adalah bukti untuk penulisan kebijakan, bukan log lengkap dari semua yang dilakukan workload. Nilai resourceType menentukan cara membaca resource. Misalnya, file entri berisi jalur absolut, dan capability entri berisi nama kemampuan seperti internetClient. Beberapa pengamatan tidak dapat dinyatakan sebagai grant kebijakan, dan satu input tidak akan menjalankan setiap jalur kode.
Dalam mode allow, dokumen saat ini tidak menyertakan capability request. Jalankan beban kerja dengan deny and record untuk mengidentifikasi kemampuan yang dibutuhkan.
Jika deniedResourcesTruncated adalah true, jangan buat kebijakan dari eksekusi tersebut. Dokumen kosong juga tidak membuktikan bahwa workload aman atau bahwa setiap pembatasan yang dimaksudkan diterapkan.
MXC juga menulis file verbose di samping dokumen yang dapat ditindaklanjuti. Misalnya, denials.<run-id>.json menghasilkan denials.<run-id>.verbose.json. File verbose adalah catatan diagnostik yang dibatasi dan diredaksi yang menyertakan pengamatan yang tidak dapat ditindaklanjuti oleh kebijakan MXC, seperti penulisan registri. Metadata output tidak melaporkan jalurnya, jadi simpulkan dari jalur dokumen yang dapat ditindaklanjuti. Gunakan file verbose untuk menyelidiki kegagalan yang tidak dijelaskan oleh dokumen tindakan, bukan sebagai daftar izin.
Membedakan penolakan dari kegagalan lain
| Hasil | Apa yang harus dilakukan |
|---|---|
| MXC menolak konfigurasi | Periksa skema, kombinasi bidang, dan backend yang dipilih. Jangan berikan lebih banyak akses untuk menyiasati permintaan yang tidak valid. |
| Fitur backend atau capture tidak tersedia | Periksa informasi dukungan dan catat prasyarat. Jangan nonaktifkan pembatasan yang diperlukan secara diam-diam. |
| Beban kerja gagal saat penegakan diterapkan | Tinjau status keluar, output kesalahan, dan rekaman penolakan yang telah selesai. Kegagalan workload belum tentu merupakan penolakan sumber daya. |
| Perekaman gagal atau tidak lengkap | Perlakukan bukti sebagai tidak tersedia atau tidak lengkap, bahkan jika workload selesai dengan sukses. |
Penangkapan terstruktur mengumpulkan dokumen yang dapat ditindaklanjuti. Pengaturan ProcessContainer learningMode tingkat bawah memungkinkan perekaman peristiwa penolakan-dan-pencatatan, tetapi tidak dengan sendirinya mengumpulkan dokumen ini. Gunakan capture ketika host perlu memproses bukti.
Meninjau akses yang dipantau
Klasifikasikan setiap hasil sebelum Anda mengubah kebijakan. Contohnya:
| Temuan | Tindakan potensial |
|---|---|
| File input yang diperlukan | Tambahkan jalur baca-saja tersempit yang mencakupnya |
| Output atau cache yang diperlukan | Tambahkan jalur baca-tulis khusus tugas |
| Kredensial atau file pengguna yang tidak terkait | Biarkan tetap ditolak dan ubah beban kerja jika perlu |
| Direktori induk umum | Identifikasi jalur turunan yang diperlukan alih-alih memberikan izin ke jalur induk |
| Permintaan jaringan, UI, atau kapabilitas yang tidak terduga | Verifikasi alasan beban kerja memerlukannya sebelum memberikan akses |
| Sumber daya yang tidak dapat dinyatakan MXC dalam kebijakan | Ubah beban kerja atau pilih backend yang dapat memberlakukan persyaratan |
Akses yang teramati dapat berasal dari startup, penemuan, fitur opsional, penanganan kesalahan, atau input tertentu yang digunakan dalam satu eksekusi. Jangan menganggap bahwa setiap permintaan itu perlu. Dalam pengujian negatif pada quickstart, penulisan yang ditolak adalah hasil yang dimaksudkan, bukan izin yang hilang.
Contoh: gunakan Mode Pembelajaran dari baris perintah
Untuk mengevaluasi beban kerja tanpa menulis kode host, jalankan menggunakan alat baris perintah wxc-exec.exe dan konfigurasi JSON. Untuk format konfigurasi, lihat Menyusun dan memvalidasi kebijakan MXC.
Menginstal paket MXC SDK tidak menambahkan wxc-exec.exe ke PATH Anda. Unduh mxc-release-binaries.zip dari rilis MXC yang cocok dengan versi SDK Anda, dan jalankan alat dengan jalur lengkapnya. Contoh berikut mengasumsikan bahwa Anda mengekstrak arsip ke C:\Tools\Mxc dan menggunakan x64 folder . Pada perangkat Arm64, gunakan arm64 folder .
Tangkap dengan salah satu mode
Pilih Kontainer ProcessContainer dan tambahkan captureDenials ke bagian konfigurasi processContainer . Misalnya, admin TI yang mengevaluasi beban kerja yang belum memiliki kebijakan dapat menggunakan mode allow:
{
"$schema": "https://raw.githubusercontent.com/microsoft/mxc/main/schemas/stable/mxc-config.schema.1.0.0.json",
"version": "1.0.0",
"containment": "processcontainer",
"process": {
"commandLine": "C:\\Tools\\Contoso\\ReportTool.exe"
},
"processContainer": {
"captureDenials": {
"mode": "allow",
"outputPath": "C:\\MxcAudit\\denials.json"
}
}
}
Buat direktori output sebelum menjalankan, lalu teruskan file konfigurasi ke alat:
C:\Tools\Mxc\x64\wxc-exec.exe audit-config.json
Setelah proses dijalankan, wxc-exec menulis satu baris JSON ke kesalahan standar dengan jalur output aktual dan ringkasan:
{"type":"captureDenials","outputPath":"C:\\MxcAudit\\denials.<run-id>.json","exitCode":0,"totalDenials":2,"deniedResourcesTruncated":false}
Gunakan path yang dilaporkan untuk membaca dokumen. Untuk memverifikasi kebijakan draf yang sedang diberlakukan, tambahkan grant Anda ke konfigurasi dan ubah mode menjadi block.
Mengusulkan konfigurasi yang disesuaikan
Untuk penulisan kebijakan berbasis pengembang, alur kerja audit menjalankan proses allow-and-record dan juga mengusulkan konfigurasi yang direvisi:
C:\Tools\Mxc\x64\wxc-exec.exe --audit --config <path-to-config>
Alur kerja audit menulis dokumen penolakan, file pelacakan, rekam jepret konfigurasi sumber, dan file Adjusted_*.json yang menggabungkan akses yang diamati ke dalam konfigurasi tersebut. Konfigurasi yang disesuaikan adalah proposal untuk ditinjau, bukan kebijakan yang disetujui. MXC tidak menghasilkannya ketika tangkapan terpotong, dan tangkapan SDK tidak menghasilkannya sama sekali.
Alur kerja audit hanya mendukung ProcessContainer. Jangan gabungkan --audit dengan setelan processContainer.captureDenials yang eksplisit. Untuk kontrak CLI dan SDK lengkap, lihat kapabilitas Learning-mode di GitHub.
Selesaikan siklus pembelajaran
Gunakan alur kerja ini untuk berpindah dari penemuan ke kebijakan penegakan:
- Pilih containment model sebelum Anda mengaktifkan Mode Pembelajaran.
- Jika beban kerja belum memiliki kebijakan dan Anda tidak dapat menulis kebijakan yang spesifik secara langsung, jalankan dengan allow dan record di lingkungan terkontrol. Lakukan tugas-tugas khasnya.
- Rumuskan kebijakan yang spesifik berdasarkan bukti, dan hapus izin yang luas dan tidak terkait.
- Jalankan beban kerja di bawah kebijakan draf dengan deny and record, dan atasi penolakan yang tersisa, termasuk kapabilitas yang diperlukan.
- Ulangi dengan keberhasilan, kegagalan, dan input edge-case yang representatif.
- Hapus semua pengaturan pembelajaran, perekaman, dan audit, dan jalankan uji penerapan terakhir. Capture dapat mengubah tingkat isolasi yang dipilih MXC, sehingga eksekusi ini mengonfirmasi bagaimana kebijakan berperilaku dalam produksi.
Hentikan perluasan akses saat beban kerja yang didukung berhasil dan pengujian negatif masih gagal seperti yang dimaksudkan.
Agen pengodean dapat membantu menjelaskan pengamatan, tetapi pastikan Anda meninjau dan menyetujui perubahan apa pun pada kebijakan akses sumber daya.
Konten terkait
Windows developer