Verificações de acesso no SDK da Proteção de Informações do Microsoft Purview
A aplicação dos direitos do gerenciamento de direitos de informação definidos no portal de conformidade é de responsabilidade do desenvolvedor de aplicativos. 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 ser consultada e como executar a verificação.
Lista de direitos e resultados
Para obter uma lista completa dos direitos de uso e das descrições, veja Configurar direitos de uso para a Proteção de Informações do Azure. Este artigo define as responsabilidades de um desenvolvedor de aplicativos na aplicaçã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 impor direitos. A não execuçã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 manipulam a saída de arquivo completa e não têm interface de usuário utilizarão os direitos EXTRACT
ou OWNER
com mais frequência. Os aplicativos com uma interface de usuário exigirão controles mais granulares, bloqueando o acesso aos controles do usuário e os caminhos de exportação no aplicativo. Consulte a seção Execução de verificações de acesso para obter exemplos de código.
Aplicativos sem uma interface de usuário
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 pela Proteção de Informações do Purview, 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.
Esses aplicativos devem validar se os direitos de PROPRIETÁRIO ou de EXTRAÇÃO estão presentes. Usuários com PROPRIETÁRIO podem executar qualquer operação. Os usuários com EXTRAÇÃO podem remover diretamente a proteção ou salvar em um novo formato, mesmo que esse formato não ofereça suporte à proteção.
Aplicativos com uma interface de usuário
Os aplicativos do 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 da Proteção de Informações do Azure. O visualizador descriptografa temporariamente o arquivo e renderiza o conteúdo na janela do aplicativo. 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 usuário tem o direito de IMPRESSÃO? Se sim, habilite o controle de impressão. Caso contrário, desabilite-o.
- O usuário tem o direito de EXPORTAÇÃO? Se sim, habilite os controles de exportação e os elementos da interface do usuário. Caso contrário, desabilite esses elementos.
- O usuário tem o direito de EXTRAÇÃO? Se sim, habilite a cópia e as capturas de tela. Caso contrário, desabilite essas funções.
- O usuário tem o direito de EDIÇÃO? 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 executadas para todas as permissões na tabela da lista de direitos e resultados, exceto o direito de EXIBIÇÃO . O arquivo não estará acessível sem esse direito.
Execução de verificações de acesso
Os padrões para executar a verificação de acesso são semelhantes no SDK de arquivo e de proteção para C++, .NET e Java.
Esses exemplos de código presumem que você tenha passado pelas etapas de inicialização do SDK e tenha instanciado um mecanismo e um manipulador.
- Início Rápido: inicialização do aplicativo cliente (C++)
- Início Rápido: inicialização do aplicativo cliente (C#)
- Início Rápido: inicialização do aplicativo cliente para SDKs de proteção (C++)
- Início Rápido: inicialização do aplicativo cliente para SDKs de proteção (C#)
Execução de verificações de acesso no SDK de arquivo com .NET
Esta captura de código presume 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.");
}
}
Execução de verificações de acesso no SDK de proteção com .NET
Esta captura de código presume 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);
}
}
Execução de verificações de acesso no SDK de arquivo com .C++
Esta captura de código presume 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.");
}
}
Execução de verificações de acesso no SDK de proteção com C++
Esta captura de código presume 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);
}
}
Próximas etapas
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.