Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft Yürütme Kapsayıcıları (MXC) korumalı alanları varsayılan olarak engelleme esaslıdır, böylece kapsanan bir iş yükü yalnızca ilkesinin verdiği dosyaları, özellikleri ve diğer kaynakları kullanabilir.
Ancak, bir iş yükünün erişmesi gerekebilecek tüm kaynakları tahmin etmek zor olabilir. MXC Öğrenme Modu, bir iş yükünün erişmeye çalıştığı kaynakları kaydederek Windows'ta en az ayrıcalık ilkesine dayalı bir ilke oluşturmanıza yardımcı olur; böylece deneme yanılma yerine kanıtlara dayanarak bir ilke oluşturabilir veya bunu geliştirebilirsiniz.
Note
Öğrenme Modu şu anda Windows üzerinde bir MXC ProcessContainer'da çalışan iş yükleri için kullanılabilir. Ana makinede ProcessContainer desteğini onaylamak için çalışma zamanı keşfi özelliğini kullanın.
Öğrenme Modu davranışı seçme
Öğrenme Modu'nun iki davranışı vardır. Birbirlerinden, MXC'nin erişimi kaydederken ilkeyi zorunlu kılmaya devam edip etmediği konusunda farklılık gösterirler. Bu, hangisini kimin ne zaman kullanması gerektiğini belirler.
| Characteristic | Reddet ve kaydet | İzin ver ve kaydet |
|---|---|---|
| Verilmemiş erişim | Engellendi ve kaydedildi | İzin verilen ve kaydedilen |
| İlke uygulama | Zorunlu, ancak yakalama yalıtım katmanını değiştirebilir | Çalıştırma için varsayılan reddetme gevşetildi |
| Tipik kullanıcılar | Uygulama geliştiricileri ve politika yazarları | MEVCUT iş yüklerini değerlendiren BT yöneticileri ve geliştiriciler |
| Ne zaman kullanılır? | Bir uygulama ve politikası geliştirirken | Bir ilke mevcut olmadan önce, güvenilen iş yükünün neye eriştiğini öğrenin. |
| Değeri yakala |
block (varsayılan) |
allow |
Reddet ve kaydet: uygulamalar ve ilkeler geliştirme
Bir uygulama veya aracı ve MXC ilkesi geliştirirken reddetme ve kaydetme (learningModeLogging) kullanın. MXC, kaynak kaydı yaparken ilkeyi uygulamaya devam eder; bu nedenle izin verilmemiş erişim, kullanıcılarınız için olduğu gibi başarısız olur. Öğrenme Modu, ilkenin engellediği her erişimin kaydını ekler. Bazı ana bilgisayarlarda capture, MXC'nin seçtiği yalıtım düzeyini değiştirir. Ayrıntılar için bkz. Yakalama önkoşulları planı.
Yaygın kullanım alanları şunlardır:
- Kapsanan iş yükünün neden başarısız olduğunu tanılama ve eksik bir izni ilgisiz hatadan ayırt etme.
- Desteklenen senaryolar başarılı olana ve negatif testler başarısız olmaya devam edene kadar taslak ilke üzerinde yineleme yapmak.
- Bir iş yükünün istediği yetenekleri tanımlama.
- Uygulamanızın kullanıcılarının kendi sandbox’larını yapılandırmasına izin verme. Uygulamanız engellenenleri kaydeder, kendi kullanıcı arabiriminde sunar ve ilkeyi yalnızca kullanıcı onay verdikten sonra yeniden oluşturur.
MXC ilkeyi zorlamaya devam ettiğinden, engelle ve kaydet daha güvenli bir seçenektir. Test etmek için bir politikanız olduğunda, hatta tamamlanmamış bir politikanız olduğunda bu politikayı kullanın.
İzin ver ve kaydet: ilke oluşturmadan önce mevcut iş yüklerini değerlendirin
MXC ilkesini uygulamadan önce mevcut, güvenilen bir iş yükünün neye eriştiği hakkında bilgi edinmeniz gerektiğinde allow and record (permissiveLearningMode) kullanın. Örneğin, bir BT yöneticisi bir iş kolu aracını veya betiği bir test cihazında tipik görevleri üzerinde çalıştırabilir ve ardından zorlamayı açmadan önce bir temel ilke oluşturmak için sonuçları kullanabilir. Mevcut bir aracı MXC'ye getiren bir geliştirici, ilk politikayı taslak olarak oluşturmak için aynı yaklaşımı kullanabilir.
İzin ver ve kaydet, çalıştırma için varsayılan olarak reddetme zorlamasını rahatlatır, bu nedenle iş yükünü kullanıcının tam izinleriyle çalışıyor gibi değerlendirin. MXC, politikanın reddedeceği her erişimi kaydeder. Bu mod her etkin olduğunda, MXC çalıştırma sonucuyla birlikte bir güvenlik uyarısı da döndürür. Ana bilgisayarınız bu uyarıyı atmak yerine göstermelidir.
Allow and Record'u kullanmadan önce:
- Denetimli bir test cihazında veya hesapta yalnızca güvenilir kodu, temsili ve hassas olmayan verilerle çalıştırın.
- İş yükünün tipik görevlerini uygulayın. Bir çalıştırmanın kapsamadığı erişim sonuçlarda görünmez.
- Sonuçları başlangıç envanteri olarak kabul edin. Gereksiz izinleri kaldırın ve ardından dağıtmadan önce taslak ilkeyi engelleme ve kaydetme ile doğrulayın.
Important
İzin verme ve kaydetme Öğrenme Modu'nu ajan tarafından çağrılabilen bir üretim aracı olarak kullanıma sunmayın. Güvenilen konak kodu veya bir kişi, kullanımını ve sonuçta elde edilen izin genişletmelerini onaylamalıdır.
Yakalama önkoşulları planı
MXC, öğrenme modu sonuçlarını iki yakalama yolundan biriyle toplar. Ana makineye ve istenen ilkeye göre çalışma zamanında yolu seçer. Bu, her iki modda da wxc-exec.exe --audit için ve captureDenials iş akışı için geçerlidir.
| Yakalama konumu | MXC bunu kullandığında | Yalıtım katmanı | Elevation |
|---|---|---|---|
| Yerel kayıt | Windows, MXC'nin ihtiyaç duyduğu işlem güvenlik ortamını ve Öğrenme Modu API'lerini sağlar ve bunlar istenen ilkeyi temsil edebilir | BaseContainer | None |
| Korumalı çekim | Yerel yakalama özelliği kullanılamıyor veya istenen ilkeyi temsil edemiyor | Uyumlu bir AppContainer katmanı | MXC, Windows Performans Kaydedicisi (WPR) izlemesini kaydetmek için plm.exe imzalı bir yardımcıyı yükseltilmiş izinlerle başlatır. Kullanıcı bir UAC istemini onaylamalı veya yönetici kimlik bilgilerini sağlamalıdır. |
Yerel yakalama, processContainer.leastPrivilege gibi bazı ilkeleri, bazı ağ ara sunucusu yapılandırmalarını ve bunları yerel olarak desteklemeyen konaklardaki reddedilen yolları temsil edemez. Bu istekler, yerel yakalamayı destekleyen konaklarda bile korumalı yakalama kullanır. Hiçbir yol ilkenin tamamını koruyamıyorsa, MXC ilkeyi zayıflatmak veya yakalamayı atlamak yerine bir hata döndürür.
Bir isteğin hangi yolu kullanacağını öğrenmek için, başlatmadan önce yakalama etkin olarak isteği yoklayın. Prob bir kapsayıcı oluşturmaz.
| SDK | Call | Denetlenecek sonuçlar |
|---|---|---|
| .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 |
BaseContainer katmanı, yerel yakalama anlamına gelir. AppContainer katman, korumalı ekran yakalama ve yetki yükseltme istemi anlamına gelir. native capture fact, isteğinizi değil ana bilgisayarı tanımlar, bu nedenle düzeyi de denetleyin.
Bu farklılıklara göre plan yapın:
- Bir uygulamada, yakalamaya başlamadan önce yoklama yapın ve yakalamanın yönetici onayı gerektirdiğinde kullanıcılara bildirin. Yakalamanın her ana bilgisayarda sessizce çalıştığını varsaymayın.
- BT yöneticisi iş yüklerini değerlendirdiğinde, test cihazlarının yerel yakalamayı desteklediğini veya bir yöneticinin korumalı yakalama istemini onaylayabildiğini onaylayın. AppContainer katmanı, ana bilgisayar hazırlığı da gerektirebilir.
- Yakalama sonuçlarını ilke yazma için kanıt olarak değerlendirin. Korumalı yakalama, iş yükünü üretimden farklı bir katmanda çalıştırabildiğinden, nihai ilkeyi yakalama kullanmayan bir çalıştırmayla doğrulayın.
Örnek: MXC SDK'sı aracılığıyla yakalamayı etkinleştirme
Uygulamanız iş yükünü barındırırken SDK capture kullanın. Bir iş yükünü konak kodu yazmadan değerlendirmek için komut satırından Öğrenme Modu'nu kullanma bölümüne bakın.
yazma izninin reddedildiği durum da dahil olmak üzere SDK hızlı başlangıcıyla başlayın. Aşağıdaki parçalar bu örneği genişletir ve aynı iş yükünü ve kaynak tahsislerini kullanır. SDK iş yükünü başlatmadan hemen önce seçili parçayı ekleyin.
Örneklerde MXC 1.0 V1 SDK API'leri kullanılır. Her SDK'da, hızlı başlangıcın soyut işlem amacının yerini alan açık bir ProcessContainer kapsayıcı seçiminde capture'ı yapılandıracaksınız.
Yakalama için ana bilgisayara ait bir çıkış dizini oluşturun. Kapsanan iş yükü tarafından yazılabilir olması gerekmez.
İsteğin açık ProcessContainer kapsayıcısında yakalama seçeneklerini ayarlayın:
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"),
},
};
block modunda reddedilen yazma durumu hâlâ başarısız olur. Reddi algılamak yazma izni vermez. Onaylanan bir izin ver ve kaydet çalıştırması için modu yalnızca C# dilinde CaptureDenialsMode.Allow, TypeScript'te 'allow' veya Rust'ta CaptureDenialsMode::Allow olarak değiştirin.
Mevcut tümleştirmeyi uyarlarken diğer kapsama ayarlarını koruyun. Ayrılmış iç learningModeLogging veya permissiveLearningMode yetenek adlarını değil, özel yakalama seçeneklerini kullanın.
Tamamlanan yakalamayı bulun
Yürütmeyi ve yakalamanın tamamlanmasını sonucu okumadan önce bekleyin. MXC, yapılandırılan dosya adına benzersiz bir çalıştırma tanımlayıcısı ekler, böylece denials.json, denials.<run-id>.json gibi bir ada dönüşür. Bildirilen yolu, onu tahmin etmek veya en son dosyayı bulmak için tarama yapmak yerine kullanın.
result.Warnings tamamlandıktan ve MxcContainer.RunAsync(request) raporladıktan sonra sonuç meta verilerini inceleyin:
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;
}
Hızlı başlangıcın çıkış durumu, zaman aşımı ve result.Warnings işleme biçimini koruyun. Özellikle .NET SDK'sı, bunları terminalinize otomatik olarak yazmak yerine esnek Öğrenme Modu hakkında uyarılar döndürür.
Akış yürütmesi kullanıyorsanız, terminal beklemesini MxcProcess.OutputMetadata incelemeden önce tamamlayın. Beklemeden işlemi sonlandırma, yakalama sonlandırmasının yerini tutmaz.
Erişim reddi çıktısı
Eyleme dönüştürülebilir JSON belgesi kaynakları, erişim girişimini ve özeti tanımlar. Hızlı başlangıcın denied-write olayı için temsili bir giriş şöyle görünür:
{
"denials": [
{
"resource": "C:\\src\\MxcQuickstart\\workspace\\input\\blocked.txt",
"resourceType": "file",
"accessType": "write",
"pid": 1234,
"filetime": "132847890123456789"
}
],
"summary": {
"exitCode": 1,
"totalDenials": 1,
"deniedResourcesTruncated": false
}
}
Belge, iş yükünün yaptığı her şeyin kapsamlı bir günlüğü değil, ilke oluşturma için bir kanıttır.
resourceType değeri, resource nasıl okunacağını belirler. Örneğin, bir file girdi mutlak bir yol ve bir capability girdisi de internetClient gibi bir yetenek adı içerir. Bazı gözlemler ilke yetkilendirmeleri olarak ifade edilemez ve tek bir giriş her kod yolunu çalıştırmaz.
İzin modunda, belge şu anda yetenek istekleri içermiyor. İhtiyaç duyduğu özellikleri belirlemek için iş yükünü deny ve record ile çalıştırın.
Eğer deniedResourcesTruncatedtrue ise, bu çalıştırmadan bir ilke oluşturmayın. Boş bir belge ayrıca bir iş yükünün güvenli olduğunu veya hedeflenen her kısıtlamanın uygulandığını kanıtlamaz.
MXC, eyleme dönüştürülebilir belgenin yanına ayrıntılı bir dosya da yazar. Örneğin, denials.<run-id>.json, denials.<run-id>.verbose.json üretir. Ayrıntılı dosya, kayıt defteri yazma işlemleri gibi MXC ilkesinin işlem yapamadığı gözlemleri içeren sınırlanmış, sansürlenmiş bir tanılama kaydıdır. Çıktı meta verileri yolunu raporlamaz, bu nedenle bunu eyleme dönüştürülebilir belgenin yolundan türetin. Ayrıntılı dosyayı, eyleme dönüştürülebilir belgenin açıklamadığı bir hatayı araştırmak için kullanın (bir izinler listesi olarak değil).
Erişim reddini diğer hatalardan ayırt etme
| Outcome | Yapılması gerekenler |
|---|---|
| MXC yapılandırmayı reddeder | Şemayı, alan birleşimlerini ve seçili arka uç/back-end'i denetleyin. Geçersiz bir isteği aşmak için daha fazla erişim izni verme. |
| Backend veya capture özelliği kullanılamıyor | Destek bilgilerini inceleyin ve önkoşulları kaydedin. Gerekli bir kısıtlamayı sessizce devre dışı bırakma. |
| İş yükü zorunlu kılma altında başarısız oluyor | Çıkış durumunu, hata çıktısını ve tamamlanmış engelleme kaydını gözden geçirin. İş yükü hatasının kaynak yetersizliği olması şart değildir. |
| Yakalama başarısız veya eksik | İş yükü başarıyla sonlansa bile kanıtı kullanılamaz veya eksik olarak değerlendirin. |
Yapılandırılmış veri yakalama, işlenebilir belgeyi toplar. Alt düzey ProcessContainer learningMode ayarı, deny-and-record olaylarının kaydedilmesini sağlar, ancak bu belgeyi tek başına toplamaz. Ana bilgisayarın kanıtı kullanması gerektiğinde capture özelliğini kullanın.
Gözlemlenen erişimi inceleyin
İlkeyi değiştirmeden önce her sonucu sınıflandırın. Örneğin:
| Bulgu | Olası eylem |
|---|---|
| Gerekli bir giriş dosyası | Bunu kapsayan en dar salt okunur yolu ekleyin |
| Gerekli bir çıkış veya önbellek | Göreve özgü okuma-yazma yolu ekleyin |
| Kimlik bilgileri veya ilişkisiz kullanıcı dosyası | Reddedildi olarak bırakın ve gerekirse iş yükünü değiştirin |
| Genel bir üst dizin | Üst öğeye izin vermek yerine gerekli alt yolları belirleyin |
| Beklenmeyen bir ağ, kullanıcı arayüzü veya özellik isteği | Erişim vermeden önce iş yükünün buna neden ihtiyaç duyduğunu doğrulayın |
| MXC'nin politikada ifade edemiyebileceği bir kaynak | İş yükünü değiştirin veya gereksinimi uygulayabilen bir arka uç seçin |
Gözlemlenen erişim başlangıç, keşif, isteğe bağlı özellikler, hata işleme veya tek bir çalıştırmada kullanılan belirli girişten gelebilir. Her isteğin gerekli olduğunu varsaymayın. Hızlı başlangıcın negatif testinde, eksik izin değil hedeflenen sonuç, reddedilen yazma işlemidir.
Örnek: Komut satırından Öğrenme Modu'nu kullanma
Bir iş yükünü konak kodu yazmadan değerlendirmek için, onu wxc-exec.exe komut satırı aracı ve bir JSON yapılandırmasıyla çalıştırın. Yapılandırma biçimi için bkz. MXC ilkesi oluşturma ve doğrulama.
Bir MXC SDK paketini yüklemek, PATH öğesini wxc-exec.exe öğenize eklemez. SDK sürümünüzle eşleşen mxc-release-binaries.zip indirin ve aracı tam yolunu kullanarak çalıştırın. Aşağıdaki örneklerde, arşivi C:\Tools\Mxc'ye ayıkladığınız ve x64 klasörünü kullandığınız varsayılır. Arm64 cihazlarında arm64 klasörünü kullanın.
Her iki modla da yakalama
ProcessContainer kapsamını seçin ve processContainer yapılandırmanın captureDenials bölümüne ekleyin. Örneğin, henüz bir ilkesi olmayan bir iş yükünü değerlendiren BT yöneticisi modu allow kullanabilir:
{
"$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"
}
}
}
Çalıştırmadan önce çıkış dizinini oluşturun ve ardından yapılandırma dosyasını araca iletin:
C:\Tools\Mxc\x64\wxc-exec.exe audit-config.json
Çalıştırma tamamlandıktan sonra, wxc-exec gerçek çıkış yolu ve özet ile standart hataya bir JSON satırı yazar:
{"type":"captureDenials","outputPath":"C:\\MxcAudit\\denials.<run-id>.json","exitCode":0,"totalDenials":2,"deniedResourcesTruncated":false}
Belgeyi okumak için bildirilen yolu kullanın. Zorunlu kılınan bir taslak politikayı doğrulamak için, izinlerinizi yapılandırmaya ekleyin ve modu block olarak değiştirin.
Ayarlanmış bir yapılandırma önerin
Geliştirici odaklı ilke yazma için denetim iş akışı bir izin ver ve kaydet yakalama işlemi çalıştırır ve ayrıca düzeltilmiş bir yapılandırma önerir:
C:\Tools\Mxc\x64\wxc-exec.exe --audit --config <path-to-config>
Denetim iş akışı, reddetme belgelerini, izleme dosyasını, kaynak yapılandırmanın anlık görüntüsünü ve gözlemlenen erişimi bu yapılandırmayla birleştiren bir Adjusted_*.json dosyayı yazar. Ayarlanmış yapılandırma, gözden geçirme için bir tekliftir, onaylanmış politika değildir. Yakalama kesildiğinde MXC bunu üretmez ve SDK yakalaması ise bunu hiç üretmez.
Denetim iş akışı yalnızca ProcessContainer'ı destekler.
processContainer.captureDenials öğesini açık bir --audit ayarıyla birleştirmeyin. Tam CLI ve SDK sözleşmeleri için bkz. GitHub'da öğrenme modu özellikleri.
Öğrenme döngüsünü tamamlayın
Keşiften zorlayıcı ilkeye geçmek için bu iş akışını kullanın:
- Öğrenme Modu'nu etkinleştirmeden önce kapsama modelini seçin.
- İş yükünün henüz bir ilkesi yoksa ve doğrudan dar bir ilke yazamıyorsanız, izin verin ve denetimli bir ortamda kaydederek çalıştırın. Tipik görevlerini uygulayın.
- Kanıttan dar bir politika taslağı hazırlayın ve geniş ve ilgisiz izinleri kaldırın.
- İş yükünü reddet ve kaydet ile taslak ilkesi altında çalıştırın ve gerekli yetenekler de dahil olmak üzere kalan reddetmeleri çözün.
- Temsili başarı, başarısızlık ve kenar örneği girişleri ile tekrarlayın.
- Tüm öğrenme, yakalama ve denetim ayarlarını kaldırın ve son bir zorlama testini çalıştırın. Yakalama, MXC'nin seçtiği yalıtım katmanını değiştirebilir, bu nedenle bu çalıştırma ilkenin üretimde nasıl davrandığını onaylar.
Desteklenen iş yükü başarılı olduğunda ve negatif testler amaçlandığı gibi hâlâ başarısız olurken erişimi genişletmeyi durdurun.
Kodlama aracısı gözlemleri açıklamaya yardımcı olabilir, ancak kaynak erişim ilkelerindeki değişiklikleri gözden geçirip onayladığınızdan emin olun.
İlgili içerik
Windows developer