تحتفظ عمليات تجميد البيانات بالبيانات إلى أجل غير مسمى، وذلك لاستيفاء الالتزامات القانونية والالتزامات المتعلقة بالاحتفاظ بالبيانات. يتم عادةً تجميد بيانات مستخدم واحد أو أكثر لضمان عدم حذف البيانات التي قد تكون ذات صلة بمسألة معيّنة إلى أن تصبح هذه المسألة غير نشطة.
إذا حذف مستخدم خاضع لعملية تجميد البيانات البيانات المجمّدة، تتم إزالة هذه البيانات من الملف الشخصي للمستخدم، ولكن يتم الاحتفاظ بها في Vault. وطالما ظلت عملية الاحتفاظ بالبيانات قائمة، يمكن لمشرف Vault البحث في تلك البيانات وتصديرها.
تتضمّن عمليات الحجز العناصر التالية:
- الخدمة: التطبيق المسؤول عن البيانات التي سيتم الاحتفاظ بها يمكن ضبط الخدمة على البريد أو Drive أو "مجموعات 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 في وحدة تنظيمية وتضمين محتوى مساحة التخزين السحابي المشتركة
يوضّح المثال التالي كيفية إنشاء حجز باسم "حجز OU في My First 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"
- الكيان: حسابات المجموعة "المجموعة1" و "المجموعة2"
- خيارات إضافية: تجميد الرسائل التي تم إرسالها بين "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()
- تنسيق الطابع الزمني بالإضافة إلى ذلك، يتم تحويل وقتَي البدء/الانتهاء إلى التوقيت العالمي المنسَّق وتقريبهما إلى أسفل لبدء التاريخ المحدَّد.
طلب معلومات عن عمليات الحجز الحالية وتعديلها
يوضّح المثال التالي كيفية إدراج جميع الحسابات المضمّنة في عملية تجميد بيانات حالية:
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()