기본 콘텐츠로 건너뛰기

[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 도서 '기업과 학교를 위한 구글크롬북'

구글 드라이브에서 내 파일이 갑자기 사라졌어요 [알아두면 쓸모 있는 구글 드라이브 팁]

  구글 드라이브에서 고아가 된(정리 되지 않은)  파일들에 대한 현상 및 복원 방법 및 공유 드라이브 활용 목차  배경 내 파일이나 폴더가 사라지고 (삭제된 것은 아님) 찾을 수 없는 현상 고아가 된 파일 (정리가 안된 파일) 을 찾아 내고 복원하는  방법 고아가 된 과정을 추적하는 방법 배경   구글 드라이브의 내 드라이브에서 협업을 위한 협업 폴더를 생성한 후 다른 팀원간들간에 공유하여 작업하는 동안 예기치 못하게 내가 생성한 파일들 또는 폴더가 갑자기 사라지는 현상이 발생 할 수 있습니다. 또한 이를 경험한 사용자들이 많이 있습니다.  내가 파일이나 폴더를 삭제하지 않았는데 불구하고 휴지통에도 없고, 내가 삭제한 기억도 없고, 이러한 현상이 발생할 경우에는 본 벡서서에서 설명하는 해당 폴더나 파일들이 ‘고아 (Orphaned)’ 가 된 상태가 되어있는게 분명합니다.  한글 도움말에는 ‘정리가 되지 않은 파일 (또는 분리가 된 파일)' 이라고 설명되어 있기도 합니다. 고아가 된 파일들은 어떠한 폴더에도 속하여 있지 않고, 내 휴지통에도 존재하지 않는 현상입니다. 그러나, 구글 드라이브에서는 용량을 계속 차지 않고 있는 상태입니다. 간혹 왜? 내가 삭제한 적이 없는데 파일이 없어졌거나 폴더가 보이질 않는 경우 당황하지 않고 이문서를 자세히 참조하면 해답을 찾을 수 있습니다.   내 파일이나 폴더가 사라지고 (삭제된 것은 아님) 찾을 수 없는 현상      1. 내 드라이브에서 Folder A를 생성하고 Folder A 안에 File A 를 생성 합니다. 나중에 File A를 삭제 하고, 그 이후에 Folder A 까지 삭제를 할 수 있습니다. 그후 휴지통에서 File A만 복원을 할 경우 삭제된 File A 를 복원하려고 하는데 File A가 존재하였던 상위 폴더 ‘Folder A’는 이미 삭제된 상태입니다. 이럴때 File A는 ‘내 드라이브’ 아래에 자동으로 복구됩니다.        2. User A 가 Folder A를 생성하고 그 폴더에

[Google 스프레드시트 팁] 행 또는 열단위 그룹화하여 숨기거나 펼치기

스프레드시트를 이용하다 보면, 한 시트에 열 또는 행에 데이터가 많아서 한번에 쉽게 알아보기가 힘들때가 있습니다. 자주 보지 않는 (어쩌다 가끔 봐야 하는 데이터가 있는 경우) 데이터는 보이지 않게 숨겨 놓았다가 필요할떄 펼쳐서 보게 하면 매우 유용할 듯 합니다.  Google 스프레드시트에서도 '행' 또는 '열' 을 그룹 단위로 묶어서 이를 숨기거나 나타나게 할 수 있는 기능이 있습니다. MS 엑셀에서와 같이 그룹화 하는 기능을 제공합니다. 아래 샘플 시트에서 '1950년대' 3개의 행을 평소에는 보이지 않게 해 놓거나, 'Teams', 'Matches','Goals scored' 와 같은 열들을 숨겨 놓았다가 필요할때 펼치기를 해서 볼 수 있습니다. 열 그룹화  행 그룹화  행과 열을 그룹화하면 숨기기 ('-'), 펼치기 ('+') 표시를 클릭하면 됩니다.  자세한 그룹화 방법은 아래 동영상을 참고 하시기 바랍니다.  ----------------- G Suite/Chromebook/ChromeOS 전문 블로그 -  charlychoi.blogspot.kr

[Perplexity Pro의 업그레이드: Multi-step reasoning (다단계 추론) 검색]

  Perplexity’s Pro upgrade: multi-step reasoning search Perplexity 는 Pro 검색 기능을 대폭 업그레이드하였습니다. 사용자가 복잡한 연구와 분석 방식을 변화 시킬 수 있는 새로운 추론 모드 (Reasoning Mode)를 도입했습니다. 주요 특징  Pro 검색은 다단계 추론 기능 을 사용해 복잡한 질의의 맥락을 이해하여 처리 가능한 다단계 질의 문으로 재 구성하여 보다 포괄적이고 정확한 결과를 제공합니다. 시스템은 추가 계산이나 검색이 필요한 시점을 파악하고 자동으로 추론 모드를 활성화 하여 보다 정확한 결과를 생성합니다.  기술적 기능 이번 업그레이드에는 다음과 같은 몇 가지 강력한 구성 요소가 통합되었습니다:  Wolfram|Alpha 통합을 통한 고급 코드 실행 및 수학적 문제 해결  디버깅 및 데이터 분석을 위한 향상된 프로그래밍 기능  다단계 추론을 통한 복잡한 문제 해결 Perplexity Pro 의 다단계 추론을 잘 활용한 질의문 예시입니다. 각 DOW 회사에 대해 CEO, LinkedIn URL 및 CEO 기간을 찾는 데 도움을 주세요 Perplexity Pro 결과 : https://bit.ly/3CcEHH6   한국 대기업의 CEO들중에서 LinkedIn URL 을 갖고 있는 CEO 들의 기업명, 이름, LinkedIn URL, 재임 기간 목록을 만들어주세요 인서울 대학교들의 2025년도 대학입시 전형중 2024년도와 비교하여 달라졌거나 새롭게 추가된 입시 정책이 있는 학교들이 있으면 목록을 만들어줘 아마존과 관련된 다음 영역의 최신 정보 또는 릴리스를 제공해 주세요:  [1. 최근 인수 또는 합병 2. 경영진의 리더십 교체 3. 기술 혁신 또는 IT 인프라 업데이트 4. 사이버 보안 사고 또는 데이터 유출 5. 회사의 주요 발표 또는 중요한 뉴스 기사 6. 사용자 데이터 보호 및 개인정보 보호 정책의 발전 7. 최신 10-K 신고서 및 연례 보고서의 주요 사항] IMDb (Intern