Compartilhar via


Processamento de arquivo de mensagens de email do SDK de arquivo

O SDK da MIP oferece suporte à criptografia e descriptografia de mensagens de email. O SDK oferece suporte aos arquivos .msg, gerados pelo Outlook ou Exchange, e aos arquivos .rpmsg, embora seja por métodos um pouco diferentes.

Observação

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

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

  • Descriptografar emails e anexos para inspeção da prevenção contra perda de dados (DLP).
  • Publicar mensagens protegidas diretamente de aplicativos de linha de negócios
  • Descriptografar, modificar e proteger novamente as mensagens em trânsito.
  • Aplicar rótulos a emails de serviços de gateway de DLP ou de email.

Declaração de suporte ao arquivo MSG

O SDK da PIM oferece suporte a aplicativos de proteção e remoção de 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 SDK da PIM 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.

  • Há suporte total para a remoção da proteção de arquivos MSG que foram protegidos com o SDK da PIM.
  • Há suporte total para a remoção da proteção de arquivos MSG criados por versões atualmente com suporte do cliente Outlook.
  • Na base do melhor esforço, há suporte para a remoção da proteção de arquivos MSG criados por versões do cliente Outlook fora do suporte.
  • A nova proteçã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 SDK da PIM oferece suporte à leitura e gravação de rótulos em arquivos MSG. Os anexos filhos não herdam o rótulo, mas herdam as configurações de proteção. Revise Operações de rotulagem e proteção no SDK de arquivo para arquivos .msg para obter mais detalhes.

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

O SDK de arquivo oferece suporte a operações de rotulagem e proteção para arquivos .msg da mesma forma que qualquer outro tipo de arquivo, com a exceção de que o SDK requer que o aplicativo habilite o sinalizador de recurso MSG.

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

Se você tivesse criado um objeto FileEngineSettings chamado engineSettings, 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 o sinalizador enable_msg_file_type em mip::FileEngineSettings e adicione o mip::FileEngine a mip::FileProfile.
  • Use o FileEngine para buscar a lista de rótulos para o usuário.
  • Crie mip::FileHandler que aponta para o arquivo a ser rotulado.
  • Selecione um rótulo e use o método mip::FileHandler do SetLabel para aplicar o rótulo.

Veja Início Rápido: listar rótulos para obter informações sobre como listar rótulos.

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

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. Somente o item de nível raiz e o primeiro nível de anexos são descriptografados por padrão.

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

Nome da opção Descrição
All Descriptografa o arquivo MSG e os anexos. Se o anexo for um MSG, ele descriptografa recursivamente o MSG e seus anexos. Ele repetirá 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 Descriptografa o MSG e os anexos de primeiro nível. Não descriptografa recursivamente arquivos MSG anexados.
Top Descriptografe apenas o arquivo MSG e não descriptografe anexos.

O exemplo a seguir mostra como definir um aplicativo no .NET para descriptografar apenas 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

O SDK da MIP 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 transmiti-lo à API de inspeção. Existem variações desse nome de arquivo para cenários de Criptografia de Mensagens do Purview e a API também aceitará arquivos message_v2, v3 ou v4.

Importante

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 produz fluxos de bytes que o seu aplicativo pode processar posteriormente. O SDK da MIP não oferece suporte à recriação de arquivos MSG a partir de arquivos message.rpmsg.

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

A API Inspect é implementada por meio de uma classe, mip::FileInspector, que expõe operações para inspecionar tipos de arquivos com suporte. mip::MsgInspector, que estende mip::FileInspector, expõe operações de descriptografia específicas do formato de arquivo rpmsg. O SDK da PIM não oferece suporte a nenhum cenário de publicação para arquivos message.rpmsg. Além disso, a API FileHandler::RemoveProtection() não oferece suporte a arquivos message.rpmsg. Os arquivos Message.rpmsg podem ser descriptografados apenas para inspeção e não produzirão um arquivo utilizável válido. Se o aplicativo exigir uma saída de arquivo, você deverá transmitir um arquivo MSG e remover a proteção desse objeto.

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

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 MIP (Proteção de Informações da Microsoft) para C++: referência.

Próximas etapas