Поделиться через


Проверка доступа в пакете SDK Microsoft Purview Information Protection

Принудительное применение прав управления правами на доступ к данным , определенным на портале соответствия , является ответственностью разработчика приложения. Пакет SDK предоставляет API и набор перечислителей для упрощения этих проверок доступа.

В приведенных ниже примерах и таблицах показано, какие сценарии требуют проверки доступа, список прав для проверки и как выполнить проверку.

Список прав и результаты

Полный список прав и описаний использования см. в разделе "Настройка прав использования для Azure Information Protection". В этой статье определяются обязанности разработчика приложений в принудительном обеспечении соблюдения прав и активированных функций при наличии или отсутствии определенных прав.

Это важно

Ответственность разработчиков приложений заключается в том, чтобы проверять и обеспечивать принудительное применение прав. Сбой при проверке может привести к потере данных.

Сценарии

Где и как приложение выполняет проверки доступа, зависит от типа создаваемого приложения. Приложения, обрабатывающие выходные данные всего файла и не имеющие пользовательского интерфейса, чаще всего используют права EXTRACT или OWNER. Для приложений с пользовательским интерфейсом требуется большинство детализированных элементов управления, блокировка доступа к пользовательским элементам управления и пути экспорта в приложении. Примеры кода см. в разделе проверки доступа .

Приложения без пользовательского интерфейса

Приложения без пользовательского интерфейса часто являются сервисными или интерфейсами командной строки (CLI). При обработке файлов, защищенных Purview Information Protection , необходимо убедиться, что пользователь без правильных прав не может использовать службу или интерфейс командной строки для экспорта файла в незащищенном формате.

Эти приложения должны проверить наличие прав OWNER или EXTRACT . Пользователи с владельцем могут выполнять любую операцию. Пользователи с EXTRACT могут напрямую удалить защиту или сохранить в новом формате, даже если этот формат не поддерживает защиту.

Приложения с пользовательским интерфейсом

Приложения пакета SDK для файлов с пользовательским интерфейсом должны реализовывать элементы управления, ограничивающие доступ к операциям, которые пользователь не может выполнять. Одним из примеров такого приложения является просмотрщик Azure Information Protection. Средство просмотра временно расшифровывает файл и отображает содержимое в окне приложения. Он выполняет детализированные проверки доступа перед отображением документа и отключает элементы пользовательского интерфейса на основе результатов проверок доступа.

Частичный рабочий процесс выполнения проверок доступа может выглядеть следующим образом:

  • Имеет ли пользователь право ВЛАДЕЛЬЦА ? Если да, включите все элементы управления и остановите обработку других прав.
  • Имеет ли пользователь право на печать? Если да, включите элемент управления печати. Если нет, отключите элемент управления печати.
  • Имеет ли пользователь право EXPORT ? Если да, включите элементы управления экспортом и элементы пользовательского интерфейса. Если нет, отключите эти элементы.
  • Есть ли у пользователя право на EXTRACT? Если да, включите копирование и снимки экрана. Если нет, отключите эти функции.
  • Есть ли у пользователя право на редактирование? Если да, включите редактирование и сохранение текущего элемента. Если нет, установите элемент только для чтения.

Эти проверки должны выполняться для всех разрешений в списке прав и таблице результатов , за исключением права VIEW . Файл не будет доступен без этого права.

Выполнение проверок доступа

Шаблоны проверки доступа аналогичны пакетам SDK для файлов и защиты для C++, .NET и Java.

В этих примерах кода предполагается, что вы выполнили шаги по инициализации SDK и создали движок и обработчик.

Выполнение проверок доступа в пакете SDK для файлов с помощью .NET

Этот фрагмент кода предполагает, что файл FileHandler был создан и указывает на допустимый файл.

// 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.");
    }
}

Выполнение проверок доступа в пакете SDK для защиты с помощью .NET

В этом фрагменте кода предполагается, что созданный ProtectionHandler предназначен для использования.

// 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);
    }
}

Выполнение проверок доступа в пакете SDK для файлов с помощью C++

Этот фрагмент кода предполагает, что файл FileHandler был создан и указывает на допустимый файл.

// 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.");
    }
}

Выполнение проверок доступа в пакете SDK для защиты с помощью C++

В этом фрагменте кода предполагается, что ProtectionHandler был создан для потребления.

// 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);
    }
}

Дальнейшие шаги

Теперь, когда у вас есть представление о правильном выполнении проверок доступа и применении прав, связанных с этими проверками, перейдите к основным понятиям обработчика файлов , чтобы узнать больше об удалении защиты из файлов.