Partilhar via


Verificações de acesso no SDK de Proteção de Informações do Microsoft Purview

A aplicação dos direitos de gerenciamento de direitos de informação definidos no portal de conformidade é de responsabilidade do desenvolvedor do aplicativo. O SDK fornece uma API e um conjunto de enumeradores para simplificar essas verificações de acesso.

Os exemplos e tabelas abaixo demonstrarão quais cenários exigem uma verificação de acesso, a lista de direitos a serem verificados e como executar a verificação.

Lista de direitos e resultados

Para obter uma lista completa dos direitos de uso e descrições, consulte Configurar direitos de uso para a Proteção de Informações do Azure. Este artigo define as responsabilidades de um desenvolvedor de aplicativos na imposição de direitos e funções habilitadas quando direitos específicos estão ou não presentes.

Importante

É responsabilidade dos desenvolvedores de aplicativos verificar e fazer valer os direitos. A falha na realização de verificações pode resultar em perda de dados.

Cenários

Onde e como seu aplicativo executa verificações de acesso dependerá do tipo de aplicativo que você está criando. Os aplicativos que lidam com a saída de arquivo completo e não têm interface de usuário usarão os EXTRACT direitos ou OWNER com mais freqüência. Os aplicativos com uma interface de usuário exigirão a maioria dos controles granulares, bloqueando o acesso aos controles de usuário e caminhos de exportação no aplicativo. Consulte a seção Executando verificações de acesso para obter exemplos de código.

Aplicações sem interface de utilizador

Os aplicativos sem uma interface de usuário geralmente são baseados em serviço ou interfaces de linha de comando (CLI). Quando seu aplicativo está manipulando arquivos protegidos pelo Purview Information Protection, ele deve garantir que um usuário sem os direitos corretos não possa usar o serviço ou a CLI para exportar o arquivo em um formato desprotegido.

Estas aplicações devem validar a presença dos direitos OWNER ou EXTRACT . Os usuários com PROPRIETÁRIO podem realizar qualquer operação. Os usuários com EXTRACT podem remover diretamente a proteção ou salvar em um novo formato, mesmo que esse formato não ofereça suporte à proteção.

Aplicações com uma interface de utilizador

Os aplicativos de SDK de arquivo com uma interface de usuário devem implementar controles que restrinjam o acesso a operações que o usuário não tem permissão para executar. Um exemplo desse aplicativo é o Visualizador de Proteção de Informações do Azure. O visualizador desencripta temporariamente o ficheiro e processa o conteúdo na janela da aplicação. Ele executa verificações de acesso granulares antes de exibir o documento e desabilita os elementos da interface do usuário com base nos resultados das verificações de acesso.

Um fluxo de trabalho parcial de execução de verificações de acesso pode se parecer com:

  • O usuário tem o direito de PROPRIETÁRIO ? Se sim, habilite todos os controles e pare de processar outros direitos.
  • O utilizador tem o direito de IMPRIMIR ? Se sim, habilite o controle de impressão. Caso contrário, desative o controle de impressão.
  • O usuário tem o direito de EXPORTAR ? Em caso afirmativo, habilite os controles de exportação e os elementos da interface do usuário. Caso contrário, desative esses elementos.
  • O usuário tem o direito EXTRACT ? Se sim, ative a cópia e as capturas de tela. Caso contrário, desative essas funções.
  • O usuário tem o direito EDIT ? Se sim, habilite a edição e o salvamento do item atual. Caso contrário, torne o item somente leitura.

Essas verificações devem ser realizadas para todas as permissões na lista de direitos e na tabela de resultados , exceto para o direito VIEW . O ficheiro não estará acessível sem este direito.

Realização de verificações de acesso

Os padrões para executar a verificação de acesso são semelhantes no SDK de Arquivo e Proteção para C++, .NET e Java.

Esses exemplos de código pressupõem que você passou pelas etapas para inicializar o SDK e instanciou um mecanismo e manipulador.

Executando verificações de acesso no SDK de arquivo com .NET

Este trecho de código pressupõe que um FileHandler foi criado e aponta para um arquivo válido.

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

Executando verificações de acesso no SDK de proteção com .NET

Este trecho de código pressupõe que um ProtectionHandler foi criado para consumo.

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

Executando verificações de acesso no SDK de arquivo com C++

Este trecho de código pressupõe que um FileHandler foi criado e aponta para um arquivo válido.

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

Executando verificações de acesso no SDK de proteção com C++

Este trecho de código pressupõe que um ProtectionHandler foi criado para consumo.

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

Passos Seguintes

Agora que você tem uma ideia de como executar corretamente as verificações de acesso e impor os direitos associados a essas verificações, continue com os conceitos de manipulador de arquivos para saber mais sobre como remover a proteção dos arquivos.