Gestire le esportazioni

L'API Vault ti consente di gestire le esportazioni di Vault. Puoi:

  • Crea esportazioni: invia una richiesta a Vault che trova i messaggi o i file che corrispondono alla tua query e li esporta in Google Cloud.

    Nota:

    • Puoi eseguire fino a 20 esportazioni contemporaneamente in tutta l'organizzazione. Per velocizzare le esportazioni, dividi quelle di grandi dimensioni in esportazioni più piccole. Ad esempio, esporta i dati per mese anziché tutti in una volta. Un'altra opzione è includere meno elementi, come utenti, gruppi o spazi di chat, in ogni esportazione.
    • Le esportazioni sono disponibili per 15 giorni dopo la creazione, dopodiché vengono eliminate e non sono più accessibili.

    Esempi:

  • Elenca esportazioni: recupera lo stato di tutte le esportazioni associate a una pratica.

  • Get exports: recupera informazioni su un'esportazione.

  • Scarica esportazioni: scarica un'esportazione da Google Cloud.

  • Eliminare le esportazioni: rimuovere le esportazioni da una pratica quando non sono più necessarie.

Prima di iniziare

Per configurare le librerie e l'autenticazione richieste, segui la guida rapida per il tuo linguaggio di programmazione.

Per lavorare con le risorse Vault, l'account deve disporre dei privilegi Vault richiesti e dell'accesso alla pratica. Per accedere a una pratica, l'account deve averla creata, deve averla condivisa con sé o deve disporre del privilegio Visualizzazione di tutte le pratiche.

Creare un'esportazione di Gmail

Il seguente esempio mostra come creare un'esportazione di Gmail. Questa richiesta esporta tutti i messaggi di Gmail e della versione classica di Hangouts che soddisfano i seguenti criteri:

  • messaggi di proprietà degli account email1 e email2.
  • esclude le bozze dei messaggi.
  • messaggi inviati a ceo@solarmora.com.

Suggerimento:questi esempi utilizzano il sistema di esportazione di Gmail classico. Per eseguire l'esportazione utilizzando il nuovo sistema di esportazione, in MailExportOptions, imposta useNewExport su true.

Java

public Export createMailAccountHeldDataExports(Vault client, String matterId) {
  AccountInfo emailsToSearch = new AccountInfo().setEmails(ImmutableList.of("email1", "email2"));
  MailOptions mailQueryOptions = new MailOptions().setExportFormat("PST");
  String queryTerms = "to:ceo@solarmora.com";
  Query mailQuery =
      new Query()
          .setCorpus("MAIL")
          .setDataScope("HELD_DATA")
          .setSearchMethod("ACCOUNT")
          .setAccountInfo(emailsToSearch)
          .setTerms(queryTerms)
          .setMailOptions(mailQueryOptions);
  MailExportOptions mailExportOptions =
      new MailExportOptions()
          .setExportFormat("MBOX")
          .showConfidentialModeContent(true);
  Export wantedExport =
      new Export()
          .setMatterId(matterId)
          .setName("My first mail accounts export")
          .setQuery(mailQuery)
          .setExportOptions(new ExportOptions().setMailOptions(mailExportOptions));
  return client.matters().exports().create(matter, wantedExport).execute();
}

Python

def create_mail_account_held_data_export(service, matter_id):
  emails_to_search = ['email1', 'email2']
  mail_query_options = {'excludeDrafts': True}
  query_terms = 'to:ceo@solarmora.com'
  mail_query = {
      'corpus': 'MAIL',
      'dataScope': 'HELD_DATA',
      'searchMethod': 'ACCOUNT',
      'accountInfo': {
          'emails': emails_to_search
      },
      'terms': query_terms,
      'mailOptions': mail_query_options,
  }
  mail_export_options = {
      'exportFormat': 'MBOX',
      'showConfidentialModeContent': True
      }
  wanted_export = {
      'name': 'My first mail accounts export',
      'query': mail_query,
      'exportOptions': {
          'mailOptions': mail_export_options
  }
}
return service.matters().exports().create(
  matterId=matter_id, body=wanted_export).execute()

Crea un'esportazione di Drive

Il seguente esempio mostra come creare un'esportazione di Drive. Questa richiesta esporta tutti i file, inclusi quelli nei Drive condivisi, che soddisfano i seguenti criteri:

  • appartengono all'unità organizzativa specificata (ottenuta con l'SDK Admin).
  • sono stati creati tra gli orari specificati.

Java

public Export createDriveOuAllDataExport(Vault client, String matterId) {
  OrgUnitInfo ouToSearch = new OrgUnitInfo().setOrgUnitId("ou id retrieved from admin sdk");
  DriveOptions driveQueryOptions = new DriveOptions().setIncludeSharedDrives(true);
  Query driveQuery =
      new Query()
          .setCorpus("DRIVE")
          .setDataScope("ALL_DATA")
          .setSearchMethod("ORG_UNIT")
          .setOrgUnitInfo(ouToSearch)
          .setDriveOptions(driveQueryOptions)
          .setStartTime("2017-03-16T00:00:00Z")
          .setEndTime("2017-03-16T00:00:00Z")
          .setTimeZone("Etc/GMT+2");
  DriveExportOptions driveExportOptions = new DriveExportOptions().setIncludeAccessInfo(false);
  Export wantedExport =
      new Export()
          .setName("My first drive ou export")
          .setQuery(driveQuery)
          .setExportOptions(new ExportOptions().setDriveOptions(driveExportOptions));
  return client.matters().exports().create(matter, wantedExport).execute();
}

Python

def create_drive_ou_all_data_export(service, matter_id):
  ou_to_search = 'ou id retrieved from admin sdk'
  drive_query_options = {'includeSharedDrives': True}
  drive_query = {
    'corpus': 'DRIVE',
    'dataScope': 'ALL_DATA',
    'searchMethod': 'ORG_UNIT',
    'orgUnitInfo': {
        'org_unit_id': ou_to_search
    },
    'driveOptions': drive_query_options,
    'startTime': '2017-03-16T00:00:00Z',
    'endTime': '2017-09-23T00:00:00Z',
    'timeZone': 'Etc/GMT+2'
  }
  drive_export_options = {'includeAccessInfo': False}
  wanted_export = {
    'name': 'My first drive ou export',
    'query': drive_query,
    'exportOptions': {
        'driveOptions': drive_export_options
    }
  }
return service.matters().exports().create(
  matterId=matter_id, body=wanted_export).execute()

Creare un'esportazione di Meet

Il seguente esempio mostra come creare un'esportazione di Meet. Questa richiesta esporta i file associati agli account nell'unità organizzativa specificata che hanno un nome file che segue il pattern delle registrazioni di Meet.

Python

def create_meet_export(service, matter_id, ou_to_search, export_name):
  export = {
    'name': export_name,
    'query': {
        'corpus': 'DRIVE',
        'dataScope': 'ALL_DATA',
        'searchMethod': 'ORG_UNIT',
        'terms': 'title:"...-...-... \\(....-..-.. at ..:.. *\\)"',
        'orgUnitInfo': {
            'orgUnitId': 'id:'+ou_to_search
        },
        'driveOptions': {
            'includeTeamDrives': True,
            'includeSharedDrives': True
        },
        'timeZone': 'Etc/GMT',
        'method': 'ORG_UNIT'
    },
    'exportOptions': {
        'driveOptions': {},
        'region': 'ANY'
    },
  }

  return service.matters().exports().create(
    matterId=matter_id, body=export).execute()

Esportare da una query salvata

L'esempio seguente mostra come creare un'esportazione da una query salvata.

Python

def create_mail_export_from_saved_query(service, matter_id, saved_query_id, export_name):
  export = {
    'name': export_name,
    'exportOptions': {
      'mailOptions': {
        'exportFormat': 'PST',
        'showConfidentialModeContent': True
      },
    'region': 'ANY'
    }
  }

  export['query'] = service.matters().savedQueries().get(
    savedQueryId=saved_query_id, matterId=matter_id).execute()['query']
  return service.matters().exports().create(
    matterId=matter_id, body=export).execute()

Elenco esportazioni

Il seguente esempio mostra come recuperare un elenco di esportazioni associate a una pratica.

Java

public class exports {
  public ListExportsResponse listExports(Vault client, String matterId) {
    return client.matters().exports().list(matterId).execute();
}

Python

def list_exports(service, matter_id):
 return service.matters().exports().list(matterId=matter_id).execute()

Ottenere informazioni su un'esportazione

L'esempio seguente mostra come ottenere informazioni su un'esportazione specifica. Nota: per scaricare i file e i messaggi esportati, utilizza le API Cloud (nell'esempio successivo).

Java

public Export getExportById(Vault client, String matterId, String exportId) {
  return client.matters().exports().get(matterId, exportId).execute();
}

Python

def get_export_by_id(service, matter_id, export_id):
  return service.matters().exports().get(
    matterId=matter_id, exportId=export_id).execute()

Scaricare un'esportazione da Google Cloud

L'esempio seguente mostra come scaricare tutte le esportazioni completate in una pratica da Google Cloud. Questa richiesta utilizza le API Vault e Cloud.

Nota:per scaricare un'esportazione, un account deve disporre del privilegio Gestione delle esportazioni e della pratica condivisa con l'account.

Python

def download_exports(service, matter_id):
"""Google Cloud storage service is authenticated by running
`gcloud auth application-default login` and expects a billing enabled project
in ENV variable `GOOGLE_CLOUD_PROJECT` """
gcpClient = storage.Client()
matter_id = os.environ['MATTERID']
  for export in vaultService.matters().exports().list(
      matterId=matter_id).execute()['exports']:
    if 'cloudStorageSink' in export:
      directory = export['name']
      if not os.path.exists(directory):
        os.makedirs(directory)
      print(export['id'])
      for sinkFile in export['cloudStorageSink']['files']:
        filename = '%s/%s' % (directory, sinkFile['objectName'].split('/')[-1])
        objectURI = 'gs://%s/%s' % (sinkFile['bucketName'],
                                    sinkFile['objectName'])
        print('get %s to %s' % (objectURI, filename))
        gcpClient.download_blob_to_file(objectURI, open(filename, 'wb+'))

Eliminare un'esportazione

L'esempio seguente mostra come eliminare un'esportazione.

Java

public void deleteExportById(Vault client, String matterId, String exportId) {
   client.matters().exports().delete(matterId, exportId).execute();

Python

def delete_export_by_id(service, matter_id, export_id):
  return service.matters().exports().delete(
    matterId=matter_id, exportId=export_id).execute()

Per informazioni specifiche per le app su ricerca ed esportazione, inclusi i limiti di ricerca, consulta la Guida introduttiva per la ricerca e l'esportazione in Vault.