Processamento de arquivo de mensagem de e-mail do SDK de arquivo

O MIP SDK suporta desencriptação e encriptação para mensagens de e-mail. Ambos os arquivos .msg, gerados pelo Outlook ou Exchange, e arquivos .rpmsg são suportados pelo SDK, embora através de métodos ligeiramente diferentes.

Observação

A partir do MIP SDK 1.17, .eml arquivos são suportados. O manuseio é semelhante ao .msg para cenários de rotulagem/proteção e ao .rpmsg para cenários de inspeção, dependendo do formato do contêiner.

Os casos de uso comuns para este cenário são:

  • Descriptografe e-mails e anexos para inspeção de prevenção de perda de dados (DLP).
  • Publique mensagens protegidas diretamente de aplicativos de linha de negócios
  • Desencriptar, modificar e reproteger mensagens em trânsito.
  • Aplique etiquetas a e-mails de DLP ou serviços de gateway de email.

Declaração de suporte do arquivo MSG

MIP SDK suporta aplicação de proteção e remoção para arquivos MSG. Dada a variedade de tipos de codificação e variáveis no formato ao longo dos anos, não é possível garantir que o MIP SDK possa remover a proteção de todos os arquivos MSG. A seção a seguir descreve a capacidade de suporte para arquivos MSG de várias fontes.

  • A remoção da proteção de arquivos MSG que foram protegidos com o MIP SDK é totalmente suportada.
  • A remoção da proteção de arquivos MSG criados por versões atualmente suportadas do cliente Outlook é totalmente suportada.
  • A remoção da proteção de arquivos MSG criados por versões fora de suporte do cliente Outlook é suportada com base no melhor esforço.
  • A reproteção de arquivos MSG não está disponível com rótulos protegidos. Os usuários devem desproteger e remover o rótulo protegido explicitamente antes de proteger o arquivo novamente com outro rótulo.

Rotulagem de arquivos MSG

O MIP SDK suporta a leitura e gravação de etiquetas em arquivos MSG. Os anexos filhos não herdam o rótulo, mas herdam as configurações de proteção. Consulte Operações de rotulagem e proteção no SDK de arquivos para obter .msg arquivos para obter mais detalhes.

Operações de rotulagem e proteção no SDK de arquivos para arquivos .msg

O SDK de arquivos suporta operações de rotulagem e proteção para arquivos .msg de maneira idêntica a qualquer outro tipo de arquivo, exceto que o SDK precisa do aplicativo para habilitar o sinalizador de recurso MSG.

Como discutido anteriormente, a instanciação de requer um objeto de FileEngine configurações, FileEngineSettings. FileEngineSettings pode ser usado para passar parâmetros para configurações personalizadas para atender às necessidades específicas do aplicativo. Para habilitar o MIP SDK para processar arquivos MSG, a CustomSettings propriedade do FileEngineSettings objeto é usada para definir o sinalizador para enable_msg_file_type habilitar o processamento de arquivos .msg.

Se você criou um FileEngineSettings objeto chamado engineSettings, você definiria essa propriedade no .NET da seguinte maneira:

engineSettings.CustomSettings = new List<KeyValuePair<string, string>>();
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("enable_msg_file_type", "true"));

O pseudocódigo de operações de proteção de arquivo .msg pode se parecer com:

  • Defina enable_msg_file_type o sinalizador e mip::FileEngineSettings adicione o mip::FileEngine a mip::FileProfile.
  • Use o FileEngine para buscar a lista de rótulos para o usuário.
  • Construção mip::FileHandler que aponta para o arquivo a ser rotulado.
  • Selecione um rótulo e use o mip::FileHandlermétodo do SetLabel para aplicá-lo.

Consulte Guia de início rápido: listar rótulos para obter informações sobre como listar rótulos.

Alterando comportamentos padrão de manipulação de anexos

Por padrão, o SDK de arquivo tenta processar todos os anexos que fazem parte de um arquivo MSG ou um arquivo message.rpmsg ao usar as APIs de inspeção. Apenas o item de nível raiz e o primeiro nível de anexos são desencriptados por predefinição.

Para modificar esse comportamento, a configuração personalizada container_decryption_option pode ser usada. Em C++, isso é exposto por meio de um enum, mip::ContainerDecryptionOption.

Nome da opção Descrição
All Desencripta o ficheiro MSG e anexos. Se o anexo for um MSG, ele descriptografa recursivamente o MSG e seus anexos. Ele irá recursar um máximo de dez níveis antes de lançar mip::BadInputError("Max depth reached on nested msg attachments")
Default O mesmo que Msg.
Msg Desencripta o MSG e anexos de primeiro nível. Não desencripta recursivamente ficheiros MSG anexados.
Top Desencriptar apenas o ficheiro MSG e não desencriptar anexos.

O exemplo a seguir mostra como definir um aplicativo no .NET para descriptografar somente o arquivo MSG raiz.

engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("container_decryption_option", "Top"));

E em C++:

vector<pair<string, string>> customSettings;
customSettings.emplace_back(mip::GetCustomSettingContainerDecryptionOption(),
        mip::ContainerDecryptionOptionString(mip::ContainerDecryptionOption::Top));
engineSettings.SetCustomSettings(customSettings);

Operações do SDK de arquivo para arquivos .rpmsg

MIP SDK expõe uma função de inspeção que pode descriptografar o arquivo message.rpmsg incorporado e apresentar um conjunto de fluxos de bytes como saída. Cabe ao consumidor do SDK extrair o arquivo message.rpmsg e passá-lo para a API de inspeção. Existem variações desse nome de arquivo para cenários de criptografia de mensagem Purview e a API também aceitará arquivos message_v2, v3 ou v4.

Important

A API de inspeção não fornece uma saída que resultará em um arquivo utilizável, nem permite que você proteja novamente o arquivo de entrada. Ele gera fluxos de bytes que seu aplicativo pode processar ainda mais. A recriação de arquivos MSG a partir de arquivos message.rpmsg não é suportada pelo MIP SDK.

Na maioria dos casos, o serviço DLP precisa obter os anexos e bytes de texto sem formatação da mensagem para inspecionar e avaliar em relação às políticas de DLP. A API de inspeção usa o message.rpmsg como entrada e retorna fluxos de bytes como saída. Esses fluxos de bytes contêm os bytes de texto simples da mensagem e os anexos. Cabe ao desenvolvedor do aplicativo lidar com esses fluxos e fazer algo útil com eles (inspecionar, descriptografar recursivamente, etc.).

A Inspect API é implementada por meio de uma classe, mip::FileInspector, que expõe operações para inspecionar tipos de arquivos suportados. mip::MsgInspector que estende mip::FileInspector, expõe operações de desencriptação específicas para o formato de ficheiro rpmsg. O MIP SDK não suporta nenhum cenário de publicação para arquivos message.rpmsg . Além disso, a FileHandler::RemoveProtection() API não suporta ficheiros message.rpmsg. Os ficheiros Message.rpmsg podem ser desencriptados apenas para inspeção e não produzirão um ficheiro válido e utilizável. Se seu aplicativo requer uma saída de arquivo, você deve passar um arquivo MSG e remover a proteção desse objeto.

mip::MsgInspector classe expõe os membros abaixo:

public const std::vector<uint8_t>& GetBody()
public BodyType GetBodyType() const
public BodyType GetBodyType() const
public InspectorType GetInspectorType() const
public std::shared_ptr<Stream> GetFileStream() const

Para obter mais informações, consulte o SDK da Proteção de Informações da Microsoft (MIP) para C++: Referência.

Próximas Etapas