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

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

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

تتضمّن حالات التعليق المكوّنات التالية:

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

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

إنشاء تعليق لرسائل البريد الإلكتروني في حسابات مستخدمين محدّدة باستخدام طلب بحث

يوضّح المثال التالي كيفية إنشاء تعليق باسم "My First mail Accounts Hold" (تعليق حسابات البريد الأول) لما يلي:

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

استرداد أرقام تعريف حسابات المستخدمين من Directory API يمكن أن يتضمّن HeldAccount معرّف حساب أو عنوان بريد إلكتروني. في حال توفّر كليهما، سيتم استخدام عنوان البريد الإلكتروني وتجاهل معرّف الحساب.

جافا

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 على وحدة تنظيمية وتضمين محتوى مساحة التخزين السحابي المشتركة

يوضّح المثال التالي كيفية إنشاء تعليق باسم "My First Drive OU Hold" لما يلي:

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

استرداد أرقام تعريف الوحدات التنظيمية من Directory API

جافا

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" لحسابات مجموعات محدّدة خلال نطاق زمني

يوضّح المثال التالي كيفية إنشاء حجز باسم "My First Group Hold" (حجز مجموعتي الأول) للعناصر التالية:

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

استرداد معرّفات حسابات المجموعة من Directory API

جافا

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()
 
  • تنسيق الطابع الزمني بالإضافة إلى ذلك، يتم تحويل start/endTimes إلى توقيت غرينتش وتقريبه إلى أقرب تاريخ سابق.

الاستعلام عن حالات التعليق الحالية وتعديلها

يوضّح المثال التالي كيفية إدراج جميع الحسابات المضمّنة في تعليق.

جافا

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'] 

يوضّح المثال التالي كيفية إضافة حساب إلى قائمة الانتظار وإزالته منها.

جافا

// 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()
 

يوضّح المثال التالي كيفية تعديل الوحدة التنظيمية في عملية تعليق حالية.

جافا

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() 

يوضّح المثال التالي كيفية إدراج جميع حالات تجميد البيانات لمسألة قانونية.

جافا

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()