Bagikan melalui


Microsoft Information Protection File SDK - Justifikasi Tindakan untuk menurunkan label sensitivitas pada file (C#)

Mulai cepat ini membahas penanganan operasi label downgrade saat kebijakan label memerlukan pembenaran. Di sini, kita akan menggunakan IFileHandler antarmuka untuk mengubah label file. Untuk detail lebih lanjut, lihat referensi API.

Prasyarat

Jika Anda belum melakukannya, pastikan untuk menyelesaikan prasyarat berikut sebelum melanjutkan:

  • Selesaikan Mulai Cepat: Mengatur/mendapatkan label sensitivitas (C#) yang membangun solusi Visual Studio pemula untuk mencantumkan label sensitivitas organisasi dan untuk mengatur dan membaca label sensitivitas ke/dari file. Mulai Cepat "Cara - Menurunkan/Menghapus label yang memerlukan pembenaran C#" ini dibangun pada yang sebelumnya.
  • Secara opsional: Tinjau konsep penangan File dalam konsep MIP SDK.

Menambahkan logika untuk mengatur label yang lebih rendah ke file yang dilindungi

Tambahkan logika untuk mengatur label sensitivitas pada file, menggunakan objek Handler file.

  1. Buka solusi Visual Studio yang Anda buat di "Mulai Cepat: Atur/dapatkan label sensitivitas (C#) sebelumnya.

  2. Dengan menggunakan Penjelajah Solusi, buka file .cs dalam proyek Anda yang berisi implementasi Main() metode . Ini default ke nama yang sama dengan proyek yang berisinya, yang Anda tentukan selama pembuatan proyek.

  3. <label-id> Perbarui nilai dari mulai cepat sebelumnya ke label sensitivitas yang memerlukan pembenaran untuk menurunkan. Selama mulai cepat ini berjalan, kita akan mengatur label ini terlebih dahulu dan kemudian mencoba menurunkannya melalui cuplikan kode dalam langkah-langkah lebih lanjut.

  4. Menjelang akhir Main() isi, di bawah Console.ReadKey() dan di atas blok matikan aplikasi (di mana Anda meninggalkan di Mulai Cepat sebelumnya), sisipkan kode berikut.

    //Set paths and label ID
    string lowerInput = actualOutputFilePath;
    string lowerActualInput = lowerInput;
    string newLabelId = "<new-label-id>";
    string lowerOutput = "<downgraded-labled-output>";
    string lowerActualOutput = lowerOutput;
    
    //Create a file handler for that file
    var downgradeHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerInput, lowerActualInput, true)).Result;
    
    //Set Labeling Options
    LabelingOptions options = new LabelingOptions()
    {
        AssignmentMethod = AssignmentMethod.Standard
    };
    
    try
    {
        //Try to set new label
        downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings());
    }
    
    catch (Microsoft.InformationProtection.Exceptions.JustificationRequiredException)
    {
        //Request justification from user
        Console.Write("Please provide justification for downgrading a label: ");
        string justification = Console.ReadLine();
    
        options.IsDowngradeJustified = true;
        options.JustificationMessage = justification;
    
        //Set new label
        downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings());
    }
    
    // Commit changes, save as outputFilePath
    var downgradedResult = Task.Run(async () => await downgradeHandler.CommitAsync(lowerActualOutput)).Result;
    
    // Create a new handler to read the labeled file metadata
    var commitHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerOutput, lowerActualOutput, true)).Result;
    
    // Get the label from output file
    var newContentLabel = commitHandler.Label;
    Console.WriteLine(string.Format("Getting the new label committed to file: {0}", lowerOutput));
    Console.WriteLine(string.Format("File Label: {0} \r\nIsProtected: {1}", newContentLabel.Label.Name, newContentLabel.IsProtectionAppliedFromLabel.ToString()));
    Console.WriteLine("Press a key to continue.");
    Console.ReadKey();
    
    
  5. Menjelang akhir Main() temukan blok matikan aplikasi yang dibuat di mulai cepat sebelumnya dan tambahkan baris handler di bawah ini untuk merilis sumber daya.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Ganti nilai tempat penampung dalam kode sumber menggunakan nilai berikut:

    Placeholder Nilai
    <downgraded-labled-output> Jalur file output yang ingin Anda simpan file yang dimodifikasi.
    <new-label-id> ID templat, yang disalin dari output konsol di Mulai Cepat sebelumnya, misalnya: bb7ed207-046a-4caf-9826-647cff56b990. Pastikan memiliki sensitivitas yang lebih rendah daripada label file yang dilindungi sebelumnya.

Membangun dan menguji aplikasi

Buat dan uji aplikasi klien Anda.

  1. Gunakan CTRL-SHIFT-B (Build Solution) untuk membangun aplikasi klien Anda. Jika Anda tidak memiliki kesalahan build, gunakan F5 (Mulai penelusuran kesalahan) untuk menjalankan aplikasi Anda.

  2. Jika proyek Anda berhasil dibangun dan berjalan, aplikasi dapat meminta autentikasi menggunakan Microsoft Authentication Library (MSAL) setiap kali SDK memanggil metode Anda AcquireToken() . Jika kredensial yang di-cache sudah ada, Anda tidak akan diminta untuk masuk dan melihat daftar label, diikuti dengan informasi tentang label yang diterapkan dan file yang dimodifikasi.

  Personal : 73c47c6a-eb00-4a6a-8e19-efaada66dee6
  Public : 73254501-3d5b-4426-979a-657881dfcb1e
  General : da480625-e536-430a-9a9e-028d16a29c59
  Confidential : 569af77e-61ea-4deb-b7e6-79dc73653959
  Highly Confidential : 905845d6-b548-439c-9ce5-73b2e06be157
  Press a key to continue.

  Getting the label committed to file: c:\Test\Test_labeled.docx
  Name: Confidential
  IsProtected: True
  Press any key to continue . . .

  Please provide justification for downgrading a label: Lower label approved.
  Getting the new label committed to file: c:\Test\Test_downgraded.docx
  File Label: General
  IsProtected: False
  Press a key to continue.

Harap dicatat, pendekatan serupa juga berlaku untuk DeleteLabel() operasi, jika label dihapus dari file memerlukan pembenaran sesuai kebijakan label.DeleteLabel() fungsi melempar JustificationRequiredException pengecualian dan IsDowngradeJustified bendera harus diatur ke true dalam penanganan pengecualian sebelum menghapus label berhasil.