보존 조치 관리

보존 조치를 통해 데이터를 무기한 보존하여 법적 또는 보존 의무를 이행할 수 있습니다. 일반적으로 보존 조치는 하나 이상의 사용자에게 적용되어 법적 사안과 관련된 데이터가 해당 법적 사안이 더 이상 활성 상태가 아닐 때까지 삭제되지 않도록 합니다.

보존 조치의 적용을 받는 사용자가 보존 조치된 데이터를 삭제하면 삭제된 데이터가 해당 사용자에게 표시되지 않지만 Google Vault에는 계속 보존됩니다. 보존 조치가 적용되는 동안에는 Vault 관리자가 보존 조치 중인 데이터를 검색하고 내보낼 수 있습니다.

보존 조치는 다음과 같은 구성요소로 이루어집니다.

  • 서비스 보존할 데이터의 담당 애플리케이션입니다. 서비스는 메일, 드라이브 또는 Google 그룹스로 설정할 수 있습니다.
  • 범위 보존 조치가 적용되는 항목입니다. 범위는 하나 이상의 사용자 계정 또는 조직 단위 (OU)로 설정할 수 있습니다.
  • 추가 옵션 (선택사항) 정의된 범위 내에서 보존할 데이터를 좁히는 데 사용되는 구체적인 세부정보 (검색어 또는 구성 옵션)입니다. 옵션은 다음과 같습니다.
    • 메일, Google 그룹스: 보존 조치를 좁히는 검색어
    • 드라이브: 보존 조치에 공유 드라이브 포함

Vault 리소스를 사용하려면 계정에 필요한 Vault 권한과 법적 사안에 대한 액세스 권한이 있어야 합니다. 법적 사안에 액세스하려면 계정에서 법적 사안을 만들었거나, 법적 사안이 계정과 공유되었거나, 모든 법적 사안 보기 권한이 있어야 합니다. 보존 조치를 만들려면 먼저 법적 사안이 있어야 합니다.

검색어를 사용하여 특정 사용자 계정의 메일에 대한 보존 조치 만들기

다음 예에서는 '내 첫 번째 메일 계정 보존 조치'라는 보존 조치가 다음에 대해 만들어지는 방법을 보여줍니다.

  • 서비스: 메일
  • 항목: 사용자 계정 'user1' 및 'user2'
  • 추가 옵션: 검색어 'to:ceo@company.com'

Directory API에서 사용자 계정 ID를 가져옵니다. HeldAccount는 계정 ID 또는 이메일을 사용할 수 있습니다. 둘 다 제공된 경우 이메일이 사용되고 계정 ID는 무시됩니다.

자바

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

조직 단위의 드라이브에 대한 보존 조치를 만들고 공유 드라이브 콘텐츠 포함

다음 예에서는 '내 첫 번째 드라이브 조직 단위 보존 조치'라는 보존 조치가 다음에 대해 만들어지는 방법을 보여줍니다.

  • 서비스: 드라이브
  • 항목: 조직 단위 'Finance'(조직 단위 ID는 orgUnitId에 캡처됨)
  • 추가 옵션: 이 조직 단위의 사용자가 회원으로 속한 공유 드라이브 포함

Directory API에서 조직 단위 ID를 가져옵니다.

자바

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' 사이에 전송된 날짜가 있는 메시지만 보존

Directory API에서 그룹 계정 ID를 가져옵니다.

자바

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

기존 보존 조치 쿼리 및 수정

다음 예에서는 보존 조치에 포함된 모든 계정을 나열하는 방법을 보여줍니다.

자바

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