Gestire le esportazioni

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

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

    Nota:non puoi avere più di 20 esportazioni in corso in tutta l'organizzazione. Per migliorare le prestazioni, suddividi le esportazioni di grandi dimensioni in set più piccoli. Ad esempio, suddividi l'esportazione in base al mese anziché esportare tutto in una volta. Un altro esempio è includere meno entità (come utenti ed entità speciali come gruppi, spazio di Chat e così via) in ogni esportazione.

    Esempi:

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

  • Recupera esportazioni: consente di recuperare le informazioni su un'esportazione.

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

  • Elimina esportazioni: rimuovi le esportazioni da una pratica quando non sono più necessarie.

Prima di iniziare

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

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

Creare un'esportazione di Gmail

L'esempio seguente 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 classico di Gmail. Per esportare 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()

Creare un'esportazione di Drive

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

  • Appartengono all'unità organizzativa specificata (ottenuta con l'SDK Admin).
  • sono state create tra gli tempi 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()

Crea un'esportazione di Meet

L'esempio seguente mostra come creare un'esportazione di Meet. Questa richiesta esporta i file associati agli account dell'unità organizzativa specificata che hanno un nome file che segue lo schema per le 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

L'esempio seguente 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 file e messaggi esportati, utilizzi 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 per la 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 sulla ricerca e sull'esportazione, inclusi i limiti di ricerca, vedi Guida introduttiva per la ricerca e l'esportazione in Vault.