In Holds werden Daten auf unbestimmte Zeit aufbewahrt, um rechtliche Aufbewahrungspflichten zu erfüllen. In der Regel werden Holds für einen oder mehrere Nutzer verhängt, damit die für eine Rechtsangelegenheit potenziell relevanten Daten erst gelöscht werden können, wenn die Rechtsangelegenheit nicht mehr aktiv ist.
Wenn ein Nutzer, der einem Hold unterliegt, auf „Hold“ gesetzte Daten löscht, werden diese Daten aus der Ansicht des Nutzers entfernt, bleiben aber in Vault gespeichert. Solange der Hold besteht, kann ein Vault-Administrator diese Daten suchen und exportieren.
Holds bestehen aus folgenden Komponenten:
- Ein Dienst: die Anwendung, die für die aufzubewahrenden Daten zuständig ist. Der Dienst kann auf „E-Mail“, „Drive“ oder „Gruppen“ eingestellt werden.
- Umfang: die Entitäten, für die der Hold gilt. Der Bereich kann auf ein oder mehrere Nutzerkonten oder eine Organisationseinheit (OE) festgelegt werden.
- Zusätzliche Optionen (optional): die spezifischen Details (Suchanfragen oder Konfigurationsoptionen), mit denen die Daten eingegrenzt werden, die innerhalb des festgelegten Umfangs enthalten sein sollen. Zu den Optionen gehören:
- E-Mail, Google Groups: Suchanfrage zur Eingrenzung des Holds
- Google Drive: Geteilte Ablagen in Hold einschließen
Um mit Vault-Ressourcen arbeiten zu können, muss das Konto über die erforderlichen Vault-Funktionen Berechtigungen und Zugriff auf die ist wichtig. Damit Sie auf eine Rechtsangelegenheit zugreifen können, muss sie mit dem Konto erstellt worden sein und die Berechtigung die für sie freigegeben ist oder Ihnen die Berechtigung Alle Rechtsangelegenheiten abrufen erteilen kann.
Mit einer Suchanfrage einen Hold für E-Mails in bestimmten Nutzerkonten erstellen
Das folgende Beispiel zeigt den Hold namens „My First E-Mail-Konten-Hold“. erstellt wird für:
- Dienst: mail
- Entität: Nutzerkonten „user1“ und „user2“
- Weitere Optionen: Suchanfrage „to:ceo@IhrUnternehmen.de“
Nutzerkonto-IDs von AdminSdk abrufen. Das Feld Ein auf „Hold“ gesetztes Konto kann die Konto-ID oder die E-Mail-Adresse enthalten. Wenn beides angegeben ist, wird die E-Mail-Adresse verwendet. und die Konto-ID wird ignoriert.
Java
HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:ceo@company.com"); Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(user1accountId)); accounts.add(new HeldAccount().setEmail(user2Email)); Hold hold = new Hold() .setName("My First mail Accounts Hold") .setCorpus("MAIL"); .setQuery(new CorpusQuery().setMailQuery(mailQuery)) .setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_mail_accounts(service, matter_id, account_id): mail_query = {'terms': 'to:ceo@company.com'} accounts = [ {'accountId': user1_account_id}, {'email': user2_email} ] wanted_hold = { 'name': 'My First mail Accounts Hold', 'corpus': 'MAIL', 'query': { 'mailQuery': mail_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Hold für Google Drive für eine OE erstellen und Inhalte aus geteilten Ablagen einschließen
Das folgende Beispiel zeigt, wie ein Hold namens „Meine erste Ablage“-OE-Hold“ lautet. erstellt wird für:
- Dienst: Drive
- Entität: Organisationseinheit „Finanzen“ (OE-ID wird in „orgUnitId“ erfasst)
- Zusätzliche Optionen: Geteilte Ablagen berücksichtigen, in denen Nutzer in dieser Organisationseinheit Mitglied sind
Rufen Sie die OE-IDs von AdminSdk ab.
Java
HeldOrgUnit orgUnit = new HeldOrgUnit().setOrgUnitId(orgUnitId); // Include shared drives content. HeldDriveQuery driveQuery = new HeldDriveQuery().setIncludeSharedDriveFiles(true); // Create the hold. Hold hold = new Hold() .setName("My First Drive OU Hold") .setCorpus("DRIVE") .setQuery(new CorpusQuery().setDriveQuery(driveQuery)) .setOrgUnit(orgUnit); Hold createdHold = client.matters().holds().create(matterId, hold).execute(); return createdHold;
Python
def create_hold_drive_org(service, matter_id, org_unit_id): drive_query = {'includeSharedDriveFiles': True} org_unit = {'orgUnitId': org_unit_id} wanted_hold = { 'name': 'My First Drive OU Hold', 'corpus': 'DRIVE', 'orgUnit': org_unit, 'query': { 'driveQuery': drive_query } } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Hold für Google Groups für bestimmte Gruppenkonten mit einem Zeitraum erstellen
Das folgende Beispiel zeigt, wie ein Hold namens „My First Group Hold“ (Mein erster Gruppen-Hold) heißt. erstellt wird für:
- Dienst: Gruppen
- Entität: Gruppenkonten "group1" und „group2“
- Weitere Optionen: nur Nachrichten auf „Hold“ setzen, deren Sendedatum zwischen „startTime“ liegt und "endTime"
Gruppenkonto-IDs von AdminSdk abrufen.
Java
String APRIL_2_2017_GMT = "2017-04-02T00:00:00Z"; // See below for format*. Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(accountId)); accounts.add(new HeldAccount().setAccountId(accountId2)); HeldGroupsQuery groupQuery = new HeldGroupsQuery(); // Restrict by sent date. groupQuery.setStartTime(APRIL_2_2017_GMT); groupQuery.setEndTime(APRIL_2_2017_GMT); // create the hold Hold hold = new Hold() .setName("My First Group Hold") .setCorpus("GROUPS") .setQuery(new CorpusQuery().setGroupsQuery(groupQuery)); hold.setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_groups_date_range(service, matter_id, group_account_id): groups_query = { 'startTime': '2017-04-02T00:00:00Z', # See below for format* 'endTime': '2017-04-02T00:00:00Z' } accounts = [{'accountId': group_account_id}] wanted_hold = { 'name': 'My First Group Hold', 'corpus': 'GROUPS', 'query': { 'groupsQuery': groups_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
- Zeitstempelformat. Außerdem werden die Start- und Endzeiten in GMT umgerechnet und auf den Beginn des angegebenen Datums abgerundet.
Vorhandene Holds abfragen und ändern
Im folgenden Beispiel sehen Sie, wie alle Konten aufgelistet werden, die einem bestehenden Hold zugeordnet sind:
Java
client.matters().holds().accounts().list(matterId, holdId).execute().getAccounts();
Python
# If no accounts are on hold, ['accounts'] will raise an error. def list_held_accounts(service, matter_id, hold_id): return service.matters().holds().accounts().list( matterId=matter_id, holdId=hold_id).execute()['accounts']
Das folgende Beispiel zeigt, wie Sie einem bestehenden Hold ein Konto hinzufügen und ein Konto daraus entfernen können:
Java
// Add an account by id. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setAccountId(accountId)) .execute(); // Remove an account by id. client.matters().holds().accounts().delete(matterId, holdId, accountId).execute(); String email = "email@email.com"; // Add an account by email. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setEmail(email)) .execute();
Python
def add_held_account(service, matter_id, hold_id, account_id): held_account = {'accountId': account_id} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute() def remove_held_account(service, matter_id, hold_id, account_id): return service.matters().holds().accounts().delete( matterId=matter_id, holdId=hold_id, accountId=account_id).execute() def add_held_account(service, matter_id, hold_id, email): held_account = {'email': email} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute()
Das folgende Beispiel zeigt, wie Sie die OE eines vorhandenen OE-Holds ändern:
Java
Hold hold = client.matters().holds().get(matterId, holdId).execute(); hold.getOrgUnit().setOrgUnitId(newOrgUnitId); Hold modifiedHold = client.matters().holds().update(matterId, holdId, hold).execute(); return modifiedHold;
Python
def update_hold_ou(service, matter_id, hold_id, org_unit_id): current_hold = get_hold(matter_id, hold_id) current_hold['orgUnit'] = {'orgUnitId': org_unit_id} return service.matters().holds().update( matterId=matter_id, holdId=hold_id, body=current_hold).execute()
Das folgende Beispiel zeigt, wie alle Holds für eine Rechtsangelegenheit aufgelistet werden:
Java
String matterId = "Matter Id";// List all holds. List
holdsList = client.matters().holds().list(matterId).execute().getHolds(); // Paginate on holds. ListHoldsResponse response = client .matters() .holds() .list(matterId) .setPageSize(10) .execute();
String nextPageToken = response.getNextPageToken(); if (nextPageToken != null) { client .matters() .holds() .list(matterId) .setPageSize(10) .setPageToken(nextPageToken) .execute(); }
Python
# This can paginate in the same manner as with matters. def list_holds(service, matter_id): return service.matters().holds().list(matterId=matter_id).execute()