إدارة عمليات تجميد البيانات

تحتفظ عمليات تجميد البيانات بالبيانات إلى أجل غير مسمى من أجل تلبية الالتزامات القانونية أو الالتزامات المتعلقة بالاحتفاظ. عادة ما يتم وضع عمليات تجميد البيانات على مستخدم واحد أو أكثر للتأكد من عدم إمكانية حذف البيانات التي يُحتمل أن تكون ذات صلة بمسألة قانونية إلى أن تصبح هذه المسألة القانونية نشطة.

إذا حذف مستخدم خاضع لعملية تجميد البيانات البيانات التي تم تجميدها، ستتم إزالة هذه البيانات من الملف الشخصي للمستخدم، ولكن يتم الاحتفاظ بها في Vault. وطالما ظلت عملية تجميد البيانات قائمة، يمكن لمشرف Vault البحث في تلك البيانات وتصديرها.

تشمل عمليات تجميد البيانات العناصر التالية:

  • خدمة: التطبيق المسؤول عن الاحتفاظ بالبيانات. يمكن ضبط الخدمة على البريد أو Drive أو المجموعات.
  • نطاق: الكيانات المشمولة في عملية تجميد البيانات. يمكن ضبط النطاق على حساب مستخدم واحد أو أكثر، أو على وحدة تنظيمية (OU).
  • خيارات إضافية (اختيارية): التفاصيل المحدّدة (طلبات البحث أو خيارات الضبط) المستخدَمة لتضييق نطاق البيانات التي يتم تجميدها ضمن النطاق المحدّد. تشمل الخيارات ما يلي:
    • البريد أو المجموعات: طلب البحث لتضييق نطاق عملية تجميد البيانات
    • Drive: تضمين مساحات التخزين السحابي المشتركة في عملية تجميد البيانات

للعمل باستخدام موارد Vault، يجب أن يمتلك الحساب امتيازات Vault المطلوبة وأن لديه حق الوصول إلى المسألة القانونية. للوصول إلى مسألة قانونية، يجب أن يكون الحساب قد أنشأ المسألة القانونية، أو أن تتم مشاركة المسألة القانونية معها، أو أن يكون لديك امتياز عرض جميع المسائل القانونية.

إنشاء عملية تجميد بيانات للبريد في حسابات مستخدمين مُحدَّدة باستخدام طلب بحث

يوضِّح المثال التالي كيفية إنشاء عملية تجميد بيانات باسم "تجميد حسابات البريد الأولى" بالنسبة إلى:

  • الخدمة: البريد
  • الكيان: حسابا المستخدم "user1" و "user2"
  • خيارات إضافية: طلب البحث "to:ceo@company.com"

يمكنك استرداد أرقام تعريف حسابات المستخدمين من AdminSdk. لاحظ أنه يمكن للحساب المعلق أن يأخذ رقم تعريف الحساب أو البريد الإلكتروني. في حال توفير كليهما، يتم استخدام البريد الإلكتروني وتجاهل رقم تعريف الحساب.

Java

HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:ceo@company.com");
List accounts = 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" لما يلي:

  • الخدمة: Drive
  • الكيان: الوحدة التنظيمية "الشؤون المالية" (تم تسجيل رقم تعريف الوحدة التنظيمية في رقم تعريف الوحدة التنظيمية)
  • خيارات إضافية: تضمين مساحات التخزين السحابي المشتركة التي ينتمي إليها المستخدمون في هذه الوحدة التنظيمية

يمكنك استرداد أرقام تعريف الوحدة التنظيمية من 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()

إنشاء عملية تجميد بيانات للمجموعات في حسابات مجموعة محدّدة باستخدام نطاق زمني

يوضِّح المثال التالي كيفية إنشاء عملية تجميد بيانات باسم "تجميد بيانات مجموعتي الأولى" لما يلي:

  • الخدمة: المجموعات
  • الكيان: حساب المجموعة "group1" و "group2"
  • خيارات إضافية: تجميد الرسائل التي تتضمن تواريخ إرسال فقط بين "وقت البدء" و "وقت الانتهاء"

يمكنك استرداد أرقام تعريف حسابات المجموعات من AdminSdk.

Java

String APRIL_2_2017_GMT = "2017-04-02T00:00:00Z"; // See below for format*.
 
List accounts = 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()