Partilhar via


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

Perfis

Onde a MipContext é a classe para armazenar 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. As operações futuras são realizadas pelo perfil, ou por outros objetos adicionados ao perfil. Recomenda-se apenas um único objeto de perfil por processo. Criar mais do que um pode resultar em comportamentos inesperados.

Existem três tipos de perfil no MIP SDK:

A API usada na aplicação consumidora determina qual a classe de perfil que deve ser utilizada.

O próprio perfil fornece a seguinte funcionalidade:

  • Define se o estado deve ser carregado na memória ou persistido no disco e, se persistido no disco, deve ser encriptado.
  • Define o mip::ConsentDelegate que deve ser usado para operações de consentimento.
  • Define a mip::FileProfile::Observer implementação que será usada para callbacks assíncronos para 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ção sobre a aplicação que consome o SDK, que corresponde ao seu ID de registo e nome da aplicação Microsoft Entra.

Motores

Os motores File, Profile e Protection SDK fornecem uma interface para operações realizadas por uma identidade específica. Um motor é adicionado ao objeto Profile para cada utilizador ou principal de serviço que inicia sessão na aplicação. É possível realizar operações delegadas através de mip::ProtectionSettings e do gestor de ficheiros ou de proteção. Consulte a secção de definições de proteção nos conceitos do FileHandler para mais detalhes.

Existem três classes de motor no SDK, 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 rótulos para o motor carregado.
    • CreateFileHandler(): Cria um mip::FileHandler para um ficheiro ou stream específico.

Criar um motor requer passar um objeto específico de definições do motor que contenha as definições do tipo de motor a ser criado. O objeto de definições permite ao programador especificar detalhes sobre o identificador do motor, a mip::AuthDelegate implementação, localização e definições personalizadas, bem como 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, que é utilizado em todas as operações de gestão do motor. A aplicação pode fornecer um id, ou o SDK pode gerar um, caso não seja fornecido pela aplicação. Todas as outras propriedades do motor (por exemplo, o endereço de email na informação de identidade) são payloads opacos para o SDK. O SDK NÃO executa qualquer lógica para manter as outras propriedades únicas, nem impor quaisquer outras restrições.

Importante

**Como boa prática, use um ID de motor único para o utilizador e utilize-o sempre que o utilizador realiza uma operação com o SDK. Não fornecer um engineId existente e único para um utilizador ou serviço resultará em viagens extra de ida e volta ao serviço. Estas viagens de ida e volta em serviço podem resultar em degradação do desempenho e limitação do controlo. **

// 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

Como mencionado anteriormente, existem três métodos de gestão do motor no SDK: 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 ser recarregado 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.

Próximas Etapas