BigQuery의 보고서 로그 쿼리 예

이 기능은 Cloud ID Premium 버전에서 사용할 수 있습니다. 버전 비교하기 

이 도움말에는 BigQuery를 사용해 작성한 일반적인 보고서의 쿼리 예가 포함되어 있습니다. 이러한 쿼리 예는 legacy SQL 사용을 전제로 합니다. api_project_name.dataset_name을 사용할 프로젝트 이름 및 데이터 세트 이름으로 변경합니다.

BigQuery 데이터 쿼리에 대해 자세히 알아보기

Gmail 로그 필드와 그 의미는 BigQuery의 Gmail 활동 로그 스키마를 참고하세요.

쿼리 예

계정

관리자 및 위임 계정의 수, 사용 중지/차단/일시정지된 계정의 수를 날짜별로 확인하기

SELECT date,
accounts.num_locked_users,
accounts.num_disabled_accounts,
accounts.num_delegated_admins,
accounts.num_super_admins,
accounts.num_suspended_users,
accounts.num_users
FROM api_project_name.dataset_name.usage
WHERE accounts.num_users IS NOT NULL
ORDER BY date ASC;

관리자

관리자가 자주 수행하는 이벤트 확인하기

SELECT count(*) as admin_actions, event_name
FROM api_project_name.dataset_name.activity
WHERE email IN (
  SELECT user_email
  FROM api_project_name.dataset_name.usage
  WHERE accounts.is_super_admin = TRUE
)
GROUP BY 2
ORDER BY 1 DESC;

특정 도메인 내 최고 관리자의 수 확인하기

SELECT COUNT(DISTINCT user_email) as number_of_super_admins, date
FROM api_project_name.dataset_name.usage
WHERE accounts.is_super_admin = TRUE
GROUP BY 2
ORDER BY 2 DESC;

Calendar

표준 SQL만 가능

Google 캘린더에서 30일 동안의 활성 사용자에 대한 일일 활성 사용자의 비율 확인하기. 이 예시는 여러 테이블에서 쿼리를 수행합니다.

일일 활성 사용자

SELECT date, calendar.num_1day_active_users
FROM api_project_name.dataset_name.usage
WHERE calendar.num_1day_active_users IS NOT NULL
ORDER BY date DESC

30일 활성 사용자

SELECT date, calendar.num_30day_active_users
FROM api_project_name.dataset_name.usage
WHERE calendar.num_30day_active_users IS NOT NULL
ORDER BY date DESC;

유형별 캘린더 일정의 수 확인하기

SELECT COUNT(DISTINCT calendar.calendar_id) AS count, event_name
FROM api_project_name.dataset_name.activity
WHERE calendar.calendar_id IS NOT NULL
GROUP BY 2 ORDER BY 1 DESC;

Drive

공유 방법별로 그룹화된 Google 드라이브 공유 항목의 수 확인하기

SELECT COUNT(DISTINCT drive.doc_id) AS count, drive.visibility
FROM api_project_name.dataset_name.activity
WHERE drive.doc_id IS NOT NULL
GROUP BY 2 ORDER BY 1 DESC;

파일 ID, 제목, 소유자, 유형. 특정 기간 내에 외부로 공유된 파일을 확인합니다.

SELECT TIMESTAMP_MICROS(time_usec) AS date, drive.doc_id, drive.doc_title,
drive.owner, drive.doc_type
FROM api_project_name.dataset_name.activity
WHERE drive.visibility = "shared_externally"
ORDER BY 1 DESC
LIMIT 100;

권한 변경 및 그 결과 공유하기. 특정 권한 변경 시 파일 공개 상태가 어떻게 바뀌는지 파악할 수 있습니다.

SELECT TIMESTAMP_MICROS(time_usec) AS date, drive.doc_title,
drive.visibility_change,drive.old_visibility, drive.visibility,
FROM api_project_name.dataset_name.activity
WHERE record_type = "drive"
AND drive.old_visibility IS NOT NULL
AND drive.old_visibility != "unknown";

파일 유형별로 구분된 이벤트 유형. 파일 유형별 채택 보고서에 유용합니다.

SELECT drive.doc_type, event_type, count(*) 
FROM  api_project_name.dataset_name.activity
WHERE record_type = "DRIVE"
GROUP by 1,2 ORDER BY 3 desc;

각 공유 드라이브의 이벤트 유형 및 이름

SELECT drive.shared_drive_id, event_type, event_name, record_type,
count(distinct drive.doc_id) AS count
FROM api_project_name.dataset_name.activity
WHERE record_type = "drive"
AND drive.shared_drive_id IS NOT NULL
GROUP BY 1,2,3,4 ORDER BY 5 DESC;

도메인 외부 사용자에 대한 정보

SELECT email, event_name, count(*) AS count
FROM api_project_name.dataset_name.activity
WHERE email != ""
AND email NOT LIKE "%mydomain.com%"
GROUP BY 1,2 ORDER BY 3 DESC;

외부 사용자에게 허용된 권한 변경의 종류 및 시기

SELECT drive.target_user, event_name, count(*) AS count
FROM api_project_name.dataset_name.activity
WHERE drive.target_user IS NOT NULL
AND drive.target_user NOT LIKE "%mydomain.com%"
GROUP BY 1,2 ORDER BY 3 DESC;

스토리지 모니터링 관련 정보

설정된 임계값(AND accounts.drive_used_quota_in_mb > 0 절에 정의됨)을 사용하여 드라이브 스토리지 사용량이 X를 초과하는 사용자에 대한 보고서를 작성할 때 유용합니다.

이 쿼리는 예약된 쿼리로 정의할 수 있으며, API를 사용하여 주기적으로 호출할 수도 있습니다.

SELECT date,
user_email,
accounts.drive_used_quota_in_mb,
FROM api_project_name.dataset_name.usage
WHERE accounts.drive_used_quota_in_mb IS NOT NULL
AND accounts.drive_used_quota_in_mb > 0
AND user_email != ""
AND date = CAST(DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AS STRING)
ORDER BY 3,1 DESC;

참고:

  • 이 값은 고객이 설정하는 필터에 맞게 수정할 수 있습니다. 예를 들어 15GB가 넘는 경우: AND accounts.drive_used_quota_in_mb > 15000
  • CAST(DATE_SUB(CURRENT_DATE(), INTERVAL x DAY) AS STRING)을 사용하여 날짜를 비교하면 date 값에서 사용 가능한 형식으로 날짜를 비교할 수 있습니다.
  • 이 쿼리는 유사한 값(accounts.gmail_used_quota_in_mb)이 있는 Gmail에도 적용할 수 있습니다.

Gmail

BigQuery의 Gmail 권장사항

  • 필요한 데이터만 쿼리합니다. 예에서는 1,000개 일치로 제한하지만, 원하는 수준으로 제한할 수 있습니다.
  • 쿼리 기간을 설정합니다. 일반적으로 기간은 1일로 설정합니다.

제목 일치
지정된 제목과 일치하는 최대 1,000개 레코드의 메일 요약 보기

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address,
     gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity
WHERE gmail.message_info.subject LIKE "%test%"
LIMIT 1000

수신자 일치
지정된 수신자의 개별 메일 수

SELECT COUNT(DISTINCT gmail.message_info.rfc2822_message_id)
FROM your_dataset_id.activity d
WHERE
  EXISTS(
   SELECT 1 FROM d.gmail.message_info.destination WHERE destination.address = "[email protected]")

처리 방법 및 수신자 일치

다음 두 가지 모두와 일치하는 최대 1,000개 레코드의 메일 요약 보기:

  • 지정한 처리 방법(수정, 거부, 격리)
  • 지정한 수신자

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE
     destination.address = "[email protected]" AND
     EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
          WHERE consequence.action = 17)
LIMIT 1000

규칙 설명이 트리거됨
지정한 규칙 설명이 트리거되는 최대 1,000개 레코드의 메일 요약 보기

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE
    EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
       WHERE consequence.reason LIKE '%description%')
LIMIT 1000

스팸으로 표시됨
최대 1,000개 레코드의 메일 요약 보기: 

  • 스팸으로 표시됨
  • 지정한 수신자
  • 모든 이유

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.is_spam AND
          destination.address = "[email protected]"
LIMIT 1000

암호화 프로토콜: 암호화되지 않음
암호화 프로토콜(암호화되지 않음)인 메일 요약 보기

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
gmail.message_info.subject,
gmail.message_info.source.address as source,
destination.address as destination,
gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.connection_info.smtp_tls_state = 0
LIMIT 1000

암호화 프로토콜: TLS만
암호화 프로토콜(TLS만)인 메일 요약 보기

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.connection_info.smtp_tls_state = 1
LIMIT 1000

메시지 ID 일치
지정된 메시지 ID의 메일 세부정보 보기(메시지 ID 주위에 '<>' 포함)

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
gmail.event_info.success,
gmail.event_info.elapsed_time_usec,
gmail.message_info.subject,
gmail.message_info.source.address as source,
gmail.message_info.source.service as source_service,
gmail.message_info.source.selector as source_selector,
destination.address as destination,
destination.service,
destination.selector as destination_selector,
gmail.message_info.rfc2822_message_id,
gmail.message_info.payload_size,
gmail.message_info.num_message_attachments,
gmail.message_info.connection_info.smtp_tls_state,
gmail.message_info.description
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.rfc2822_message_id = ""
LIMIT 1000

처리 방법: 메일 거부
메일 거부:

  • 어떤 규칙으로 거부되었나요?

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id,
     (SELECT ARRAY_AGG(consequence.reason)
     FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
     EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
        WHERE consequence.action = 17)
LIMIT 1000

처리 방법: 메일 수정
메일 수정: 

  • 어떤 규칙으로 수정되었나요?
  • 수정의 하위 카테고리는 무엇인가요(예: 헤더 또는 제목)?

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id,
     (SELECT ARRAY_AGG((consequence.action, consequence.reason))
     FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
   EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
       WHERE consequence.action NOT IN (0, 17, 3))
LIMIT 1000

메일 격리
어떤 규칙으로 메일이 스팸으로 분류되었나요?

SELECT TIMESTAMP_MICROS(gmail.event_info.timestamp_usec) as timestamp,
     gmail.message_info.subject,
     gmail.message_info.source.address as source,
     destination.address as destination,
     gmail.message_info.rfc2822_message_id,
     (SELECT ARRAY_AGG(consequence.reason)
     FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence)
FROM your_dataset_id.activity d, d.gmail.message_info.destination
WHERE gmail.message_info.rfc2822_message_id = "<message id>" AND
     EXISTS(SELECT 1 FROM d.gmail.message_info.triggered_rule_info ri, ri.consequence
        WHERE consequence.action = 3)
LIMIT 1000

복합 쿼리
지난 30일 동안 특정 규칙('규칙 설명')으로 필터링된 모든 메일의 수

SELECT
  COUNT(gmail.message_info.rfc2822_message_id) AS message_cnt
FROM
  `your_dataset_id.activity`,
UNNEST (gmail.message_info.triggered_rule_info) AS triggered_rule
WHERE
  _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
  AND triggered_rule.rule_name LIKE "rule description"

지난 1일 이내에 TLS 암호화 없이 수신된 모든 메일 표시:

SELECT gmail.message_info.subject,
    gmail.message_info.rfc2822_message_id
FROM `your_dataset_id.activity`
WHERE
    _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) AND
    gmail.message_info.connection_info.smtp_tls_state = 0

지난 30일 이내에 내 계정에서 메일을 교환한 상위 10개 도메인 표시:

SELECT
  COUNT(DISTINCT gmail.message_info.rfc2822_message_id) as message_cnt,
  IF(gmail.message_info.is_policy_check_for_sender, 
       REGEXP_EXTRACT(gmail.message_info.source.address , "(@.*)"),
       REGEXP_EXTRACT(destination.address , "(@.*)")) AS domain
FROM `your_dataset_id.activity` d, d.gmail.message_info.destination
WHERE 
    _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY domain
ORDER BY message_cnt desc
LIMIT 10

Gmail에서 30일 동안의 활성 사용자에 대한 일일 활성 사용자의 비율

일일 활성 사용자:

SELECT date,
gmail.num_1day_active_users
FROM api_project_name.dataset_name.usage
WHERE gmail.num_1day_active_users > 0
ORDER BY 1 DESC;

7일 활성 사용자:

SELECT date,
gmail.num_7day_active_users
FROM api_project_name.dataset_name.usage
WHERE gmail.num_7day_active_users > 0
ORDER BY 1 DESC;

30일 활성 사용자:

SELECT date,
gmail.num_30day_active_users
FROM api_project_name.dataset_name.usage
WHERE gmail.num_30day_active_users > 0
ORDER BY 1 DESC;

이메일 메시지와 연결된 분류 라벨이 하나 이상 있는 최근 100개의 Gmail 로그 이벤트

SELECT
  resource_details[OFFSET(0)].id AS MESSAGE_ID,
  gmail.message_info.subject AS SUBJECT,
  gmail.event_info.mail_event_type AS MAIL_EVENT_TYPE,
  gmail.message_info.source.address AS SENDER,
  resource_details[OFFSET(0)].applied_labels AS LABELS
FROM workspace_audit_logs.activity
WHERE gmail.event_info.mail_event_type > 0 and ARRAY_LENGTH(resource_details) > 0
ORDER by time_usec desc
LIMIT 100;

특정 이메일 메시지에 대해 사용 가능한 모든 로그 이벤트

SELECT
  gmail.event_info,
  gmail.message_info,
  resource_details
FROM workspace_audit_logs.activity
WHERE gmail.message_info.rfc2822_message_id = "<XYZ>"
ORDER by time_usec desc;

그룹스

Google 그룹 멤버십 변경 및 사용자 행동

SELECT TIMESTAMP_MICROS(time_usec) AS date,
  event_name,
  admin.group_email,
  event_type,
  email,
  record_type,
  admin.user_email,
  admin.new_value,
  admin.old_value,
  admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND CONCAT(TIMESTAMP_MICROS(time_usec)) LIKE "%YYYY-MM-DD%"
ORDER BY 1 DESC
LIMIT
  1000

YYYY-MM-DD 타임스탬프를 사용하려면 첫 번째 SELECT 구문 요소를 다음으로 변경합니다.
EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) AS date,

다음 방법 중 하나를 사용하여 WHERE 절에서 날짜를 필터링할 수 있습니다.

SELECT TIMESTAMP_MICROS(time_usec) AS date,
  event_name,
  admin.group_email,
  event_type,
  email,
  record_type,
  admin.user_email,
  admin.new_value,
  admin.old_value,
  admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) > "2020-06-30"
AND EXTRACT(DATE FROM TIMESTAMP_MICROS(time_usec)) < "2020-08-31"
ORDER BY 1 DESC
LIMIT
  1000

SELECT TIMESTAMP_MICROS(time_usec) AS date,
  event_name,
  admin.group_email,
  event_type,
  email,
  record_type,
  admin.user_email,
  admin.new_value,
  admin.old_value,
  admin.setting_name
FROM project_name.dataset_name.activity
WHERE `admin`.group_email IS NOT NULL
AND TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-21")
AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-23")
ORDER BY 1 DESC
LIMIT
  1000

Google Meet

날짜별 영상 통화 수 및 총 통화 시간(분)

SELECT date, meet.num_calls, meet.total_call_minutes
FROM `api_project_name.dataset_name.usage`
WHERE meet.num_calls IS NOT NULL
ORDER BY date ASC

일일 활성 사용자

SELECT date, meet.num_1day_active_users
FROM `api_project_name.dataset_name.usage`
WHERE meet.num_1day_active_users IS NOT NULL
ORDER BY date DESC

30일 활성 사용자

SELECT date, meet.num_30day_active_users
FROM `api_project_name.dataset_name.usage`
WHERE meet.num_30day_active_users IS NOT NULL
ORDER BY date DESC

규칙

이름, 일치하는 애플리케이션, 작업별로 실행된 DLP 규칙 확인하기

SELECT TIMESTAMP_MICROS(time_usec) AS date, rules.rule_name, rules.application,
rules.resource_title, rules.actions, rules.resource_owner_email,
rules.data_source, rules.matched_trigger
FROM api_project_name.dataset_name.activity
WHERE rules.rule_name IS NOT NULL
ORDER BY 1 DESC LIMIT 1000;

토큰

타사 앱이 Google 드라이브에 액세스하도록 설정된 횟수 확인하기

SELECT token.client_id, scope, token.app_name, count(*) AS count
FROM api_project_name.dataset_name.activity
LEFT JOIN UNNEST(token.scope) AS scope
WHERE scope LIKE "%drive%"
GROUP BY 1,2,3 ORDER BY 4 DESC;

관리자 콘솔 로그인 시도

Google 관리자 콘솔 로그인 실패에 대한 자세한 내용 확인하기

SELECT TIMESTAMP_MICROS(time_usec) AS date, email, ip_address,
event_name, login.login_type, login.login_failure_type
FROM api_project_name.dataset_name.activity
WHERE login.login_type IS NOT NULL
AND login.login_failure_type IS NOT NULL
AND event_type = "login"
ORDER BY date DESC;

usage(사용량) 테이블의 스키마

이 스키마는 변경될 수 있습니다. Reports API 문서에서 업데이트된 매개변수 및 필드를 포함한 전체 목록을 확인할 수 있습니다. 

날짜별로 필터링하기

activity(활동) 또는 usage(사용량) 테이블을 쿼리할 때 날짜를 기준으로 필터링할 수 있습니다. 두 테이블에서 사용되는 날짜 표시 형식이 다릅니다.

  • activity(활동) 테이블에서는 Unix 마이크로초로 타임스탬프를 저장하며 이는 TIMESTAMP_MICROS() 함수를 사용하여 날짜로 변환할 수 있는 정수 값(숫자)입니다.
  • usage(사용량) 테이블에서는 date(날짜) 값이 날짜 형식으로 표시되므로 이 변환이 필요하지 않습니다.

두 테이블 모두에서 다음 방법 중 하나를 사용하여 특정 날짜 또는 기간을 기준으로 필터링할 수 있습니다.

activity(활동) 테이블

Unix Micros(activity(활동) 테이블) 구조를 사용하여 특정 날짜를 기준으로 필터링하려면 다음과 같이 WHERE 절과 TIMESTAMP() 함수를 정의하여 보다 큼(>) 및 보다 작음(<) 연산자로 비교합니다.

SELECT TIMESTAMP_MICROS(time_usec) as date, record_type
FROM api_project_name.dataset_name.activity
WHERE TIMESTAMP_MICROS(time_usec) > TIMESTAMP("2020-07-01")
AND TIMESTAMP_MICROS(time_usec) < TIMESTAMP("2020-07-07")
ORDER BY 1 DESC LIMIT 1000

이는 문자열 유형 매개변수로 추가된 날짜를 사용한 TIMESTAMP() 함수의 반환 값을 TIMESTAMP_MICROS() 함수의 반환 값과 비교하여, 입력되는 time_usec 값의 범위를 제한하는 개념입니다. 이때 표준 SQL의 Timestamp(타임스탬프) 함수 표준을 준수합니다. 또한 WHERE 절에서 간단한 비교 연산자(>) 및 (<)을 사용하고 AND로 확장하여 특정 시간 범위를 지정합니다.

usage(사용량) 테이블

SELECT date, meet.num_calls,
FROM api_project_name.dataset_name.usage
WHERE meet.num_calls IS NOT NULL
AND TIMESTAMP(date) > TIMESTAMP("2020-07-01")
AND TIMESTAMP(date) < TIMESTAMP("2020-07-07")
ORDER BY date DESC;

테이블에 있는 문자열 유형 date(날짜) 값을 TIMESTAMP() 함수로 전달하고 첫 번째 예와 같은 방법으로 비교 연산자 (>) 및 (<)을 사용할 수 있습니다.

 

도메인 별칭 및 하위 도메인별로 필터링하기: 제외 및 포함

쿼리 결과에서 특정 도메인을 포함하거나 제외하려면 WHERE 절에 와일드 카드(%)를 사용하는 이메일 주소 필터를 적용하여 도메인을 필터링합니다.

검색결과에서 특정 도메인을 필터링(제외)할지 또는 특정 도메인만 포함할지에 따라 AND 또는 OR 구문을 사용하는 방법이 다릅니다.

검색결과에서 특정 도메인 제외하기

WHERE email NOT LIKE ("%@sub.%")
AND email NOT LIKE ("%@test.%")

검색결과에 특정 도메인만 포함하기

WHERE email LIKE ("%@sub.%")
OR email LIKE ("%@test.%")

규칙 감사 로그

이 쿼리를 사용하여 사용자의 민감한 정보 공유 시도를 추적할 수 있습니다.

SELECT TIMESTAMP_MICROS(time_usec) AS Date,
rules.resource_owner_email AS User,
rules.rule_name AS ruleName,
rules.rule_type AS ruleType,
rules.rule_resource_name AS ruleResourceName,
rules.resource_id AS resourceId,
rules.resource_title AS resourceTitle,
rules.resource_type AS resourceType,
rules.resource_owner_email AS resourceOwner,
CAST(recipients AS STRING) AS Recipients,
rules.data_source AS dataSource,
rules.actor_ip_address AS actorIpAddress,
rules.severity AS severity,
rules.scan_type AS scanType,
rules.matched_trigger AS matchedTriggers,
detect.display_name AS matchedDetectorsName,
detect.detector_id AS matchedDetectorsId,
detect.detector_type AS matchedDetectorsType,
triggers.action_type AS triggeredActions,
suppressors.action_type AS suppressedActions,
FROM api_project_name.dataset_name.activity
LEFT JOIN UNNEST(rules.resource_recipients) as recipients
LEFT JOIN UNNEST(rules.matched_detectors) as detect
LEFT JOIN UNNEST(rules.triggered_actions) as triggers
LEFT JOIN UNNEST(rules.suppressed_actions) as suppressors
WHERE rules.rule_name IS NOT NULL
AND triggers.action_type != "ALERT"
ORDER BY 1 DESC
LIMIT 1000;

관련 주제

도움이 되었나요?

어떻게 하면 개선할 수 있을까요?
검색
검색어 지우기
검색 닫기
기본 메뉴
11100808928256480404
true
도움말 센터 검색
true
true
true
false
false
false
false