Aracılığıyla paylaş


Microsoft Information Protection Dosya SDK'sı - Dosyada duyarlılık etiketini düşürmek için Eylem Gerekçesi (C#)

Bu hızlı başlangıç, etiket politikasının gerekçe istediği durumlarda etiket düşürme işleminin nasıl ele alınacağını açıklar. Burada, bir dosyanın etiketlerini değiştirmek için IFileHandler arabirimini kullanacağız. Daha fazla ayrıntı için API başvurusuna başvurun.

Önkoşullar

Henüz yapmadıysanız devam etmeden önce aşağıdaki önkoşulları tamamladığınızdan emin olun:

Korumalı dosyaya daha düşük bir etiket ayarlamak için mantık ekleme

Dosya işleyici nesnesini kullanarak dosyada duyarlılık etiketi ayarlamak için mantık ekleyin.

  1. Önceki "Hızlı Başlangıç: Duyarlılık etiketlerini ayarlama/alma(C#) içinde oluşturduğunuz Visual Studio çözümünü açın.

  2. Çözüm Gezgini'ni kullanarak, projenizde yönteminin uygulanmasını Main() içeren .cs dosyasını açın. Proje oluşturma sırasında belirlediğiniz isim, varsayılan olarak projeyle aynı olup onu içeren yapıdadır.

  3. Önceki hızlı başlangıçtaki <label-id> değeri, azaltma için gerekçe gerektiren bir duyarlılık etiketine güncelleştirin. Bu hızlı başlangıç çalıştırması sırasında önce bu etiketi ayarlayıp, ardından sonraki adımlarda kod parçacıkları aracılığıyla değerini azaltmayı deneyeceğiz.

  4. Gövdenin sonuna doğru, uygulama kapatma bloğunun Main() altına Console.ReadKey() ve üstüne (önceki Hızlı Başlangıçta kaldığınız yer) aşağıdaki kodu ekleyin.

    //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. Main() sonuna doğru önceki hızlı başlangıçta oluşturulan uygulama kapatma bloğunu bulun ve kaynakları serbest bırakmak için aşağıdaki işleyici satırlarını ekleyin.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Aşağıdaki değerleri kullanarak kaynak koddaki yer tutucu değerlerini değiştirin:

    Yer tutucu Değer
    <düşürülmüş etiketli çıktı> Değiştirilmiş dosyayı kaydetmek istediğiniz çıkış dosyası yolu.
    <yeni-etiket-id> Önceki Hızlı Başlangıç'ta konsol çıkışından kopyalanan bir şablon kimliği, örneğin: bb7ed207-046a-4caf-9826-647cff56b990. Daha önce korunan dosya etiketinden daha düşük duyarlılığa sahip olduğundan emin olun.

Uygulamayı derleme ve test etme

İstemci uygulamanızı derleyin ve test edin.

  1. İstemci uygulamanızı derlemek için CTRL-SHIFT-B (Çözümü Derle) kullanın. Derleme hatanız yoksa, uygulamanızı çalıştırmak için F5 (Hata ayıklamayı başlat) kullanın.

  2. Projeniz başarıyla derlenip çalıştırılırsa, SDK yönteminizi AcquireToken() her çağırdığında uygulama Microsoft Authentication Library (MSAL) kullanarak kimlik doğrulaması isteyebilir. Önbelleğe alınmış kimlik bilgileri zaten varsa, oturum açmanız istenmez ve doğrudan etiketler listesini görebilir, ardından uygulanan etiketle ilgili bilgileri ve değiştirilen dosyayı inceleyebilirsiniz.

  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.

Benzer yaklaşımın, bir dosyadan silinen etiketin etiket ilkesine göre bir gerekçe gerektirmesi durumunda işlem için DeleteLabel() de geçerli olduğunu lütfen unutmayın. DeleteLabel() işlevi bir JustificationRequiredException özel durum oluşturur ve IsDowngradeJustified bir etiketi başarıyla silmeden önce özel durum işlemede bayrağı true olarak ayarlanmalıdır.