Microsoft Information Protection SDK - conceitos de objetos de perfil e motor

Perfis

A MipContext classe armazena definições específicas do SDK. O perfil é a classe raiz para todas as operações específicas de rotulagem e proteção MIP no SDK MIP. Antes de usar qualquer um dos três conjuntos de APIs, a aplicação cliente deve criar um perfil. O perfil, ou outros objetos adicionados ao perfil, realizam operações futuras. Use apenas um objeto de perfil por processo. Criar mais do que um pode resultar em comportamentos inesperados.

O SDK MIP tem três tipos de perfil:

A API que a aplicação consumidora utiliza determina qual a classe de perfil a utilizar.

O próprio perfil fornece a seguinte funcionalidade:

  • Armazenamento de estado: Define se deve carregar o estado na memória ou persisti-lo no disco, e se deve encriptar o estado se persistir no disco.
  • Delegado de consentimento: Define o mip::ConsentDelegate a usar para operações de consentimento.
  • Observador do perfil de ficheiro: Define a implementação mip::FileProfile::Observer a utilizar para chamadas de retorno assíncronas das operações de perfil.

Definições do perfil

  • MipContext: O MipContext objeto que foi inicializado para armazenar informação da aplicação, caminho de estado, etc.
  • CacheStorageType: Defina como armazenar o estado: Na memória, no disco ou no disco encriptado.
  • consentDelegate: Um ponteiro partilhado da classe mip::ConsentDelegate.
  • observer: Um ponteiro partilhado para a implementação do perfil Observer (em PolicyProfile, ProtectionProfile, e FileProfile).
  • applicationInfo: Um mip::ApplicationInfo objeto. Informações sobre a aplicação que consome o SDK e que corresponde ao seu ID de registo e nome da sua aplicação Microsoft Entra.

Motores

Os motores SDK de Ficheiros, Políticas e Proteção fornecem uma interface para operações realizadas por uma identidade específica. Adicione um motor ao objeto de perfil para cada utilizador ou principal de serviço que inicia sessão na aplicação. Pode realizar operações delegadas utilizando mip::ProtectionSettings e o manipulador de ficheiros ou de proteção. Para mais informações, consulte a secção de definições de proteção nos conceitos do FileHandler.

O SDK tem três classes de motor, uma para cada API. A lista seguinte mostra as classes de motores e algumas das funções associadas a cada uma:

  • mip::ProtectionEngine
  • mip::PolicyEngine
    • ListSensitivityLabels(): Obtém a lista de etiquetas do motor carregado.
    • GetSensitivityLabel(): Obtém o rótulo a partir de conteúdos existentes.
    • ComputeActions(): Fornecido com um ID de etiqueta e metadados opcionais, devolve a lista de ações que devem ocorrer para um item específico.
  • mip::FileEngine
    • ListSensitivityLabels(): Obtém a lista de etiquetas do motor carregado.
    • CreateFileHandler(): Cria um mip::FileHandler para um ficheiro ou stream específico.

Para criar um motor, passe um objeto específico de definições do motor que contenha as definições do tipo de motor a criar. O objeto de definições permite ao programador especificar detalhes sobre o identificador do motor, a mip::AuthDelegate implementação, localidade, definições personalizadas e outros detalhes específicos da API.

Estados do motor

Um motor pode ter um de dois estados:

  • CREATED: Criado indica que o SDK tem informação de estado local suficiente após chamar os serviços de backend necessários.
  • LOADED: O SDK construiu as estruturas de dados necessárias para que o motor esteja operacional.

Para realizar quaisquer operações, um motor deve ser simultaneamente criado e carregado. A Profile classe expõe alguns métodos de gestão do motor: AddEngineAsync, DeleteEngineAsync, e UnloadEngineAsync.

A tabela seguinte descreve os possíveis estados do motor e quais os métodos que podem alterar esse estado:

Estado do motor None CRIADO CARREGADO
None AddEngineAsync
CRIADO DeleteEngineAsync AddEngineAsync
CARREGADO DeleteEngineAsync UnloadEngineAsync

ID do motor

Cada motor tem um identificador único, id, utilizado em todas as operações de gestão do motor. A aplicação pode fornecer um id. Se a aplicação não fornecer um, o SDK pode gerá-lo. Todas as outras propriedades do motor, como o endereço de e-mail nas informações de identidade, são cargas úteis opacas para o SDK. O SDK não executa lógica para manter quaisquer outras propriedades únicas ou impor outras restrições.

Importante

Use um ID de motor único para o utilizador e use esse ID de motor sempre que o utilizador executar uma operação com o SDK. Se não fornecer um ID de motor único e existente para um utilizador ou serviço, o SDK faz viagens extra de ida e volta ao serviço. Estes ciclos de ida e volta do serviço podem resultar em degradação do desempenho e estrangulamento.

// Create the FileEngineSettings object
FileEngine::Settings engineSettings(mip::Identity(mUsername), // This will be the engine ID. UPN, email address, or other unique user identifiers are recommended. 
													          mAuthDelegate,            // authDelegate implementation 
													          "",                       // ClientData
													          "en-US",                  // Client Locale
                                    false);                   // Load Sensitive Information Types

Métodos de gestão do motor

O SDK tem três métodos de gestão do motor: AddEngineAsync, DeleteEngineAsync, e UnloadEngineAsync.

AddEngineAsync

Este método carrega um motor existente, ou cria um, caso ainda não exista um no estado local.

Se a aplicação não fornecer um id em FileEngineSettings, AddEngineAsync gera um novo id. Depois verifica se já existe um motor de busca com a etiqueta id na cache do armazenamento local. Se isso acontecer, carrega esse motor. Se o motor não existir na cache local, é criado um novo motor ao chamar as APIs e serviços backend necessários.

Em ambos os casos, se o método for bem-sucedido, o motor está carregado e pronto a ser usado.

DeleteEngineAsync

Elimina o motor com o dado id. Todos os vestígios do motor são removidos da cache local.

UnloadEngineAsync

Descarrega as estruturas de dados em memória do motor de processamento com o parâmetro id. O estado local deste motor mantém-se intacto, e pode recarregá-lo com AddEngineAsync.

Este método permite que a aplicação seja criteriosa quanto ao uso de memória, descarregando motores que não se espera que sejam usados em breve.

Passos seguintes