# Google Workspace 로그

## 개요

Panther는 가져올 수 있습니다 [Google Workspace](https://workspace.google.com/) (이전에는 G Suite로 알려짐) 로그 이벤트를 쿼리하여 [Google Workspace Reports API](https://developers.google.com/admin-sdk/reports/v1/get-start/getting-started). Panther는 60초마다 Reports API를 새 이벤트에 대해 조회합니다.

Panther는 다음 애플리케이션의 Google Workspace 로그를 가져옵니다:

* Access Transparency
* Admin
* Calendar
* Chat
* Chrome
* Classroom
* Context-Aware Access
* Data Studio (Looker Studio)
* Drive
* GCP
* Gemini for Workspace
* Gmail
* Groups
* Groups Enterprise
* Keep
* Login
* Meet
* Mobile
* Rules
* SAML
* Token
* User Accounts
* Vault

## Google Workspace 로그를 Panther에 온보딩하는 방법

Panther가 Google Workspace Reports API에 액세스하려면 Google Cloud 앱을 만들고 구성한 뒤, 해당 자격 증명을 Panther에 제공해야 합니다.

### 사전 요구 사항

아래 단계를 완료하려면 Google 사용자에게 다음이 필요합니다:

* 조직의 활동 기록을 읽을 수 있는 권한이 있어야 합니다
  * 사용자에게 이 권한이 없다면, [이 Google Workspace 지침](https://support.google.com/a/answer/2406043) 을 따라 Reports 액세스 권한이 있는 새 역할을 만들고 그 역할을 사용자에게 할당하세요.
* (가져오기를 활성화할 계획이라면 [Google Workspace 사용자 프로필](/ko/enrichment/google-workspace.md)) 사용자 읽기 권한이 있어야 합니다

### 1단계: Panther에서 새 Google Workspace 소스 만들기

1. Panther Console의 왼쪽 사이드바 메뉴에서 **구성** > **로그** **소스**.
2. 를 클릭한 다음 **새로 만들기**
3. “Google Workspace”를 검색한 후 해당 타일을 클릭합니다.
4. 슬라이드아웃 패널에서 **설정 시작**.
5. 을 클릭합니다. **구성** 페이지에서 다음 필드를 구성합니다:
   * **이름**: 소스의 설명이 담긴 이름을 입력합니다. 예: `내 Google Workspace 로그`.
6. 를 클릭한 다음 **설정.**

### 2단계: Google Cloud 앱 만들기 및 구성

Google Cloud 앱을 설정하기 전에 인증 방법을 선택해야 합니다. 다음 중 하나를 사용할 수 있습니다. [서비스 계정](https://cloud.google.com/iam/docs/service-account-overview), [Workload Identity Federation](https://docs.cloud.google.com/iam/docs/workload-identity-federation), 또는 [OAuth](https://developers.google.com/identity/protocols/oauth2) — 아래의 상단 탭을 참조하세요.

{% hint style="warning" %}
Panther에서 Google Workspace 로그 소스를 만들면 인증 방법을 변경할 수 없습니다. 이 선택은 로그 소스에 대해 영구적이므로, 설정을 진행하기 전에 원하는 인증 방법을 신중하게 선택하세요.
{% endhint %}

{% tabs %}
{% tab title="서비스 계정" %}

1. Google Cloud에서 새 앱을 만듭니다:
   1. 다음에 로그인하세요. [Google Cloud 콘솔](https://console.developers.google.com/project).
   2. 를 클릭한 다음 **+ 프로젝트 만들기.**\
      ![In Google Cloud console, the "+Create Project" button appears at the top of the page under the search bar. In this image, there is a teal circle around it.](/files/8faa73c1d50d9b144aa0c62eaa9cabf5dd5b17d7)
   3. 설명적인 **프로젝트 이름** (예: `Panther Integration`)을 입력하고 **위치**.
   4. 를 클릭한 다음 **를 선택한 다음**.
      * 만들기
   5. 프로젝트를 만드는 데 몇 초가 걸립니다. 생성되면 페이지에 알림이 표시됩니다. **왼쪽 사이드바 메뉴에서 세 줄 아이콘을 클릭한 다음** > **Cloud 개요**.
   6. 대시보드\
      ![At the top of the Google Cloud dashboard, there is a dropdown. "Panther integration test" has been selected, and the select box is circled.](/files/cffd2d533779d8e4598e9531c841d5074d8eb80b)
2. 를 클릭합니다.
   1. 방금 만든 프로젝트가 페이지 상단의 드롭다운에서 이미 선택되어 있지 않다면, 드롭다운을 열고 선택합니다. **Admin SDK API 활성화:**.
   2. 을 클릭합니다. **Admin SDK API 활성화:** 검색창에 "Admin SDK API"를 입력하고 **Admin SDK API**\
      ![In the Google Cloud console, an Admin SDK API page is shown. An Enable button is circled.](/files/8ac4c94240e7473dfd09a1f4fe0582f5e7050da3)
      * 페이지에서
3. [활성화](https://cloud.google.com/iam/docs/creating-managing-service-accounts).
4. [새 Google Cloud 서비스 계정 만들기](https://cloud.google.com/iam/docs/creating-managing-service-account-keys) 서비스 계정용 JSON 키 파일을 생성합니다:

   1. 다음에서 **IAM 및 관리자** 섹션을 클릭한 다음 **서비스 계정**.
   2. 방금 만든 서비스 계정 행에서 **작업**를 클릭한 다음 **키 관리**.

      <figure><img src="/files/0156cbaf3e5dde01c26b304a9de72f051d659cdd" alt="" width="563"><figcaption></figcaption></figure>
   3. 를 클릭한 다음 **키 추가** > **새 키 만들기**.

      <figure><img src="/files/3281f79697e35db8f5b4a7d50f510b5e10770480" alt="" width="563"><figcaption></figcaption></figure>
   4. 아래에서 **키 유형**를 선택하고 **JSON**을 클릭합니다. **를 선택한 다음**.
      * JSON 파일이 다운로드됩니다.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>이 파일은 이 서비스 계정의 자격 증명을 포함하므로 안전한 곳에 보관하세요.</p></div>
5. 도메인 전체 위임 활성화:
   1. 방금 만든 서비스 계정 행에서 **작업**를 클릭한 다음 **세부정보 관리**.

      <figure><img src="/files/53063a8904c4a6dff6c6da0aedeeb469e210db57" alt="" width="563"><figcaption></figcaption></figure>
   2. 를 클릭한 다음 **고급 설정**에서 다음을 복사합니다. **클라이언트 ID**.<br>

      <figure><img src="/files/128e1f724ad77be28c537c938658a66dadadc2fe" alt="" width="563"><figcaption></figcaption></figure>
   3. 를 클릭한 다음 **Google Workspace 관리자 콘솔 보기**.
   4. 관리자 계정으로 로그인합니다.
   5. 를 클릭한 다음 **보안** → **액세스 및 데이터 제어** → **API 제어**.
   6. 를 클릭한 다음 **도메인 전체 위임 관리**.
   7. 를 클릭한 다음 **새로 추가**.\
      ![](/files/ccc46f2a82e4390a5eb99414d21b4fadaa692a11)
   8. 다음 필드를 입력합니다:
      1. **클라이언트 ID**: 위에서 복사한 클라이언트 ID를 입력합니다.
      2. **OAuth 범위** (쉼표로 구분, 공백 없음): 다음을 입력합니다 `https://www.googleapis.com/auth/admin.reports.audit.readonly`
         * (선택 사항) 사용자 프로필이 필요한 경우, 쉼표로 구분하여 다음도 입력합니다 `https://www.googleapis.com/auth/admin.directory.user.readonly`
   9. 를 클릭한 다음 **승인**.
6. 데이터를 검색할 때 가장할 **Google Admin 사용자** 를 선택합니다. 두 가지 옵션이 있습니다:
   * SuperAdmin 계정을 사용: 설정은 더 간단하지만, 꼭 필요한 것보다 더 넓은 권한을 부여합니다.
   * 최소 권한 원칙 따르기(권장): 필요한 권한만 가진 전용 Google Workspace 사용자를 만들고 사용합니다.
     1. [최소 권한으로 Google Workspace의 사용자 지정 관리자 역할 만들기](https://support.google.com/a/answer/9807615?hl=en).
     2. 역할에 필요한 최소 권한을 부여합니다:
        1. 필수: Reports → Audit/Usage 읽기 액세스

           <div align="left"><figure><img src="/files/dd3b11cff9b26113a0c4c85d5c1d53150d744099" alt="" width="188"><figcaption></figcaption></figure></div>
        2. 선택 사항: Directory → Users 읽기 액세스(사용자 프로필 사용 시)

           <div align="left"><figure><img src="/files/b46ddf0217614e8c5f428aa663d05112bbe988c1" alt="" width="188"><figcaption></figcaption></figure></div>
        3. 선택 사항: Vault → Google Vault Access All Logs

           <div align="left"><figure><img src="/files/17ffd8d5fc08e7842c0e83ddb9475cd229af4de5" alt="" width="188"><figcaption></figcaption></figure></div>
     3. 이 사용자 지정 역할을 전용 Google Workspace 사용자에게 할당합니다.
7. Panther에서 소스 설정을 완료합니다:
   1. 아래에서 **가져오기 구성 및 JSON 키 파일을 제공하고,** JSON 키 파일을 업로드합니다.\
      ![](/files/4ede3d967f7ac97a85178d674500a1aec60ac038)
   2. 다음에서 **관리자 사용자 이메일** 필드에 **Google Admin 사용자** 서비스 계정이 가장할 사용자(이전 단계에서 선택한 사용자)의 이메일 주소를 입력합니다.

      <div align="left"><figure><img src="/files/692c3200e033bbf0e3e32497b6c243399328dcef" alt="" width="375"><figcaption></figcaption></figure></div>
   3. 을 클릭합니다. **Enrichment** 페이지에서 [Google Workspace 사용자 프로필](/ko/enrichment/google-workspace.md)을 활성화하려면 **User Profiles**오른쪽의 토글을 `켜기`.
      * Google Workspace 프로필 활성화의 사전 요구 사항을 확인하세요 [를 참고하세요.](/ko/enrichment/google-workspace.md#prerequisites-for-google-workspace-user-profiles).
      * 토글을 **User Profiles** `켜기`설정했다면, **새로고침 주기(분)**&#xB3C4; 설정하세요. 이는 Panther가 Google Workspace에 저장된 값으로 프로필 데이터를 업데이트하는 주기를 의미합니다.\
        ![](/files/971b91384bba9695e504aaa2ef2e06fef4001ffa)
   4. 를 클릭한 다음 **설정**. 그러면 성공 화면으로 이동합니다:

      <figure><img src="/files/e0820e5acb9452e294cfe3ba72060f0fbbfd3b32" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

      * 하나 이상의 [디택션 팩](https://docs.panther.com/detections/panther-managed/packs).
      * 을 선택적으로 활성화할 수 있습니다. **아직 하지 않았다면** 스키마 연결 또는 추론
      * 을 클릭하여 소스에 하나 이상의 스키마를 연결합니다. **다음 설정은** 이벤트가 처리되지 않을 때 알러트 트리거 **기본값이**예
        {% endtab %}

{% tab title="Workload Identity Federation" %}

1. Google Cloud에서 새 앱을 만듭니다:
   1. 다음에 로그인하세요. [Google Cloud 콘솔](https://console.developers.google.com/project).
   2. 를 클릭한 다음 **+ 프로젝트 만들기.**\
      ![In Google Cloud console, the "+Create Project" button appears at the top of the page under the search bar. In this image, there is a teal circle around it.](/files/8faa73c1d50d9b144aa0c62eaa9cabf5dd5b17d7)
   3. 설명적인 **프로젝트 이름** (예: `Panther Integration`)을 입력하고 **위치**.
   4. 를 클릭한 다음 **를 선택한 다음**.
      * 만들기
   5. 프로젝트를 만드는 데 몇 초가 걸립니다. 생성되면 페이지에 알림이 표시됩니다. **왼쪽 사이드바 메뉴에서 세 줄 아이콘을 클릭한 다음** > **Cloud 개요**.
   6. 대시보드\
      ![At the top of the Google Cloud dashboard, there is a dropdown. "Panther integration test" has been selected, and the select box is circled.](/files/cffd2d533779d8e4598e9531c841d5074d8eb80b)
2. 를 클릭합니다.
   1. 로 설정됩니다. 로그 소스에서 일정 기간 데이터 흐름이 멈추면 알러트를 받게 되므로, 이 설정을 활성화한 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다. **Admin SDK API 활성화:**.
   2. 을 클릭합니다. **Admin SDK API 활성화:** 검색창에 "Admin SDK API"를 입력하고 **Admin SDK API**\
      ![In the Google Cloud console, an Admin SDK API page is shown. An Enable button is circled.](/files/8ac4c94240e7473dfd09a1f4fe0582f5e7050da3)
      * 페이지에서
3. [활성화](https://cloud.google.com/iam/docs/creating-managing-service-accounts).
   1. 검색창에 "Admin SDK API"를 입력하고 **이메일**을 메모해 둡니다. 다음 단계에서 필요합니다.
4. 다음 지침에 따라 AWS와 함께 Workload Identity Federation을 구성합니다. [AWS 또는 Azure와 함께 Workload Identity Federation 구성](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-clouds) 문서.
   1. 속성 매핑과 조건을 [정의하는 동안](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-clouds#mappings-and-conditions)다음 예시를 참고하세요:

      * 예시 [속성 매핑](https://cloud.google.com/iam/docs/workload-identity-federation#mapping):

        <table><thead><tr><th width="195.8271484375">Google</th><th width="523.1220703125">AWS</th></tr></thead><tbody><tr><td><code>google.subject</code></td><td><code>assertion.arn.extract('arn:aws:sts::{account_id}:')+":"+assertion.arn.extract('assumed-role/{role_and_session}').extract('/{session}')</code></td></tr><tr><td><code>attribute.account</code></td><td><code>assertion.account</code></td></tr></tbody></table>
      * 예시 [속성 조건](https://cloud.google.com/iam/docs/workload-identity-federation#conditions):\
        `attribute.account=="<PANTHER_AWS_ACCOUNT_ID>"`

      <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>다음의 값은 <code>google.subject</code> 속성 <a href="https://cloud.google.com/iam/docs/workload-identity-federation#mapping">127자를 초과할 수 없습니다</a>. <a href="https://cloud.google.com/iam/docs/workload-identity-federation#mapping">Common Expression Language (CEL) 표현식</a> 을 사용하여 AWS에서 발급된 토큰의 속성을 변환하거나 결합할 수 있습니다. 위 표에서 제안된 표현식은 이 제한을 고려한 것이며, ARN을 Panther 엔터티를 고유하게 식별하는 값으로 변환하려는 시도입니다. AWS 속성에 대한 자세한 내용은 <a href="https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html">이 AWS 문서 페이지</a>.</p></div>
   2. 의 "Example 2 - Called by user created with AssumeRole"를 참조하세요. [ID 풀에 공급자를](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-clouds#aws)를 선택하고 **AWS**.
   3. 추가할 때 **IAM 및 관리자** → **Workload Identity Federation으로 이동하세요.**
      1. 방금 만든 Workload Identity Pool의 표시 이름을 클릭합니다.
      2. 다음 항목을 메모해 둡니다. **IAM 주체** 이 페이지에 표시됩니다. 다음 단계에서 필요합니다.
5. IAM 권한 부여

   1. 추가할 때 **IAM 및 관리자** → **서비스 계정**
   2. 방금 만든 서비스 계정 행에서 **이메일**
   3. “**액세스 권한이 있는 주체**” 탭으로 이동합니다.
   4. “**액세스 권한 부여**”를 클릭합니다.

      <div align="left"><figure><img src="/files/9b920bca2e4dbab032978c2c50c2b4746f3f9ceb" alt="" width="563"><figcaption></figcaption></figure></div>
   5. “새 주체” 필드에 다음을 추가해야 합니다 **두 항목**.
      1. 첫 번째 주체: Workload Identity 주체
         1. 이전에 복사한 IAM 주체는 다음과 비슷하게 보입니다:

            <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">principal://iam.googleapis.com/projects/&#x3C;PROJECT_NUMBER>/locations/global/workloadIdentityPools/&#x3C;POOL_ID>/subject/SUBJECT_ATTRIBUTE_VALUE
            </code></pre>
         2. **다음과 같이** 이 값을 수정합니다:
            * 다음을 `principal://` 로 바꾸고 `principalSet://`
            * /subject/에서 시작하는 모든 내용을 삭제한 다음
            * 이를 /\*로 바꿉니다.
         3. 변경 후에는 **다음과 같이 보여야 합니다:**

            <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">principalSet://iam.googleapis.com/projects/&#x3C;PROJECT_NUMBER>/locations/global/workloadIdentityPools/&#x3C;POOL_ID>/*
            </code></pre>
         4. 이 수정된 값을 **새 주체** 필드에 붙여넣습니다.
      2. 두 번째 주체: 서비스 계정 이메일
         1. 다음 단계에서 메모한 **서비스 계정 이메일** 주소를 붙여넣습니다.
            1. 형식 예시:

               <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">my-service-account@my-project.iam.gserviceaccount.com
               </code></pre>
      3. 다음이 모두 **포함되었는지** 확인합니다.
   6. “역할 할당” 필드에서 `Service Account Token Creator` 역할

   <figure><img src="/files/bebbc58615d057ee00ece2e5f2db461edbad97ae" alt="" width="563"><figcaption></figcaption></figure>

   1. 을 선택한 다음 “**저장**”를 클릭합니다.
6. [자격 증명 구성 파일 다운로드](https://docs.cloud.google.com/iam/docs/workload-download-cred-and-grant-access#download-configuration)를 클릭합니다. 이 파일은 Panther에서 Google Workspace 로그 API에 인증하는 데 사용됩니다.
7. 도메인 전체 위임 활성화:
   1. 추가할 때 **IAM 및 관리자** → **서비스 계정**
   2. 방금 만든 서비스 계정 행에서 **작업**를 클릭한 다음 **세부정보 관리**.

      <figure><img src="/files/53063a8904c4a6dff6c6da0aedeeb469e210db57" alt="" width="563"><figcaption></figcaption></figure>
   3. 를 클릭한 다음 **고급 설정**에서 다음을 복사합니다. **클라이언트 ID**.<br>

      <figure><img src="/files/128e1f724ad77be28c537c938658a66dadadc2fe" alt="" width="563"><figcaption></figcaption></figure>
   4. 를 클릭한 다음 **Google Workspace 관리자 콘솔 보기**.
   5. 관리자 계정으로 로그인합니다.
   6. 를 클릭한 다음 **보안** → **액세스 및 데이터 제어** → **API 제어**.
   7. 를 클릭한 다음 **도메인 전체 위임 관리**.
   8. 를 클릭한 다음 **새로 추가**.\
      ![](/files/ccc46f2a82e4390a5eb99414d21b4fadaa692a11)
   9. 다음 필드를 입력합니다:
      1. **클라이언트 ID**: 위에서 복사한 클라이언트 ID를 입력합니다.
      2. **OAuth 범위** (쉼표로 구분, 공백 없음): 다음을 입력합니다 `https://www.googleapis.com/auth/admin.reports.audit.readonly`
         * (선택 사항) 사용자 프로필이 필요한 경우, 쉼표로 구분하여 다음도 입력합니다 `https://www.googleapis.com/auth/admin.directory.user.readonly`
   10. 를 클릭한 다음 **승인**.
8. 데이터를 검색할 때 서비스 계정이 가장할 Google 관리자 사용자 계정을 선택합니다. 자세한 내용은 [왜 가장을 위해 관리자 사용자 이메일이 필요한가요?](https://help.panther.com/articles/6633569239-why-does-setting-up-google-workspace-with-workload-identity-federation-in-panther-require-an-admin-user-email-for-impersonation?lang=en) 를 참조하세요.\
   두 가지 옵션이 있습니다:
   * SuperAdmin 계정을 사용: 설정은 더 간단하지만, 꼭 필요한 것보다 더 넓은 권한을 부여합니다.
   * 최소 권한 원칙 따르기(권장): 필요한 권한만 가진 전용 Google Workspace 사용자를 만들고 사용합니다.
     1. [최소 권한으로 Google Workspace의 사용자 지정 관리자 역할 만들기](https://support.google.com/a/answer/9807615?hl=en).
     2. 역할에 필요한 최소 권한을 부여합니다:
        1. 필수: Reports → Audit/Usage 읽기 액세스

           <div align="left"><figure><img src="/files/dd3b11cff9b26113a0c4c85d5c1d53150d744099" alt="" width="188"><figcaption></figcaption></figure></div>
        2. 선택 사항: Directory → Users 읽기 액세스(사용자 프로필 사용 시)

           <div align="left"><figure><img src="/files/b46ddf0217614e8c5f428aa663d05112bbe988c1" alt="" width="188"><figcaption></figcaption></figure></div>
        3. 선택 사항: Vault → Google Vault Access All Logs

           <div align="left"><figure><img src="/files/17ffd8d5fc08e7842c0e83ddb9475cd229af4de5" alt="" width="188"><figcaption></figcaption></figure></div>
     3. 이 사용자 지정 역할을 전용 Google Workspace 사용자에게 할당합니다.
9. Panther에서 소스 설정을 완료합니다:
   1. 아래에서 **가져오기 구성 및 자격 증명 구성 파일을 제공하고,** 자격 증명 구성 파일을 업로드합니다.

      <figure><img src="/files/97befe08ef68f30458377698a39d5298640d13c3" alt=""><figcaption></figcaption></figure>
   2. 다음에서 **관리자 사용자 이메일** 필드에 **Google Admin 사용자** 서비스 계정이 가장할 사용자(이전 단계에서 선택한 사용자)의 이메일 주소를 입력합니다.

      <div align="left"><figure><img src="/files/e049943c73a6a019b53dcbf1d04b0ee317a54e30" alt="" width="375"><figcaption></figcaption></figure></div>
   3. 을 클릭합니다. **Enrichment** 페이지에서 [Google Workspace 사용자 프로필](/ko/enrichment/google-workspace.md)을 활성화하려면 **User Profiles**오른쪽의 토글을 `켜기`.
      * Google Workspace 프로필 활성화의 사전 요구 사항을 확인하세요 [를 참고하세요.](/ko/enrichment/google-workspace.md#prerequisites-for-google-workspace-user-profiles).
        * 토글을 **User Profiles** `켜기`설정했다면, **새로고침 주기(분)**&#xB3C4; 설정하세요. 이는 Panther가 Google Workspace에 저장된 값으로 프로필 데이터를 업데이트하는 주기를 의미합니다.\
          ![](/files/971b91384bba9695e504aaa2ef2e06fef4001ffa)
   4. 를 클릭한 다음 **설정**. 그러면 성공 화면으로 이동합니다:

      <figure><img src="/files/e0820e5acb9452e294cfe3ba72060f0fbbfd3b32" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

      * 하나 이상의 [디택션 팩](https://docs.panther.com/detections/panther-managed/packs).
      * 을 선택적으로 활성화할 수 있습니다. **아직 하지 않았다면** 스키마 연결 또는 추론
      * 을 클릭하여 소스에 하나 이상의 스키마를 연결합니다. **다음 설정은** 이벤트가 처리되지 않을 때 알러트 트리거 **기본값이**예
        {% endtab %}

{% tab title="OAuth" %}

1. 을 클릭합니다. **자격 증명** 페이지에서 리디렉션 URL을 복사해 안전한 위치에 저장합니다. 다음 단계에서 필요합니다.

   <div align="left"><figure><img src="/files/0029f71f3306532804cb5f82fe6e4720802950ed" alt="" width="375"><figcaption></figcaption></figure></div>
2. Google Cloud에서 새 앱을 만듭니다:
   1. 다음에 로그인하세요. [Google Cloud 콘솔](https://console.developers.google.com/project).
   2. 를 클릭한 다음 **+ 프로젝트 만들기.**\
      ![In Google Cloud console, the "+Create Project" button appears at the top of the page under the search bar. In this image, there is a teal circle around it.](/files/8faa73c1d50d9b144aa0c62eaa9cabf5dd5b17d7)
   3. 설명적인 **프로젝트 이름** (예: `Panther Integration`)을 입력하고 **위치**.
   4. 를 클릭한 다음 **를 선택한 다음**.
      * 만들기
   5. 프로젝트를 만드는 데 몇 초가 걸립니다. 생성되면 페이지에 알림이 표시됩니다. **왼쪽 사이드바 메뉴에서 세 줄 아이콘을 클릭한 다음** > **Cloud 개요**.
   6. 대시보드\
      ![At the top of the Google Cloud dashboard, there is a dropdown. "Panther integration test" has been selected, and the select box is circled.](/files/cffd2d533779d8e4598e9531c841d5074d8eb80b)
   7. 상단 검색창에서 "OAuth 동의 화면"을 검색한 다음 일치하는 결과를 선택합니다.\
      ![The search bar at the top of Google Cloud Console has the search term "oauth consent screen" typed in it. the first result, "OAuth consent screen," is circled](/files/cd1f998db4ba84fbb1b6b02fed76d3eb981b20e8)
   8. 을 클릭합니다. **OAuth 동의 화면** 검색창에 "Admin SDK API"를 입력하고 **시작하기**.
3. 새 Google Cloud 앱을 구성하고 Admin SDK API를 활성화합니다:
   1. 을 클릭합니다. **OAuth 동의 화면** > **브랜딩** 페이지에서 다음 정보를 입력합니다:
      * **앱 이름**: 프로젝트 이름 또는 프로젝트 ID를 입력합니다.
      * **사용자 지원 이메일**: 이메일 주소를 선택합니다.
      * **대상:** 다음을 선택합니다. `내부`.
      * **개발자 연락처 정보**: 이메일 주소를 입력합니다.
      * 다른 필드는 비워 둡니다.
   2. 를 클릭한 다음 **저장하고 계속하기**.
   3. 을 클릭합니다. **데이터 액세스** > **범위** 검색창에 "Admin SDK API"를 입력하고 **범위 추가 또는 제거**.
   4. 다음에서 **범위 수동 추가** 섹션에 다음을 입력합니다 `https://www.googleapis.com/auth/admin.reports.audit.readonly`
      * (선택 사항) 사용자 프로필이 필요한 경우 다음도 입력합니다\
        `https://www.googleapis.com/auth/admin.directory.user.readonly`
   5. 를 클릭한 다음 **표에 추가** 및 **업데이트**.\
      ![In the Manually add scopes section of the Google Cloud page, a URL has been entered. There is an arrow pointing from the Add to table button to the Update button.](/files/28c6689bb2962c953f1de6b1d89b1309cc59675d)
   6. 를 클릭한 다음 **저장합니다.**
   7. 검색창에 "Admin SDK API"를 검색한 다음 **Admin SDK API 활성화:**.
   8. 을 클릭합니다. **Admin SDK API 활성화:** 검색창에 "Admin SDK API"를 입력하고 **Admin SDK API**\
      ![In the Google Cloud console, an Admin SDK API page is shown. An Enable button is circled.](/files/8ac4c94240e7473dfd09a1f4fe0582f5e7050da3)
      * 페이지에서
4. 새 Google Cloud 앱에 대한 OAuth 자격 증명을 만듭니다:
   1. 왼쪽 탐색 메뉴에서 **자격 증명**
   2. 을 클릭합니다. **페이지 상단에서**.
   3. 를 클릭한 다음 **+자격 증명 만들기**\
      ![In Google Cloud console, the Credentials link in the left sidebar is highlighted. There is an arrow pointing from it to the "+ Create Credentials" link. There is an arrow pointing from "+ Create Credentials" to one of the dropdown options, "OAuth Client ID"](/files/da7a6fe859ba0a070e911378e29729648fc0988b)
      * OAuth 클라이언트 ID.
   4. 을 클릭합니다. **다른 페이지로 이동됩니다.** OAuth 클라이언트 ID 만들기 **페이지의** 애플리케이션 유형 **필드에서** 웹 애플리케이션 **이름**을 선택하고 친숙한 `예: Panther`.
   5. 를 입력합니다. **아래로 스크롤하여** 승인된 리디렉션 URI **섹션으로 이동한 뒤**.
   6. 다음에서 **+ URI 추가** URI 1 **필드에 2.1단계에서 위에서 복사한 리디렉션 URL을 붙여넣습니다. 이는 Panther Console의 로그 소스** 자격 증명 설정\
      ![There is an "Authorized Redirect URIs" header. There is a field labeled "URIs 1". At the bottom, there is a blue "Create" button.](/files/748944d57e9d59937e1964c411d1c66e1cbba1a6)
   7. 를 클릭한 다음 **를 선택한 다음**.
   8. 페이지에서 찾을 수 있습니다. **클라이언트 ID** 및 **클라이언트 비밀**이 표시됩니다. 안전한 방법으로 ClientID와 Client Secret을 기록해 두세요. 보고서를 가져오려면 Panther Console에 이를 제공해야 합니다.
5. Panther에서 Google Workspace 소스 설정을 완료합니다:

   1. 이 문서의 앞부분에서 Panther Console에서 [로그 소스 설정을 시작했던 브라우저 창 또는 탭을 엽니다.](#step-1-create-a-new-google-workspace-source-in-panther).
   2. 을 클릭합니다. **자격 증명** 페이지에서 **클라이언트 ID** 및 **클라이언트 비밀** Google Cloud 콘솔에 제공한 값을 입력합니다.

      <div align="left"><figure><img src="/files/0029f71f3306532804cb5f82fe6e4720802950ed" alt="" width="375"><figcaption></figcaption></figure></div>

      * 이전 단계에서 이 값을 저장하지 않았다면 Google Cloud 콘솔의 **API 및 서비스** > **자격 증명** > **OAuth 2.0 클라이언트 ID**.
   3. 를 클릭한 다음 **계속**.
   4. 을 클릭합니다. **Enrichment** 페이지에서 [Google Workspace 사용자 프로필](/ko/enrichment/google-workspace.md)을 활성화하려면 **User Profiles**오른쪽의 토글을 `켜기`.
      * Google Workspace 프로필 활성화의 사전 요구 사항을 확인하세요 [를 참고하세요.](/ko/enrichment/google-workspace.md#prerequisites-for-google-workspace-user-profiles).
      * 토글을 **User Profiles** `켜기`설정했다면, **새로고침 주기(분)**&#xB3C4; 설정하세요. 이는 Panther가 Google Workspace에 저장된 값으로 프로필 데이터를 업데이트하는 주기를 의미합니다.\
        ![](/files/971b91384bba9695e504aaa2ef2e06fef4001ffa)
   5. 를 클릭한 다음 **설정**.
   6. 을 클릭합니다. **확인** 검색창에 "Admin SDK API"를 입력하고 **액세스 허용**.

      * 그러면 이전에 만든 Google Workspace 앱이 계정에서 Google Workspace 로그를 가져오도록 승인하는 프롬프트가 표시됩니다.
      * 를 클릭한 다음 **허용**.

      <div align="center" data-full-width="false"><img src="/files/f4b0112c4e0e0b454a433728c74adcf9a210f4dd" alt="Google 프롬프트 제목은 &#x22;Panther integration app wants to access your Google Account.&#x22;입니다. 아래에는 &#x22;This will allow Panther integration app to: View audit reports for your G Suite domain.&#x22;라고 표시됩니다. 아래에는 Allow 및 Cancel 버튼이 있습니다." width="188"></div>
   7. Panther Console로 돌아가게 되며 성공 화면이 표시됩니다:

   <figure><img src="/files/e0820e5acb9452e294cfe3ba72060f0fbbfd3b32" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

   * 하나 이상의 [디택션 팩](https://docs.panther.com/detections/panther-managed/packs).
   * 을 클릭하여 소스에 하나 이상의 스키마를 연결합니다. **다음 설정은** 이벤트가 처리되지 않을 때 알러트 트리거 **기본값이**예

     <figure><img src="/files/7db146cd7acee3d0704a4a8b2157f230cfa22168" alt="The &#x22;Trigger an alert when no events are processed&#x22; toggle is set to YES. The &#x22;How long should Panther wait before it sends you an alert that no events have been processed&#x22; setting is set to 1 Day" width="320"><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

## Panther에서 관리하는 디택션

다음을 참조하세요 [Panther에서 관리하는](/ko/detections/panther-managed.md) Google Workspace용 규칙은 [panther-analysis GitHub 저장소](https://github.com/panther-labs/panther-analysis/tree/master/rules) 에서 확인할 수 있습니다(디렉터리 이름 앞에 `gsuite_`).

## 지원되는 로그 유형

Panther는 Google의 [Reports Activities API](https://developers.google.com/admin-sdk/reports/reference/rest/v1/activities) 에서 데이터를 가져오며, 여기에는 관리자 활동, 로그인 활동, 토큰 활동, Google Drive 활동 등이 포함됩니다.

이 데이터는 다음 두 가지 모두로 저장됩니다. [`GSuite.ActivityEvent`](#gsuite.activityevent) 및 [`GSuite.Reports`](#gsuite.reports) 로그 유형입니다. 이 두 스키마는 같은 데이터를 포함하지만, `Gsuite.ActivityEvent` 를 사용하는 것이 권장됩니다. 이벤트를 평탄화하여 쿼리와 디택션에서 필드를 더 쉽게 참조할 수 있게 하기 때문입니다.

두 스키마는 같은 데이터를 캡처하지만 데이터 레이크에 저장하는 방식은 다릅니다. 예를 들어, `GSuite.Reports` 여러 이벤트가 하나의 페이로드로 묶여 있기 때문에 데이터 레이크에 있는 로그 수가 약간 더 적을 수 있습니다. 반면 `GSuite.ActivityEvent`에서는 각 이벤트가 Panther의 단일 이벤트가 됩니다. 이 동작에 대한 자세한 내용은 다음 Knowledge Base 문서에서 확인할 수 있습니다: [Panther 로그 유형 GSuite.Reports와 GSuite.ActivityEvent의 차이점은 무엇인가요?](https://help.panther.com/articles/4763221133-what-is-the-difference-between-the-panther-log-types-gsuite-reports-and-gsuite-activityevent)

{% hint style="info" %}
Google Workspace 로그는 데이터 레이크의 `GSuite.ActivityEvent` 및 `GSuite.Reports` 테이블에 모두 저장되지만, 수집 할당량에는 한 번만 계산됩니다.
{% endhint %}

### GSuite.ActivityEvent

Admin 콘솔 애플리케이션이나 Google Drive 애플리케이션과 같이 특정 계정 및 애플리케이션의 활동 이벤트를 포함합니다.

참조: [Reports API Activities List에 대한 Google Workspace 문서.](https://developers.google.com/admin-sdk/reports/v1/reference/activities/list#response)

```yaml
필드:
    - 이름: id
      필수: true
      설명: 각 활동 기록의 고유 식별자.
      유형: object
      필드:
        - 이름: applicationName
          설명: 이벤트가 속한 애플리케이션 이름.
          유형: string
        - 이름: customerId
          설명: Google Workspace 계정의 고유 식별자.
          유형: string
        - 이름: time
          설명: 활동 발생 시간.
          유형: timestamp
          timeFormat: rfc3339
          isEventTime: true
        - 이름: uniqueQualifier
          설명: 여러 이벤트의 시간이 같을 경우의 고유 식별자.
          유형: string
    - 이름: actor
      설명: 작업을 수행하는 사용자.
      유형: object
      필드:
        - 이름: email
          설명: 수행자의 기본 이메일 주소. 수행자와 연결된 이메일 주소가 없으면 없을 수 있습니다.
          유형: string
          지표:
            - 이메일
        - 이름: profileId
          설명: 수행자의 고유 Google Workspace 프로필 ID. 수행자가 Google Workspace 사용자가 아니면 없을 수 있습니다.
          유형: string
        - 이름: callerType
          설명: 수행자의 유형.
          유형: string
        - 이름: key
          설명: callerType이 KEY일 때만 존재합니다. OAuth 2LO API 요청의 경우 요청자의 consumer_key이거나 로봇 계정의 식별자일 수 있습니다.
          유형: string
    - 이름: kind
      필수: true
      설명: API 리소스 유형입니다. 활동 보고서의 경우 값은 reports#activities입니다.
      유형: string
    - 이름: ownerDomain
      설명: 보고서의 이벤트에 의해 영향을 받는 도메인입니다. 예를 들어 Admin 콘솔의 도메인 또는 Drive 애플리케이션의 문서 소유자 도메인입니다.
      유형: string
      지표:
        - 도메인
    - 이름: ipAddress
      설명: 작업을 수행하는 사용자의 IP 주소입니다. 이는 Google Workspace에 로그인할 때의 인터넷 프로토콜(IP) 주소이며, 사용자의 실제 위치를 반영할 수도 있고 그렇지 않을 수도 있습니다. 예를 들어, IP 주소는 사용자의 프록시 서버 주소나 가상 사설망(VPN) 주소일 수 있습니다. API는 IPv4와 IPv6를 지원합니다.
      유형: string
      지표:
        - ip
    - 이름: type
      설명: 이벤트 유형입니다. 관리자가 변경하는 Google Workspace 서비스 또는 기능은 type 속성으로 식별되며, 이 속성은 eventName 속성을 사용해 이벤트를 식별합니다. API의 type 범주 전체 목록은 위의 applicationName에서 다양한 애플리케이션에 대한 이벤트 이름 목록을 참조하세요.
      유형: string
    - 이름: name
      설명: 이벤트 이름입니다. 이는 API가 보고하는 활동의 특정 이름입니다. 각 eventName은 특정 Google Workspace 서비스 또는 기능과 관련되며, API는 이를 이벤트 유형으로 분류합니다.
      유형: string
    - 이름: parameters
      설명: 다양한 애플리케이션의 매개변수 값 쌍입니다. eventName 매개변수에 대한 자세한 내용은 위의 applicationName에서 다양한 애플리케이션에 대한 이벤트 이름 목록을 참조하세요.
      유형: json
```

### GSuite.Reports

{% hint style="warning" %}
다음 대신 [`GSuite.ActivityEvent`](#gsuite.activityevent) 를 사용하는 것을 권장합니다. `GSuite.Reports`두 스키마 모두 동일한 데이터를 포함하지만, `GSuite.ActivityEvent` 더 평탄하므로 쿼리와 탐지에서 참조하기가 더 쉽습니다.
{% endhint %}

Admin 콘솔 애플리케이션이나 Google Drive 애플리케이션과 같이 특정 계정 및 애플리케이션의 활동 이벤트를 포함합니다.

참조: [Reports API Activities List에 대한 Google Workspace 문서.](https://developers.google.com/admin-sdk/reports/v1/reference/activities/list#response)

<pre class="language-yaml"><code class="lang-yaml">schema: GSuite.Reports
description: 
<strong>referenceURL: https://developers.google.com/admin-sdk/reports/v1/reference/activities/list#response
</strong>필드:
    - 이름: id
      필수: true
      설명: 각 활동 기록의 고유 식별자.
      유형: object
      필드:
        - 이름: applicationName
          설명: 이벤트가 속한 애플리케이션 이름.
          유형: string
        - 이름: customerId
          설명: Google Workspace 계정의 고유 식별자.
          유형: string
        - 이름: time
          설명: 활동 발생 시간.
          유형: timestamp
          timeFormat: rfc3339
          isEventTime: true
        - 이름: uniqueQualifier
          설명: 여러 이벤트의 시간이 같을 경우의 고유 식별자.
          유형: string
    - 이름: actor
      설명: 작업을 수행하는 사용자.
      유형: object
      필드:
        - 이름: email
          설명: 수행자의 기본 이메일 주소. 수행자와 연결된 이메일 주소가 없으면 없을 수 있습니다.
          유형: string
          지표:
            - 이메일
        - 이름: profileId
          설명: 수행자의 고유 Google Workspace 프로필 ID. 수행자가 Google Workspace 사용자가 아니면 없을 수 있습니다.
          유형: string
        - 이름: callerType
          설명: 수행자의 유형.
          유형: string
        - 이름: key
          설명: callerType이 KEY일 때만 존재합니다. OAuth 2LO API 요청의 경우 요청자의 consumer_key이거나 로봇 계정의 식별자일 수 있습니다.
          유형: string
    - 이름: kind
      필수: true
      설명: API 리소스 유형입니다. 활동 보고서의 경우 값은 reports#activities입니다.
      유형: string
    - 이름: ownerDomain
      설명: 보고서의 이벤트에 의해 영향을 받는 도메인입니다. 예를 들어 Admin 콘솔의 도메인 또는 Drive 애플리케이션의 문서 소유자 도메인입니다.
      유형: string
      지표:
        - 도메인
    - 이름: ipAddress
      설명: 작업을 수행하는 사용자의 IP 주소입니다. 이는 Google Workspace에 로그인할 때의 인터넷 프로토콜(IP) 주소이며, 사용자의 실제 위치를 반영할 수도 있고 그렇지 않을 수도 있습니다. 예를 들어, IP 주소는 사용자의 프록시 서버 주소나 가상 사설망(VPN) 주소일 수 있습니다. API는 IPv4와 IPv6를 지원합니다.
      유형: string
      지표:
        - ip
    - name: events
      description: 보고서의 활동 이벤트입니다.
      type: array
      element:
        유형: object
        필드:
            - 이름: type
              설명: 이벤트 유형입니다. 관리자가 변경하는 Google Workspace 서비스 또는 기능은 type 속성으로 식별되며, 이 속성은 eventName 속성을 사용해 이벤트를 식별합니다. API의 type 범주 전체 목록은 위의 applicationName에서 다양한 애플리케이션에 대한 이벤트 이름 목록을 참조하세요.
              유형: string
            - 이름: name
              설명: 이벤트 이름입니다. 이는 API가 보고하는 활동의 특정 이름입니다. 각 eventName은 특정 Google Workspace 서비스 또는 기능과 관련되며, API는 이를 이벤트 유형으로 분류합니다.
              유형: string
            - 이름: parameters
              설명: 다양한 애플리케이션의 매개변수 값 쌍입니다. eventName 매개변수에 대한 자세한 내용은 위의 applicationName에서 다양한 애플리케이션에 대한 이벤트 이름 목록을 참조하세요.
              type: array
              element:
                유형: object
                필드:
                    - 이름: name
                      description: 매개변수의 이름입니다.
                      유형: string
                    - name: value
                      description: 매개변수의 문자열 값입니다.
                      유형: string
                    - name: intValue
                      description: 매개변수의 정수 값입니다.
                      type: bigint
                    - name: boolValue
                      description: 매개변수의 부울 값입니다.
                      type: boolean
                    - name: multiValue
                      description: 매개변수의 문자열 값들입니다.
                      type: array
                      element:
                        유형: string
                    - name: multiIntValue
                      description: 매개변수의 정수 값들입니다.
                      type: array
                      element:
                        type: bigint
                    - name: messageValue
                      description: '이 매개변수와 연관된 중첩된 매개변수 값 쌍입니다. 매개변수의 복합 값 유형은 매개변수 값 목록으로 반환됩니다. 예를 들어, address 매개변수는 [{parameter: [{name: city, value: abc}]}]와 같은 값을 가질 수 있습니다.'
                      유형: json
                    - name: multiMessageValue
                      description: messageValue 객체의 목록입니다.
                      type: array
                      element:
                        유형: json
</code></pre>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.panther.com/ko/data-onboarding/supported-logs/googleworkspace.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
