기본 콘텐츠로 건너뛰기

[G Suite for Enterprise 기능] BigQuery의 Gmail 로그 검색어 예

G Suite 제품에는 크게 3가지 종류가 있습니다.
  • G Suite Basic - 1사용자/30GB/연간 50달러
  • G Suite for Business - 1사용자/무제한용량/연간 120달러
  • G Suite for Enterprise - 1사용자/무제한용량/연간 300달러
이 3가지 제품의 자세한 차이점을 상세히 비교한 자료는 https://goo.gl/LgD16G 를 참고하시기 바랍니다.

G Suite for Enterprise 의 핵심 기능중에 하나는 지메일 로그 대상으로 Google BigQuery를 적용할 수 있습니다. 

그동안 지메일 대상으로 BigQuery를 할 수 있는 예가 무엇이 있을까? 궁금했었습니다. 아래 샘플은 G Suite for Enterprise 의지메일 로그를 대상으로 할 수 있는 BigQuery 검색어 예입니다. 

BigQuery의 Gmail 로그 검색어 예

검색어 예

이 기능은 G Suite Enterprise에서만 제공됩니다.
다음은 BigQuery를 사용하는 Gmail 로그 검색어의 예입니다. 따로 언급되지 않은 경우 모든 예에서는 기존 SQL을 사용합니다. 
검색어는 다음 권장사항을 따르는 것이 좋습니다.
  • 분석에 필요한 데이터만 검색합니다. 예에서는 1,000개 일치로 제한하지만, 제한을 직접 설정할 수 있습니다.
  • 검색을 시간 내에 완료하도록 합니다. 하루가 일반적입니다.

제목 일치

지정한 제목과 일치하는 최대 1,000개 레코드의 메일 요약 보기:
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.subject contains "test"
LIMIT 1000

수신자 일치

지정한 수신자의 개별 메일 수:
SELECT EXACT_COUNT_DISTINCT(message_info.rfc2822_message_id)
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.destination.address == "recipient@example.com"

처리 방법 및 수신자 일치

다음 두 가지 모두와 일치하는 최대 1,000개 레코드의 메일 요약 보기:
  • 지정한 처리 방법(수정, 거부, 격리)
  • 지정한 수신자
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id
FROM (FLATTEN([your_dataset_id.daily_YYYYMMDD], message_info.destination.address))
WHERE
message_info.triggered_rule_info.consequence.action == 17
      and message_info.destination.address == "recipient@example.com"
LIMIT 1000

규칙 설명이 트리거됨

지정한 규칙 설명이 트리거되는 최대 1,000개 레코드의 메일 요약 보기:
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id,
FROM (FLATTEN([your_dataset_id.daily_YYYYMMDD], message_info.destination.address))
WHERE message_info.triggered_rule_info.consequence.reason contains "description"
LIMIT 1000

스팸으로 표시됨

최대 1,000개 레코드의 메일 요약 보기: 
  • 스팸으로 표시됨
  • 지정한 수신자
  • 모든 이유
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.is_spam and
      message_info.destination.address == "recipient@example.com"
LIMIT 1000

암호화 프로토콜—암호화되지 않음

암호화 프로토콜—암호화되지 않음인 메일 요약 보기:
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.connection_info.smtp_tls_state == 0
LIMIT 1000

암호화 프로토콜—TLS만

암호화 프로토콜—TLS만인 메일 요약 보기:
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.connection_info.smtp_tls_state == 1
LIMIT 1000

메시지 ID 일치

지정한 메시지 ID의 메일 세부정보 보기(메시지 ID 주위에 '<>' 포함):
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       event_info.success,
       event_info.elapsed_time_usec,
       message_info.subject,
       message_info.source.address,
       message_info.source.service,
       message_info.source.selector,
       message_info.destination.address,
       message_info.destination.service,
       message_info.destination.selector,
       message_info.rfc2822_message_id,
       message_info.payload_size,
       message_info.num_message_attachments,
       message_info.connection_info.smtp_tls_state,
       message_info.description
FROM [your_dataset_id.daily_YYYYMMDD]
WHERE message_info.rfc2822_message_id == ""
LIMIT 1000

처리 방법—메일 거부

메일 거부:
  • 어떤 규칙으로 거부되었나요?
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id,
      message_info.triggered_rule_info.consequence.reason
FROM (FLATTEN([your_dataset_id.daily_YYYYMMDD], message_info.destination.address))
WHERE message_info.rfc2822_message_id == "" and
      message_info.triggered_rule_info.consequence.action == 17
LIMIT 1000

처리 방법—메일 수정

메일 수정: 
  • 어떤 규칙으로 수정되었나요?
  • 수정의 하위 카테고리는 무엇인가요(헤더, 제목 등)?
     
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id,
       message_info.triggered_rule_info.consequence.action,
       message_info.triggered_rule_info.consequence.reason
FROM (FLATTEN([your_dataset_id.daily_YYYYMMDD], message_info.destination.address))
WHERE message_info.rfc2822_message_id == "" and
      (not message_info.triggered_rule_info.consequence.action is null and
       message_info.triggered_rule_info.consequence.action != 0 and
       message_info.triggered_rule_info.consequence.action != 17 and   message_info.triggered_rule_info.consequence.action != 3)
LIMIT 1000

메일 격리: 
  • 어떤 규칙으로 메일이 격리되었나요?
SELECT FORMAT_UTC_USEC(event_info.timestamp_usec) as timestamp,
       message_info.subject,
       message_info.source.address,
       message_info.destination.address,
       message_info.rfc2822_message_id,
      message_info.triggered_rule_info.consequence.reason
FROM (FLATTEN([your_dataset_id.daily_YYYYMMDD], message_info.destination.address))
WHERE message_info.rfc2822_message_id == "" and
      message_info.triggered_rule_info.consequence.action == 3
LIMIT 1000

복합 검색어

지난 30일 동안 특정 규칙(규칙 설명)으로 필터링된 모든 메일 수
SELECT COUNT(message_info.rfc2822_message_id) as message_cnt
FROM (TABLE_DATE_RANGE([your_dataset_id.daily_],
      DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'),
      CURRENT_TIMESTAMP()))
Where message_info.triggered_rule_info.consequence.reason contains "rule description"

1일 이내에 TLS 암호화 없이 수신된 모든 메일 표시:
SELECT message_info.subject,
       message_info.rfc2822_message_id
FROM (TABLE_DATE_RANGE([your_dataset_id.daily_],
      DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'),
      CURRENT_TIMESTAMP()))
Where message_info.connection_info.smtp_tls_state == 0

지난 30일 이내에 계정에서 메일을 교환한 상위 10개 도메인 표시:
SELECT
  COUNT(message_info.rfc2822_message_id) as message_cnt,
  CASE
    WHEN message_info.is_policy_check_for_sender
      THEN REGEXP_EXTRACT(message_info.source.address , "(@.*)")
    ELSE REGEXP_EXTRACT(message_info.destination.address , "(@.*)")
  END as domain
FROM (TABLE_DATE_RANGE([your_dataset_id.daily_],
      DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'),
      CURRENT_TIMESTAMP()))
GROUP BY domain
ORDER BY message_cnt desc
LIMIT 10
자세한 내용은 구글 도움말  참고

----------------------------------------
G Suite/Chromebook 전문 블로그 - charlychoi.blogspot.kr


댓글

이 블로그의 인기 게시물

[팁-구글드라이브] 문서 공유시- 사용자 이름 대신에 익명의 동물이 표시 되는 이유와 동물 종류

구글 드라이브에는 다른 유사 서비스에서는 제공하지 않는 구글 만의 유니크한 기능들이 있다 구글의 문서 공동 작업시 표시되는 익명의 동물은 어떠한 경우에 표지 되는 걸 까요? '웹에 공개' 또는 '링크가 있는 사용자' 공유 설정을 선택하면 인식할 수 없는 이름이나 익명의 동물이 표시될 수 있습니다. 파일에서 인식할 수 없는 이름을 볼 수 있는 몇 가지 이유는 다음과 같습니다. 메일링 리스트와 파일을 공유합니다. Google 계정이 없는 사용자와 파일을 공유하며, 그 사용자가 다른 사용자에게 공유 초대를 전달했습니다. 내 파일을 수정할 수 있는 누군가가 파일을 다른 사용자와 공유했습니다. 다른 사용자가 자신의 Google 계정 이름을 변경했습니다. 공유 설정 페이지에서 해당 사용자 이름 위로 마우스를 이동하여 이메일 주소를 확인하세요. 익명의 동물 다른 사용자에게 개별적으로 보기 또는 수정 권한을 부여하거나 메일링 리스트에 속해 있는 경우에만 사용자 이름이 표시됩니다. 파일 권한을 '링크가 있는 사용자'로 설정하면 파일을 보고 있는 사용자의 이름이 표시되지 않습니다. 대신 다른 사용자가 익명으로 라벨이 지정되어 표시되고 각 익명 사용자는 다양한 익명의 동물로 나열됩니다. 파일 권한을 '링크가 있는 사용자'로 설정했지만 특정 사용자와 파일을 공유하는 경우 파일을 공유한 사용자의 이름이 표시됩니다. 그 외 다른 사용자가 파일을 볼 때는 익명으로 나타납니다. 비공개 파일의 익명 동물 파일 권한을 '링크가 있는 사용자'로 설정한 다음 이를 '특정 사용자'로 변경하면 다음과 같은 경우 여러 익명의 동물이 표시될 수 있습니다. 누군가 파일을 여러 번 여는 경우에는 익명의 동물 목록에서 오래되고 연결이 끊긴 세션을 강제 종료하는 데 조금 시간이 걸릴 수 있습니다. 누군가 온라인 메신저를 통해 파일 링크를 여는 경우

[팁] Google Slide 프리젠테이션시 모든 한글폰트가 '굴림체' 로 바뀌는 현상을 해결한 크롬 확장 프로그램 소개

구글 문서도구인 구글 슬라이드를 이용하여 프리젠테이션을 많이 하는 분들을 위한 희소식 현재 구글 슬라이드에서는 슬라이드 편집시 사용한 고유 한글 폰트들은 프리젠테이션 모드로 전환할 경우는 모두 '굴림체' 로 바뀌어 표시가 되는 불편함이 있었습니다. 예). 슬라이드 편집에서 사용한 '궁서체' 한글 폰트는, 프리젠테이션 모드에서는 '굴림체'로 바뀌어 디스플레이됨 예). 슬라이드 편집 모드 - '궁서체' 폰트 사용 프리젠테이션 모드에서 '굴림체' 로 변경됨    따라서, 이러한 현상을 해결하는 크롬 확장 프로그램이 개발 되었습니다.  크롬 확장 프로그램 명 - ShowAsis 입니다. 크 롬 웹스토어 링크 -  https://goo.gl/PVPkZz 이 확장 프로그램을 사용하여 슬라이드 프리젠테이션을 하면, 편집 모드의 폰트 그대로 프리젠테이션시에도 그대로 한글 폰트로 디스플레이 됩니다. 단, 단점은 슬라이드가 애니메이션 슬라이드가 있는 경우는 애니메이션이 동작하지 않습니다. ----------------------- G Suite/Google Apps 전문 블로그 -  charlychoi.blogspot.kr 도서 '기업과 학교를 위한 구글크롬북'

[팁] Google Meet 초대시 초대자의 요청 승인 없이 화상회의 하는 방법 소개

구글 Meet를 통해서 불특정 다수하고 화상 회의를 하거나 온라인 웨비나를 하고자 할때 팁입니다. 일반적으로 G Suite 에서 제공하는 구글 Meet 화상회의 서비스는, G Suite Basic 과 G Suite for Education 에서는 최대 100명, G Suite Business 는 150명, G Suite Enterprise 에서는 250명까지 초대하여 동시에 화상 회의를 할 수 있습니다. 구글 Meet를 통해서 온라인 웨비나 또는 온라인 강의를 하고자 할때 참석자는 G Suite 계정, 구글 계정, 지메일 계정이 있거나, 아예 구글 계정이 없어도 화상회의에 참석할 수 있습니다. 다만, 구글 계정이 없는 사용자를 구글 Meet 화상 회의에 초대를 하면 반드시 초대자가 승인을 해주어야 참여할 수 있습니다. G Suite for Education 구글 Meet를 통해서 G Suite Education 계정이 있는 다수의 학생들에게 온라인 강의를 하거나 할 때 참여자들이 회의에 참석 할 때 마다 초대자가 일일히 승낙을 하지 않아도 할 수 있는 방법을 소개 합니다. 또는 G Suite Basic/Business/Enterprise 의 구글 Meet 를 이용하여 온라인 웨비나를 진행 할때도 참석자들이 구글 계정이나 Gmail 계정이 있다면 마찬가지로 초대자가 승낙하지 않아도 회의에 참석할 수 있습니다. 1. 캘린더 이벤트 생성후 초대자 메일 주소 입력 (반드시 초대받는 사람은 구글 계정이 있어야 함) 2. 초대 받은 사람 이메일 본문에서 초대 수락을 한 후 구글 미트에 참여 3. 구글 미트에서 회의실 생성후 사용자 추가로 구글 계정 사용자 초대