Gestire le esportazioni

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

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

    Nota:non puoi eseguire più di 20 esportazioni in tutta l'organizzazione. Per migliorare le prestazioni, suddividi le esportazioni di grandi dimensioni in gruppi più piccoli. Ad esempio, puoi suddividere l'esportazione per mese invece di 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:

  • Elenco esportazioni: consentono di recuperare lo stato di tutte le esportazioni associate a una pratica.

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

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

  • Elimina esportazioni: consente di rimuovere le esportazioni da una pratica quando non sono più necessarie.

Prima di iniziare

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

Per utilizzare le risorse Vault, l'account deve disporre dei privilegi necessari per Vault 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.
  • le bozze dei messaggi.
  • messaggi inviati a ceo@solarmora.com.

Suggerimento:in questi esempi viene utilizzato il sistema di esportazione classico di Gmail. 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

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

  • Appartengono all'unità organizzativa specificata (ottenuta con 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

L'esempio seguente mostra come creare un'esportazione di Meet. Con questa richiesta vengono esportati i file associati agli account dell'unità organizzativa specificata il cui nome file segue lo schema utilizzato 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 i dati 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()

Elenca 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 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 di 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 sull'app relative alla ricerca e all'esportazione, inclusi i limiti di ricerca, vedi Guida introduttiva per la ricerca e l'esportazione in Vault.