Ediscovery PST export – coleta de dados e análise para troubleshooting
By: Caio Ribeiro César
Ediscovery é o processo de search&hold do Office 365. Utilizado por administradores de Exchange, Skype e Sharepoint e também muitas vezes por times de Compliance.
Já discutimos anteriormente alguns métodos de ediscovery search via Protection Center. Desta vez, vamos discutir o pst export tool do portal, mais especificamente o processo que habilita o trace mode para a análise e troubleshooting.
Inicialmente, criamos o InPlace Hold:
Assim que o Hold for criado (com as customizações necessárias para cada administrador), utilizamos a ferramenta de pst export – para exportar os dados filtrados pelo search.
Assim que o export tool é iniciado, podemos ver uma nova página rapidamente aberta no browser e então a ferramenta inicia o procedimento:
Neste caso, os dados foram exportados com sucesso. Podemos validar na pasta de destino:
1) Caioc-Hold.config: Informações do batch de export.
Application launched from: https://r1.res.office365.com/ecp/15.1.534.18/exporttool/microsoft.exchange.ediscovery.exporttool.application?reqId=1467816999873\&name=Caioc-Hold\&ews=https://outlook.office365.com/ews/Exchange.asmx
Export Name: Caioc-Hold
Last Export Time: 7/6/2016 11:56:46 AM
Include Duplicates: True
Include Unsearchable Items: true (disabled because the search query was empty.)
Search Query: size>=0
Source Mailboxes:
caioc@c4iocesar.onmicrosoft.com
2) Caioc-Hold-07.06.2016-1156AM1.resultslog: Log detalhado de mensagens migradas. Neste caso, um arquivo csv com 149 linhas – cada um para uma mensagem da mailbox.
3) Caioc-Hold-Caio Cesar-07.06.2016-1156AM.pst: dados exportados da mailbox.
How to: Analisando falha no export com informações de config.
Criamos um novo search, com um filtro aplicado para emails com um time range de Janeiro 2016-Julho 2016. Ao exportar os dados via pst export tool, recebemos o erro http401:
---------------------------
eDiscovery PST Export Tool
---------------------------
Export failed with error type: 'Unauthorized'. Details: The request failed with HTTP status 401: Unauthorized.
---------------------------
OK
---------------------------
Ao entrar na pasta de destino, podemos abrir o arquivo de configuração e então copiar a URL do request específico desta migração:
E então alteramos esta URL, para que o trace seja coletado:
Em uma nova sessão de browser, enviamos a URL acima (contendo o string de ?trace=1). Um novo export é gerado, porém desta vez podemos localizar um arquivo “trace.log” na pasta de destino.
[7/6/2016 2:35:59 PM][Information]: Calling CredentialHandler.RequestCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:35:59 PM][Information]: Inside CredentialHandler.RequestCredential: Reading credential from system credential store.
[7/6/2016 2:35:59 PM][Information]: Inside CredentialHandler.RequestCredential: Prompting for credential.
[7/6/2016 2:36:13 PM][Information]: Calling CredentialHandler.InvalidateCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:13 PM][Information]: Calling CredentialHandler.RequestCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:13 PM][Information]: Inside CredentialHandler.RequestCredential: Reading credential from system credential store.
[7/6/2016 2:36:13 PM][Information]: Inside CredentialHandler.RequestCredential: Prompting for credential.
[7/6/2016 2:36:20 PM][Information]: Calling CredentialHandler.InvalidateCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:20 PM][Information]: Calling CredentialHandler.RequestCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:20 PM][Information]: Inside CredentialHandler.RequestCredential: Reading credential from system credential store.
[7/6/2016 2:36:20 PM][Information]: Inside CredentialHandler.RequestCredential: Prompting for credential.
[7/6/2016 2:36:27 PM][Information]: Calling CredentialHandler.InvalidateCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:27 PM][Information]: Calling CredentialHandler.RequestCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:27 PM][Information]: Inside CredentialHandler.RequestCredential: Reading credential from system credential store.
[7/6/2016 2:36:27 PM][Information]: Inside CredentialHandler.RequestCredential: Prompting for credential.
[7/6/2016 2:36:33 PM][Information]: Calling CredentialHandler.InvalidateCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:33 PM][Information]: Calling CredentialHandler.RequestCredential for https://outlook.office365.com/ews/Exchange.asmx
[7/6/2016 2:36:33 PM][Information]: Inside CredentialHandler.RequestCredential: Reading credential from system credential store.
[7/6/2016 2:36:33 PM][Information]: Inside CredentialHandler.RequestCredential: Prompting for credential.
trace.log
Neste arquivo verbose, podemos entender que o request de credential foi efetuado 6 vezes, sem sucesso.
Isto pode significar um 3rd party no meio desta conexão (ou problemas de senha). Ao coletar um fiddler trace, podemos confirmar que propositalmente meu proxy server estava negando a autenticação da comunicação:
POST https://outlook.office365.com/ews/Exchange.asmx HTTP/1.1 User-Agent: Exchange\15.01.0534.018\EDiscovery\EWS\S=EX&R=0&BI=636034151641878997&SID=d7efce94-a2d9-4fb6-a3b3-08c7e69441b9&RT=636034151641878997 client-request-id: 39100b5c-ea80-4e7b-a217-ff1775cb316f return-client-request-id: true Content-Type: text/xml; charset=utf-8 SOAPAction: "https://schemas.microsoft.com/exchange/services/2006/messages/SearchMailboxes" Host: outlook.office365.com Content-Length: 1244 Expect: 100-continue Connection: Keep-Alive HTTP/1.1 401 Unauthorized X-Powered-By: ASP.NET WWW-Authenticate: Basic Realm="" Date: Wed, 06 Jul 2016 15:19:26 GMT Content-Length: 0
Em alguns cenários, o export falha com um erro genérico, porém o arquivo de configuração não é gerado pela ferramenta - dificultando a coleta de dados.
Iniciamos o fiddler antes do export de dados. Desta maneira podemos coletar o ID do request sem a necessidade do arquivo de configuração:
Neste caso, o ID de request é “1467815524174”, sendo então a URL de trace: