Udostępnij za pośrednictwem


Sprawdzanie dostępu w zestawie Sdk usługi Microsoft Purview Information Protection

Wymuszanie praw do zarządzania prawami do informacji zdefiniowanych w portalu zgodności jest obowiązkiem dewelopera aplikacji. Zestaw SDK udostępnia interfejs API i zestaw modułów wyliczających, aby uprościć te kontrole dostępu.

W poniższych przykładach i tabelach pokazano, które scenariusze wymagają sprawdzenia dostępu, listy praw do sprawdzenia i sposobu przeprowadzania sprawdzania.

Lista praw i wyniki

Pełną listę praw użytkowania i opisów można znaleźć w temacie Konfigurowanie praw użytkowania dla usługi Azure Information Protection. W tym artykule zdefiniowano obowiązki dewelopera aplikacji w zakresie wymuszania praw i włączania funkcji, gdy określone prawa są lub nie są obecne.

Ważne

Jest to chęć odpowiadania deweloperom aplikacji na sprawdzanie i wymuszanie praw. Niepowodzenie przeprowadzania kontroli może spowodować utratę danych.

Scenariusze

Miejsce i sposób przeprowadzania kontroli dostępu przez aplikację zależą od typu aplikacji, którą tworzysz. Aplikacje, które obsługują dane wyjściowe w pełnym pliku i nie mają interfejsu użytkownika, będą najczęściej używać EXTRACT praw lub OWNER . Aplikacje z interfejsem użytkownika będą wymagały najbardziej szczegółowych kontrolek, blokując dostęp do kontrolek użytkownika i ścieżki eksportu w aplikacji. Zobacz sekcję Przeprowadzanie kontroli dostępu, aby zapoznać się z przykładami kodu.

Aplikacje bez interfejsu użytkownika

Aplikacje bez interfejsu użytkownika są często interfejsami opartymi na usługach lub wiersza polecenia. Gdy aplikacja obsługuje pliki chronione przez usługę Purview Information Protection, musi upewnić się, że użytkownik bez odpowiednich praw nie może używać usługi ani interfejsu wiersza polecenia do eksportowania pliku w formacie niechronionym.

Te aplikacje powinny sprawdzić, czy istnieją prawa OWNER lub EXTRACT . Użytkownicy z właścicielem mogą wykonywać dowolną operację. Użytkownicy z funkcją EXTRACT mogą bezpośrednio usuwać ochronę lub zapisywać w nowym formacie, nawet jeśli ten format nie obsługuje ochrony.

Aplikacje z interfejsem użytkownika

Aplikacje zestawu SDK plików z interfejsem użytkownika muszą implementować mechanizmy ograniczające dostęp do operacji, których użytkownik nie może wykonywać. Przykładem takiej aplikacji jest przeglądarka usługi Azure Information Protection. Przeglądarka tymczasowo odszyfrowuje plik i renderuje zawartość w oknie aplikacji. Wykonuje szczegółowe kontrole dostępu przed wyświetleniem dokumentu i wyłącza elementy interfejsu użytkownika na podstawie wyników kontroli dostępu.

Częściowy przepływ pracy przeprowadzania kontroli dostępu może wyglądać następująco:

  • Czy użytkownik ma prawo WŁAŚCICIELA ? Jeśli tak, włącz wszystkie kontrolki i zatrzymaj przetwarzanie innych praw.
  • Czy użytkownik ma prawo do drukowania ? Jeśli tak, włącz kontrolkę drukowania. Jeśli nie, wyłącz kontrolkę drukowania.
  • Czy użytkownik ma prawo DO EKSPORTOWANIA? Jeśli tak, włącz kontrolki eksportu i elementy interfejsu użytkownika. Jeśli nie, wyłącz te elementy.
  • Czy użytkownik ma prawo wyodrębnić? Jeśli tak, włącz kopiowanie i zrzuty ekranu. Jeśli nie, wyłącz te funkcje.
  • Czy użytkownik ma prawo do edycji? Jeśli tak, włącz edytowanie i zapisywanie bieżącego elementu. Jeśli nie, ustaw element jako tylko do odczytu.

Te testy powinny być wykonywane dla wszystkich uprawnień na liście praw i tabeli wyników , z wyjątkiem prawa VIEW . Plik nie będzie dostępny bez tego prawa.

Przeprowadzanie kontroli dostępu

Wzorce przeprowadzania sprawdzania dostępu są podobne w zestawie SDK plików i ochrony dla języków C++, .NET i Java.

W tych przykładach kodu założono, że wykonano kroki inicjowania zestawu SDK i utworzono wystąpienie aparatu i procedury obsługi.

Przeprowadzanie kontroli dostępu w zestawie SDK plików za pomocą platformy .NET

Ten fragment kodu zakłada, że program FileHandler został utworzony i wskazuje prawidłowy plik.

// Validate that the file referred to by the FileHandler is protected.
if(handler.Protection != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(handler.Protection.AccessCheck(Rights.Extract))
    {
        // If user has Extract right, remove protection and commit the change. Otherwise, throw exception. 
        handler.RemoveProtection();
        bool result = handler.CommitAsync(outputPath).GetAwaiter().GetResult();     
        return result;   
    }
    else
    {
        throw new Microsoft.InformationProtection.Exceptions.AccessDeniedException("User lacks EXPORT right.");
    }
}

Przeprowadzanie kontroli dostępu w zestawie SDK ochrony za pomocą platformy .NET

W tym fragmencie kodu przyjęto założenie, że program ProtectionHandler został utworzony do użycia.

// Validate that the file referred to by the FileHandler is protected.
if(protectionHandler != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(protectionHandler.AccessCheck(Rights.Print))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

Przeprowadzanie kontroli dostępu w zestawie SDK plików za pomocą języka C++

Ten fragment kodu zakłada, że program FileHandler został utworzony i wskazuje prawidłowy plik.

// Validate that the file referred to by the FileHandler is protected.
if (fileHandler->GetProtection() != nullptr)
{
    if (fileHandler->GetProtection()->AccessCheck(mip::rights::Extract()))
    {
        auto commitPromise = std::make_shared<std::promise<bool>>();
        auto commitFuture = commitPromise->get_future();
        fileHandler->RemoveProtection();
        fileHandler->CommitAsync(outputFile, commitPromise);
        result = commitFuture.get();
    }
    else
    {
        throw std::runtime_error("User doesn't have EXTRACT right.");
    }
}

Przeprowadzanie kontroli dostępu w zestawie SDK ochrony za pomocą języka C++

W tym fragmencie kodu przyjęto założenie, że program ProtectionHandler został utworzony do użycia.

// Validate that the file referred to by the FileHandler is protected.
if (protectionHandler != nullptr)
{
    if (protectionHandler->AccessCheck(mip::rights::Print()))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

Następne kroki

Teraz, gdy masz już pomysł na prawidłowe przeprowadzanie kontroli dostępu i wymuszanie praw skojarzonych z tymi kontrolami, kontynuuj pracę z pojęciami obsługi plików, aby dowiedzieć się więcej na temat usuwania ochrony z plików.