החזקות לצורך משפטי שומרות נתונים ללא הגבלת זמן כדי לעמוד במחויבויות משפטיות או בהתחייבויות שימור. בדרך כלל החזקות לצורך משפטי מיושמות על משתמש אחד או יותר, כדי לוודא שלא ניתן למחוק את הנתונים שעשויים להיות רלוונטיים לעניין מסוים עד שהעניין יפסיק להיות פעיל.
אם משתמש שחלה עליו החזקה לצורך משפטי מוחק את הנתונים המוחזקים, הנתונים האלה יוסרו מהתצוגה של המשתמש, אבל הם נשמרים ב-Vault. כל עוד ההשהיה מוגדרת, אדמין ב-Vault יכול לחפש את הנתונים האלה ולייצא אותם.
החזקות לצורך משפטי כוללות את הרכיבים הבאים:
- שירות – האפליקציה שאחראית על הנתונים. אפשר להגדיר את השירות לאימייל, ל-Drive או לקבוצות Google.
- היקף – הישויות שכלולות בהחזקה. אפשר להגדיר את ההיקף לחשבון משתמש אחד או יותר, או ליחידה ארגונית (OU).
- אפשרויות נוספות (אופציונלי) – הפרטים הספציפיים (שאילתות חיפוש או אפשרויות הגדרה) שמשמשים לצמצום הנתונים שיוחזקו במסגרת ההיקף שהוגדר. האפשרויות כוללות:
- mail, קבוצות Google: שאילתת חיפוש לצמצום ההשהיה
- Drive: יש לכלול תיקיות אחסון שיתופי בהחזקה
כדי לעבוד עם המשאבים של Vault, החשבון צריך לקבל את ההרשאות הנדרשות ל-Vault וגישה לעניין. כדי לגשת לעניין, צריך שהחשבון יצר את העניין, אם העניין משותף איתו או צריכה להיות לו ההרשאה הצגת כל העניינים.
יצירת החזקה לצורך משפטי לאימייל בחשבונות משתמשים ספציפיים באמצעות שאילתת חיפוש
הדוגמה הבאה מראה איך נוצרת החזקה לצורך משפטי בשם 'החזקה של חשבונות האימייל הראשונים שלי' בשביל:
- שירות: דואר
- ישות: חשבונות משתמשים 'user1' ו-'user2'
- אפשרויות נוספות: שאילתת חיפוש "to:ceo@company.com"
אחזור של מזהים של חשבונות משתמשים מ-AdminSdk. שימו לב שה-HeldAccount יכול לקבל את מספר החשבון או את כתובת האימייל. אם נותנים את שניהם, המערכת משתמשת בכתובת האימייל ומתעלמת ממזהה החשבון.
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()
יצירת החזקה לצורך משפטי ב-Drive ביחידה ארגונית והוספת תוכן מאחסון שיתופי
בדוגמה הבאה אפשר לראות איך נוצרת החזקה לצורך משפטי בשם 'ההשהיה ביחידה הארגונית של האחסון הראשון שלי':
- שירות: Drive
- ישות: היחידה הארגונית 'פיננסים' (המזהה הארגוני תועד ביחידה הארגונית orgUnitId)
- אפשרויות נוספות: כולל תיקיות אחסון שיתופי שמשתמשים ביחידה הארגונית הזו חברים בהן
אחזור של מזהי יחידות ארגוניות מ-AdminSdk.
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()
יצירת החזקה לצורך משפטי בקבוצות Google בחשבונות קבוצתיים ספציפיים עם טווח תאריכים
הדוגמה הבאה מראה איך נוצרת החזקה בשם 'ההחזקה הראשונה של הקבוצה' עבור:
- שירות: קבוצות Google
- ישות: חשבונות קבוצתיים "group1" ו-"group2"
- אפשרויות נוספות: שמירה רק של הודעות עם תאריכי שליחה בין 'startTime' ל-'endTime'
אחזור של מספרי חשבונות קבוצתיים מ-AdminSdk.
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()
- פורמט חותמת זמן. בנוסף, שעות ההתחלה/endTimes מומרות ל-GMT ומעוגלות כלפי מטה לתחילת התאריך הנתון.
שליחת שאילתות ושינוי של החזקות קיימות
בדוגמה הבאה אפשר לראות איך מציגים רשימה של כל החשבונות שנכללים בהחזקה קיימת:
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']
בדוגמה הבאה אפשר לראות איך להוסיף חשבון להחזקה קיימת ואיך להסיר ממנה חשבון:
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()
בדוגמה הבאה אפשר לראות איך משנים את היחידה הארגונית בהחזקה ארגונית קיימת:
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()
בדוגמה הבאה אפשר לראות איך מציגים את רשימת כל ההחזקות לצורך משפטי של עניין מסוים:
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()