# Salesforce Event Monitoring

## 개요

Panther는 [Salesforce 이벤트 모니터링](https://trailhead.salesforce.com/content/learn/modules/event_monitoring/event_monitoring_intro) 다음 이벤트 유형에 대한 로그:

* [로그인](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_login.htm)
* [LoginAs](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_loginas.htm)
* [로그아웃](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_logout.htm)
* [URI](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_uri.htm)

{% hint style="warning" %}
Salesforce 배포 유형 중 `프로덕션`, `개발자`, 그리고 `샌드박스` Panther에서 지원됩니다. `스테이징` 은 지원되지 않습니다.
{% endhint %}

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

### 사전 요구 사항

* Salesforce 고객은 [이벤트 모니터링을 활성화해야 합니다](https://help.salesforce.com/articleView?id=000339868\&type=1\&mode=1) 로그를 Panther에 온보딩하기 전에. 이 Salesforce 추가 기능에는 추가 라이선스가 필요할 수 있습니다.
* 다음 중 [Panther에서 Salesforce 소스를 설정하는 동안](#step-4-create-a-new-salesforce-source-in-panther), 이벤트를 시간별 또는 일별로 가져올지 선택하게 됩니다. 시간별 가져오기를 사용하려면 Salesforce 담당자에게 요청해야 하며, 추가 비용이 발생합니다.

### 1단계: Salesforce에서 API 사용자 만들기

{% hint style="info" %}
새 사용자에게 권한을 만들고 추가하려면 ['사용자 관리' 권한](https://help.salesforce.com/articleView?id=000324398\&type=1\&mode=1) 이 필요합니다.
{% endhint %}

Panther는 이벤트 모니터링 로그를 검색하기 위해 API 및 이벤트 로그 파일 권한이 있는 사용자 계정이 필요합니다.

Panther가 필요한 최소 권한만 가진 새 전용 사용자를 만드는 것을 권장합니다. Salesforce에서는 각 사용자가 [고유한 사용자 이름](https://help.salesforce.com/articleView?id=sf.basics_intro_usernames_passwords.htm\&type=5)을 가져야 하지만, 동일한 이메일 주소를 여러 사용자에 포함할 수 있습니다. 따라서 조직에서 추가 이메일 주소를 관리하지 않고도 Panther 전용 계정을 만들 수 있습니다.

**사용자를 만들려면**:

1. 다음 지침을 따르세요 [Salesforce 문서](https://help.salesforce.com/articleView?id=sf.adding_new_users.htm\&type=5) 에서 새 사용자를 추가합니다.
   * 사용자 라이선스는 "Salesforce"를 선택합니다.
   * 프로필은 "Read Only"를 선택합니다.
2. 이메일로 전송된 링크를 통해 새 비밀번호를 설정하여 사용자 등록 절차를 완료합니다.

### 2단계: Salesforce API에서 보안 토큰 가져오기 <a href="#retrieve-security-token" id="retrieve-security-token"></a>

Salesforce API 액세스에는 사용자 이름, 비밀번호, 그리고 다음과 같은 자격 증명이 필요합니다. ***보안 토큰***.

새 Salesforce 사용자 계정의 보안 토큰을 요청하려면 다음 지침을 따르세요 [이 Salesforce 문서의](https://help.salesforce.com/s/articleView?id=sf.user_security_token.htm\&type=5). 새 보안 토큰은 Salesforce 개인 설정에 있는 이메일 주소로 전송됩니다.

### 3단계: Salesforce에서 새 권한 세트 만들기 및 할당

새 사용자에게 권한을 할당하려면 새 [권한 세트](https://help.salesforce.com/articleView?id=perm_sets_overview.htm\&type=5).

1. 를 만들어야 합니다. Salesforce의 [권한 세트 만들기 문서](https://help.salesforce.com/s/articleView?id=sf.perm_sets_create.htm\&type=5) 의 지침에 따라 SOAP/REST API를 통해 Panther가 이벤트 모니터링 데이터에 액세스할 수 있도록 하는 새 권한 세트를 추가합니다.
2. 새 권한 세트 페이지에서 **시스템 권한:**\
   ![A "System" page in Salesforce is displayed. A link labeled "System Permissions" is circled.](/files/5df0261f4f4d488c7af0468deb98a959770010c7)
3. 다음을 클릭하세요. **편집**을 클릭한 다음 다음 권한을 활성화하는 상자를 선택합니다:
   * API 활성화
   * 이벤트 로그 파일 보기
4. Salesforce 문서의 지침에 따라 지정된 사용자에게 권한 세트를 할당합니다: [단일 사용자에게 권한 세트 할당](https://developer.salesforce.com/docs/atlas.en-us.securityImplGuide.meta/securityImplGuide/perm_sets_assigning.htm).

### 4단계: Panther에서 새 Salesforce 소스 만들기

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **구성** > **로그 소스**.
2. 다음을 클릭하세요. **새로 만들기.**
3. 다음을 선택합니다 **Salesforce** 사용 가능한 로그 소스 목록에서. 클릭 **설정 시작**.
4. 다음 항목에서 **소스 구성** 페이지에서 다음 필드를 입력합니다:
   * **Name:** 예를 들어 소스에 대한 설명이 포함된 이름을 입력합니다. `Salesforce 로그`.
   * **로그 유형:** 모니터링할 로그 유형을 선택합니다.
   * **환경**: 선택하세요 **프로덕션 / 개발자** 또는 **샌드박스**.
   * **귀하의 Salesforce 인스턴스는 일별 또는 시간별 파일 간격을 지원합니까?:** 시간별 또는 일별을 선택합니다. Salesforce에서 파일을 가져오고자 하는 간격입니다.
     * Salesforce 관리자에게 문의하여 Salesforce 인스턴스가 어떻게 구성되어 있는지와 어떤 파일 간격이 지원되는지 확인하세요. 시간별 이벤트 모니터링은 요청 및 구매 시에만 제공되며, 이를 활성화하려면 Salesforce 담당자에게 문의해야 합니다.
5. 다음을 클릭하세요. **설정**.
6. Panther가 Salesforce API에 연결할 때 사용할 계정의 자격 증명을 입력합니다:
   * **계정 사용자 이름**: Salesforce 계정 사용자 이름을 입력합니다. 예: `panther-logs@mycompany.com`.
   * **계정 비밀번호**: Salesforce 계정 비밀번호를 입력합니다.
   * **보안 토큰**: 이전에 [보안 토큰](#retrieve-security-token) 이 문서에서 얻은 것을 입력합니다.
7. 다음을 클릭하세요. **설정**. 그러면 성공 화면으로 이동합니다:

   <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).
   * 다음 **이벤트가 처리되지 않을 때 알러트 트리거** 설정 기본값은 **예**. 이 기능은 일정 시간이 지난 후 로그 소스에서 데이터 흐름이 중단되면 알림을 받을 수 있으므로 활성화된 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다.

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

## 지원되는 로그 유형

### Salesforce.Login

로그인 이벤트에는 조직의 사용자 로그인 기록에 대한 세부 정보가 포함됩니다.

참조: [로그인 이벤트 유형에 대한 Salesforce 문서.](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_login.htm)

```yaml
schema: Salesforce.Login
referenceURL: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_login.htm
description: '로그인 이벤트에는 조직의 사용자 로그인 기록에 대한 세부 정보가 포함됩니다.'
parser:
    csv:
        delimiter: ','
        hasHeader: true
        columns:
            - EVENT_TYPE
            - TIMESTAMP
            - REQUEST_ID
            - ORGANIZATION_ID
            - USER_ID
            - RUN_TIME
            - CPU_TIME
            - URI
            - SESSION_KEY
            - LOGIN_KEY
            - USER_TYPE
            - REQUEST_STATUS
            - DB_TOTAL_TIME
            - BROWSER_TYPE
            - API_TYPE
            - API_VERSION
            - USER_NAME
            - TLS_PROTOCOL
            - CIPHER_SUITE
            - AUTHENTICATION_METHOD_REFERENCE
            - TIMESTAMP_DERIVED
            - USER_ID_DERIVED
            - CLIENT_IP
            - URI_ID_DERIVED
            - LOGIN_STATUS
            - SOURCE_IP
fields:
    - name: EVENT_TYPE
      type: string
      required: true
      검증:
        allow: ['Login']
      description: 이벤트 유형입니다. 값은 항상 Login입니다.
    - name: TIMESTAMP
      required: false
      type: timestamp
      timeFormat: '%Y%m%d%H%M%S.%f'
      description: 'GMT 기준 Salesforce 서비스의 액세스 시간입니다. 예: 20130715233322.670.'
    - name: REQUEST_ID
      required: false
      type: string
      indicators:
        - trace_id
      description: >-
        단일 트랜잭션의 고유 ID입니다. 하나의 트랜잭션에는 하나 이상의 이벤트가 포함될 수 있습니다. 특정 트랜잭션의 각 이벤트는 동일한 REQUEST_ID를 가집니다. 예: 3nWgxWbDKWWDIk0FKfF5DV.
    - name: ORGANIZATION_ID
      required: true
      type: string
      description: '조직의 15자 ID입니다. 예: 00D000000000123.'
    - name: USER_ID
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 15자 ID입니다. 예: 00530000009M943
    - name: RUN_TIME
      required: false
      유형: bigint
      description: 요청에 걸린 시간(밀리초)입니다.
    - name: CPU_TIME
      required: false
      유형: bigint
      description: >-
        요청을 완료하는 데 사용된 CPU 시간(밀리초)입니다. 이 필드는 앱 서버 계층에서 발생하는 활동의 양을 나타냅니다.
    - name: URI
      required: false
      type: string
      description: '요청을 받는 페이지의 URI입니다. 예: /home/home.jsp.'
    - name: SESSION_KEY
      required: false
      type: string
      description: >-
        사용자의 고유 세션 ID입니다. 이 값을 사용하여 세션 내의 모든 사용자 이벤트를 식별할 수 있습니다. 사용자가 로그아웃했다가 다시 로그인하면 새 세션이 시작됩니다. Login 이벤트 유형의 경우 이 필드는 일반적으로 null인데, 이는 세션이 생성되기 전에 이벤트가 캡처되기 때문입니다. 예: d7DEq/ANa7nNZZVD
    - name: LOGIN_KEY
      required: false
      type: string
      description: >-
        특정 사용자의 로그인 세션에 있는 모든 이벤트를 연결하는 문자열입니다. 로그인 이벤트로 시작하여 로그아웃 이벤트 또는 사용자 세션 만료로 끝납니다. 예: GeJCsym5eyvtEK2I.
    - name: REQUEST_STATUS
      required: false
      type: string
      description: >-
        페이지 보기 또는 사용자 인터페이스 작업에 대한 요청 상태입니다. 가능한 값은 다음과 같습니다:
          S—성공. Salesforce가 요청을 성공적으로 처리했습니다. Apex 컨트롤러가 예외를 throw하는 경우에도 이 상태가 반환됩니다.
          F—실패. 일반적으로 4xx 또는 5xx HTTP 코드로, 예: 페이지 보기 권한 없음, 페이지 렌더링 시간이 너무 오래 걸림, 페이지가 읽기 전용임.
          U—정의되지 않음
          A—권한 오류
          R—리디렉션. 일반적으로 3xx HTTP 코드이며, Visualforce 페이지의 Apex 컨트롤러에 의해 시작될 수 있습니다.
          N—찾을 수 없음. 404 오류.
    - name: DB_TOTAL_TIME
      required: false
      유형: bigint
      description: >-
        데이터베이스 왕복에 걸린 시간(나노초)입니다. JDBC 드라이버에서 보낸 시간, 데이터베이스로의 네트워크 시간, DB_CPU_TIME을 포함합니다. 이 필드를 CPU_TIME과 비교하여 성능 문제가 데이터베이스 계층에서 발생하는지 또는 자체 코드에서 발생하는지 확인합니다.
    - name: BROWSER_TYPE
      required: false
      type: string
      description: >-
        로그인에 사용된 브라우저에서 반환된 식별자 문자열입니다. 예시는 다음과 같습니다:
            Go-http-client/1.1
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv%3A50.0) Gecko/20100101 Firefox/50.0
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
    - name: API_TYPE
      required: false
      type: string
      description: >-
        API 요청 유형입니다. 가능한 값은 다음과 같습니다:
            D—Apex Class
            E—SOAP Enterprise
            I—SOAP Cross Instance
            M—SOAP Metadata
            O—Old SOAP
            P—SOAP Partner
            S—SOAP Apex
            T—SOAP Tooling
            X—XmlRPC
            f—Feed
            l—Live Agent
            p—SOAP ClientSync
    - name: API_VERSION
      required: false
      type: string
      description: '사용 중인 API 버전입니다. 예: 36.0.'
    - name: USER_NAME
      required: false
      type: string
      description: 로그인에 사용된 사용자 이름입니다.
      indicators:
        - username
    - name: TLS_PROTOCOL
      required: false
      type: string
      description: '로그인에 사용된 TLS 프로토콜입니다. 가능한 값은 1.0, 1.1, 1.2의 3가지입니다.'
    - name: CIPHER_SUITE
      required: false
      type: string
      description: >-
        로그인에 사용된 TLS 암호 스위트입니다. 값은 하이픈 구분자가 있는 OpenSSL 스타일의 암호 스위트 이름입니다. 자세한 내용은 OpenSSL Cryptography and SSL/TLS Toolkit을 참조하세요.
    - name: TIMESTAMP_DERIVED
      required: true
      type: timestamp
      timeFormat: rfc3339
      isEventTime: true
      description: >-
        ISO8601 호환 형식(YYYY-MM-DDTHH:MM:SS.sssZ)으로 된 Salesforce 서비스의 액세스 시간입니다. 예: 2015-07-27T11:32:59.555Z. 시간대는 GMT입니다.
    - name: USER_ID_DERIVED
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 대소문자를 구분하지 않는 18자 ID입니다. 예: 00590000000I1SNIA0.
    - name: CLIENT_IP
      required: false
      type: string
      indicators:
        - ip
      description: >-
        Salesforce 서비스를 사용하는 클라이언트의 IP 주소입니다. Salesforce 내부 IP(예: Salesforce Workbench 또는 AppExchange에서의 로그인)는 "Salesforce.com IP"로 표시됩니다. 예: 10.0.0.1.
    - name: URI_ID_DERIVED
      required: false
      type: string
      description: 요청을 받는 페이지 URI의 대소문자를 구분하지 않는 18자 ID입니다.
    - name: LOGIN_STATUS
      required: false
      type: string
      description: >-
        로그인 시도의 상태입니다. 성공한 로그인의 경우 값은 LOGIN_NO_ERROR입니다. 그 외의 모든 값은 오류 또는 인증 문제를 나타냅니다. 자세한 내용은 https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_login_status.htm을 참조하세요.
    - name: SOURCE_IP
      required: false
      type: string
      indicators:
        - ip
      description: 로그인 요청의 소스 IP입니다.
    - name: AUTHENTICATION_METHOD_REFERENCE
      type: string
      description: >-
        OpenID Connect 단일 사인온 프로토콜에 대해 제3자 식별 공급자가 사용한 인증 방법입니다. 이 필드는 API 버전 51.0 이상에서 사용할 수 있습니다.
    - name: USER_TYPE
      type: string
      description: >-
        사용자 라이선스의 범주입니다. 가능한 값은 다음과 같습니다:
            CsnOnly — 애플리케이션 액세스가 Chatter로 제한된 사용자입니다. 이 사용자 유형에는 Chatter Free 및 Chatter moderator 사용자가 포함됩니다.
            CspLitePortal — CSP Lite Portal 라이선스입니다. 조직의 고객이며 고객 포털 또는 Experience Cloud 사이트를 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            CustomerSuccess — Customer Success 라이선스입니다. 조직의 고객이며 고객 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            Guest — 고객이 로그인하지 않고도 사이트를 보고 상호 작용할 수 있도록 액세스가 제한된 사용자입니다.
            PowerCustomerSuccess — Power Customer Success 라이선스입니다. 조직의 고객이며 고객 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다. 이 라이선스 유형의 사용자는 고객 포털 역할 계층에서 자신이 직접 소유한 데이터 또는 자신 아래의 사용자들이 소유하거나 공유한 데이터를 보고 편집할 수 있습니다.
            PowerPartner — Power Partner 라이선스입니다. 파트너이므로 액세스가 제한된 사용자로, 일반적으로 파트너 포털 또는 사이트를 통해 애플리케이션에 액세스합니다.
            SelfService — 조직의 고객이며 셀프 서비스 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            Standard — 표준 사용자 라이선스입니다. 이 사용자 유형에는 Salesforce Platform 및 Salesforce Platform One 사용자 라이선스와 이 조직의 관리자도 포함됩니다.
```

### Salesforce.LoginAs

Login As 이벤트에는 Salesforce 관리자가 다른 사용자로 로그인한 상태에서 수행한 작업에 대한 세부 정보가 포함됩니다.

참조: [Login As 이벤트 유형에 대한 Salesforce 문서.](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_loginas.htm)

```yaml
schema: Salesforce.LoginAs
referenceURL: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_loginas.htm
description: 'Login As 이벤트에는 Salesforce 관리자가 다른 사용자로 로그인한 상태에서 수행한 작업에 대한 세부 정보가 포함됩니다.'
parser:
    csv:
        delimiter: ','
        hasHeader: true
        columns:
            - EVENT_TYPE
            - TIMESTAMP
            - REQUEST_ID
            - ORGANIZATION_ID
            - USER_ID
            - RUN_TIME
            - CPU_TIME
            - URI
            - SESSION_KEY
            - LOGIN_KEY
            - DELEGATED_USER_NAME
            - DELEGATED_USER_ID
            - TIMESTAMP_DERIVED
            - USER_ID_DERIVED
            - CLIENT_IP
            - URI_ID_DERIVED
            - DELEGATED_USER_ID_DERIVED
fields:
    - name: EVENT_TYPE
      required: true
      type: string
      검증:
        allow: ['LoginAs']
      description: 이벤트 유형입니다. 값은 항상 LoginAs입니다.
    - name: TIMESTAMP
      required: false
      type: timestamp
      timeFormat: '%Y%m%d%H%M%S.%f'
      description: 'GMT 기준 Salesforce 서비스의 액세스 시간입니다. 예: 20130715233322.670.'
    - name: REQUEST_ID
      required: false
      type: string
      description: >-
        단일 트랜잭션의 고유 ID입니다. 하나의 트랜잭션에는 하나 이상의 이벤트가 포함될 수 있습니다. 특정 트랜잭션의 각 이벤트는 동일한 REQUEST_ID를 가집니다. 예: 3nWgxWbDKWWDIk0FKfF5DV.
      indicators:
        - trace_id
    - name: ORGANIZATION_ID
      required: true
      type: string
      description: '조직의 15자 ID입니다. 예: 00D000000000123.'
    - name: USER_ID
      required: true
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 15자 ID입니다. 예: 00530000009M943
    - name: RUN_TIME
      required: false
      유형: bigint
      description: 요청에 걸린 시간(밀리초)입니다.
    - name: CPU_TIME
      required: false
      유형: bigint
      description: >-
        요청을 완료하는 데 사용된 CPU 시간(밀리초)입니다. 이 필드는 앱 서버 계층에서 발생하는 활동의 양을 나타냅니다.
    - name: URI
      required: false
      type: string
      description: '요청을 받는 페이지의 URI입니다. 예: /home/home.jsp.'
    - name: SESSION_KEY
      required: false
      type: string
      description: >-
        사용자의 고유 세션 ID입니다. 이 값을 사용하여 세션 내의 모든 사용자 이벤트를 식별할 수 있습니다. 사용자가 로그아웃했다가 다시 로그인하면 새 세션이 시작됩니다. 예: d7DEq/ANa7nNZZVD.
    - name: LOGIN_KEY
      required: false
      type: string
      description: >-
        특정 사용자의 로그인 세션에 있는 모든 이벤트를 연결하는 문자열입니다. 로그인 이벤트로 시작하여 로그아웃 이벤트 또는 사용자 세션 만료로 끝납니다. 예: GeJCsym5eyvtEK2I.
    - name: DELEGATED_USER_NAME
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 사용자 이름입니다. 이 경우 가장(impersonation)을 수행하는 사용자입니다.
      indicators:
        - username
    - name: DELEGATED_USER_ID
      required: true
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 15자 ID입니다. 이 경우 가장을 수행하는 사용자입니다.
    - name: TIMESTAMP_DERIVED
      required: true
      type: timestamp
      timeFormat: rfc3339
      isEventTime: true
      description: >-
        ISO8601 호환 형식(YYYY-MM-DDTHH:MM:SS.sssZ)으로 된 Salesforce 서비스의 액세스 시간입니다. 예: 2015-07-27T11:32:59.555Z. 시간대는 GMT입니다.
    - name: USER_ID_DERIVED
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 대소문자를 구분하지 않는 18자 ID입니다. 예: 00590000000I1SNIA0.
    - name: CLIENT_IP
      required: false
      type: string
      indicators:
        - ip
      description: >-
        Salesforce 서비스를 사용하는 클라이언트의 IP 주소입니다. Salesforce 내부 IP(예: Salesforce Workbench 또는 AppExchange에서의 로그인)는 "Salesforce.com IP"로 표시됩니다. 예: 10.0.0.1.
    - name: URI_ID_DERIVED
      required: false
      type: string
      description: 요청을 받는 페이지 URI의 대소문자를 구분하지 않는 18자 ID입니다.
    - name: DELEGATED_USER_ID_DERIVED
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 대소문자를 구분하지 않는 18자 ID입니다. 이 경우 가장을 수행하는 사용자입니다.
```

### Salesforce.Logout

로그아웃 이벤트에는 사용자 로그아웃에 대한 세부 정보가 포함됩니다.

참조: [로그아웃 이벤트 유형에 대한 Salesforce 문서.](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_logout.htm)

```yaml
schema: Salesforce.Logout
referenceURL: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_logout.htm
description: 로그아웃 이벤트에는 사용자 로그아웃에 대한 세부 정보가 포함됩니다.
parser:
    csv:
        delimiter: ','
        hasHeader: true
        columns:
            - EVENT_TYPE
            - TIMESTAMP
            - REQUEST_ID
            - ORGANIZATION_ID
            - USER_ID
            - USER_TYPE
            - SESSION_TYPE
            - SESSION_LEVEL
            - BROWSER_TYPE
            - PLATFORM_TYPE
            - RESOLUTION_TYPE
            - APP_TYPE
            - CLIENT_VERSION
            - API_TYPE
            - API_VERSION
            - USER_INITIATED_LOGOUT
            - SESSION_KEY
            - LOGIN_KEY
            - TIMESTAMP_DERIVED
            - USER_ID_DERIVED
            - CLIENT_IP
fields:
    - name: EVENT_TYPE
      required: true
      type: string
      검증:
        allow: ['Logout']
      description: 이벤트 유형입니다. 값은 항상 Logout입니다.
    - name: TIMESTAMP
      required: false
      type: timestamp
      timeFormat: '%Y%m%d%H%M%S.%f'
      description: 'GMT 기준 Salesforce 서비스의 액세스 시간입니다. 예: 20130715233322.670.'
    - name: REQUEST_ID
      required: false
      type: string
      indicators:
        - trace_id
      description: >-
        단일 트랜잭션의 고유 ID입니다. 하나의 트랜잭션에는 하나 이상의 이벤트가 포함될 수 있습니다. 특정 트랜잭션의 각 이벤트는 동일한 REQUEST_ID를 가집니다. 예: 3nWgxWbDKWWDIk0FKfF5DV.
    - name: ORGANIZATION_ID
      required: true
      type: string
      description: '조직의 15자 ID입니다. 예: 00D000000000123.'
    - name: USER_ID
      required: true
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 15자 ID입니다. 예: 00530000009M943
    - name: USER_TYPE
      required: false
      type: string
      description: >-
        로그아웃한 사용자의 사용자 라이선스 범주입니다. 가능한 값:
          A: 자동화된 프로세스
          b: 대용량 포털
          C: 고객 포털 사용자
          D: External Who
          F: 셀프 서비스
          G: 게스트
          L: 패키지 라이선스 관리자
          N: Salesforce to Salesforce
          n: CSN Only
          O: Power Custom
          o: Custom
          P: 파트너
          p: 고객 포털 관리자
          S: 표준
          X: Salesforce 관리자
    - name: SESSION_TYPE
      required: false
      type: string
      description: >-
        로그아웃할 때 사용된 세션 유형입니다. 가능한 값:

          A: API
          I: APIOnlyUser
          N: ChatterNetworks
          Z: ChatterNetworksAPIOnly
          C: 콘텐츠
          P: OauthApprovalUI
          O: Oauth2
          T: SiteStudio
          R: SitePreview
          S: SubstituteUser
          B: TempContentExchange
          G: TempOauthAccessTokenFrontdoor
          Y: TempVisualforceExchange
          F: TempUIFrontdoor
          U: UI
          E: UserSite
          V: Visualforce
          W: WDC_API
    - name: SESSION_LEVEL
      required: false
      type: string
      description: >-
        로그아웃할 때 사용된 세션의 보안 수준입니다. 가능한 값: 1: 표준 세션, 2: 고보증 세션
    - name: BROWSER_TYPE
      required: false
      type: string
      description: >-
        로그인에 사용된 브라우저에서 반환된 식별자 문자열입니다. 예시는 다음과 같습니다:
            Go-http-client/1.1
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv%3A50.0) Gecko/20100101 Firefox/50.0
            Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
    - name: PLATFORM_TYPE
      required: false
      유형: bigint
      description: >-
        클라이언트 플랫폼의 코드입니다. 타임아웃으로 인해 로그아웃된 경우 이 필드는 null입니다. 예시 값:
          1000: Windows
          2003: Macintosh/Apple OSX
          5005: Android
          5006: iPhone
          5007: iPad
    - name: RESOLUTION_TYPE
      required: false
      유형: float
      description: 클라이언트의 화면 해상도입니다. 타임아웃으로 인해 로그아웃된 경우 이 필드는 null입니다.
    - name: APP_TYPE
      required: false
      type: string
      description: >-
        로그아웃 시 사용 중이던 애플리케이션 유형입니다. 예시 값:
          1007: SFDC Application
          1014: Chat
          2501: CTI
          2514: OAuth
          3475: SFDC Partner Portal
    - name: CLIENT_VERSION
      required: false
      유형: float
      description: 로그아웃 시 사용 중이던 클라이언트 버전입니다.
    - name: API_TYPE
      required: false
      type: string
      description: >-
        API 요청 유형입니다. 가능한 값은 다음과 같습니다:
            D—Apex Class
            E—SOAP Enterprise
            I—SOAP Cross Instance
            M—SOAP Metadata
            O—Old SOAP
            P—SOAP Partner
            S—SOAP Apex
            T—SOAP Tooling
            X—XmlRPC
            f—Feed
            l—Live Agent
            p—SOAP ClientSync
    - name: API_VERSION
      required: false
      type: string
      description: '사용 중인 API 버전입니다. 예: 36.0.'
    - name: USER_INITIATED_LOGOUT
      required: false
      type: boolean
      description: >-
        사용자가 Logout 버튼을 클릭하여 조직에서 의도적으로 로그아웃한 경우 값은 1입니다. 비활성으로 인해 세션이 시간 초과되었거나 다른 암묵적 로그아웃 작업이 발생한 경우 값은 0입니다.
    - name: SESSION_KEY
      required: false
      type: string
      description: >-
        사용자의 고유 세션 ID입니다. 이 값을 사용하여 세션 내의 모든 사용자 이벤트를 식별할 수 있습니다. 사용자가 로그아웃했다가 다시 로그인하면 새 세션이 시작됩니다. 예: d7DEq/ANa7nNZZVD.
    - name: LOGIN_KEY
      required: false
      type: string
      description: >-
        특정 사용자의 로그인 세션에 있는 모든 이벤트를 연결하는 문자열입니다. 로그인 이벤트로 시작하여 로그아웃 이벤트 또는 사용자 세션 만료로 끝납니다. 예: GeJCsym5eyvtEK2I.
    - name: TIMESTAMP_DERIVED
      required: true
      type: timestamp
      isEventTime: true
      timeFormat: rfc3339
      description: >-
        ISO8601 호환 형식(YYYY-MM-DDTHH:MM:SS.sssZ)으로 된 Salesforce 서비스의 액세스 시간입니다. 예: 2015-07-27T11:32:59.555Z. 시간대는 GMT입니다.
    - name: USER_ID_DERIVED
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 대소문자를 구분하지 않는 18자 ID입니다. 예: 00590000000I1SNIA0.
    - name: CLIENT_IP
      required: false
      type: string
      indicators:
        - ip
      description: >-
        Salesforce 서비스를 사용하는 클라이언트의 IP 주소입니다. Salesforce 내부 IP(예: Salesforce Workbench 또는 AppExchange에서의 로그인)는 "Salesforce.com IP"로 표시됩니다. 예: 10.0.0.1.
```

### Salesforce.URI

URI 이벤트에는 웹 브라우저 UI와의 사용자 상호작용에 대한 세부 정보가 포함됩니다.

참조: [URI 이벤트 유형에 대한 Salesforce 문서.](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_uri.htm)

```yaml
schema: Salesforce.URI
referenceURL: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_eventlogfile_uri.htm
description: 'URI 이벤트에는 웹 브라우저 UI와의 사용자 상호작용에 대한 세부 정보가 포함됩니다.'
parser:
    csv:
        delimiter: ','
        hasHeader: true
        columns:
            - EVENT_TYPE
            - TIMESTAMP
            - REQUEST_ID
            - ORGANIZATION_ID
            - USER_ID
            - RUN_TIME
            - CPU_TIME
            - URI
            - SESSION_KEY
            - LOGIN_KEY
            - REQUEST_STATUS
            - DB_TOTAL_TIME
            - DB_BLOCKS
            - DB_CPU_TIME
            - REFERRER_URI
            - TIMESTAMP_DERIVED
            - USER_ID_DERIVED
            - CLIENT_IP
            - URI_ID_DERIVED
            - USER_TYPE
fields:
    - name: EVENT_TYPE
      required: true
      type: string
      검증:
        allow: ['URI']
      description: 이벤트 유형입니다. 값은 항상 URI입니다.
    - name: TIMESTAMP
      required: false
      type: timestamp
      timeFormat: '%Y%m%d%H%M%S.%f'
      description: 'GMT 기준 Salesforce 서비스의 액세스 시간입니다. 예: 20130715233322.670.'
    - name: REQUEST_ID
      required: false
      type: string
      indicators:
        - trace_id
      description: >-
        단일 트랜잭션의 고유 ID입니다. 하나의 트랜잭션에는 하나 이상의 이벤트가 포함될 수 있습니다. 특정 트랜잭션의 각 이벤트는 동일한 REQUEST_ID를 가집니다. 예: 3nWgxWbDKWWDIk0FKfF5DV.
    - name: ORGANIZATION_ID
      required: true
      type: string
      description: '조직의 15자 ID입니다. 예: 00D000000000123.'
    - name: USER_ID
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 15자 ID입니다. 예: 00530000009M943
    - name: RUN_TIME
      required: false
      유형: bigint
      description: '요청에 걸린 시간(밀리초)입니다.'
    - name: CPU_TIME
      required: false
      유형: bigint
      description: >-
        요청을 완료하는 데 사용된 CPU 시간(밀리초)입니다. 이 필드는 앱 서버 계층에서 발생하는 활동의 양을 나타냅니다.
    - name: URI
      required: true
      type: string
      description: >-
        요청을 받는 페이지의 URI입니다. Lightning Experience 및 Salesforce 앱에 대한 더 세부적인 URI 정보는 Lightning Error, Lightning Interaction, Lightning Page View, Lightning Performance 이벤트 유형을 참조하세요. 예: /aura(Lightning Experience), /lightning(Lightning Experience 및 Salesforce 앱), /home/home.jsp(Salesforce Classic)
    - name: SESSION_KEY
      required: false
      type: string
      description: >-
        사용자의 고유 세션 ID입니다. 이 값을 사용하여 세션 내의 모든 사용자 이벤트를 식별할 수 있습니다. 사용자가 로그아웃했다가 다시 로그인하면 새 세션이 시작됩니다. Login 이벤트 유형의 경우 이 필드는 일반적으로 null인데, 이는 세션이 생성되기 전에 이벤트가 캡처되기 때문입니다. 예: d7DEq/ANa7nNZZVD
    - name: LOGIN_KEY
      required: false
      type: string
      description: >-
        특정 사용자의 로그인 세션에 있는 모든 이벤트를 연결하는 문자열입니다. 로그인 이벤트로 시작하여 로그아웃 이벤트 또는 사용자 세션 만료로 끝납니다. 예: GeJCsym5eyvtEK2I.
    - name: REQUEST_STATUS
      required: false
      type: string
      description: >-
        페이지 보기 또는 사용자 인터페이스 작업에 대한 요청 상태입니다. 가능한 값은 다음과 같습니다:
          S—성공. Salesforce가 요청을 성공적으로 처리했습니다. Apex 컨트롤러가 예외를 throw하는 경우에도 이 상태가 반환됩니다.
          F—실패. 일반적으로 4xx 또는 5xx HTTP 코드로, 예: 페이지 보기 권한 없음, 페이지 렌더링 시간이 너무 오래 걸림, 페이지가 읽기 전용임.
          U—정의되지 않음
          A—권한 오류
          R—리디렉션. 일반적으로 3xx HTTP 코드이며, Visualforce 페이지의 Apex 컨트롤러에 의해 시작될 수 있습니다.
          N—찾을 수 없음. 404 오류.
    - name: DB_TOTAL_TIME
      required: false
      유형: bigint
      description: >-
        데이터베이스 왕복에 걸린 시간(나노초)입니다. JDBC 드라이버에서 보낸 시간, 데이터베이스로의 네트워크 시간, DB_CPU_TIME을 포함합니다. 이 필드를 CPU_TIME과 비교하여 성능 문제가 데이터베이스 계층에서 발생하는지 또는 자체 코드에서 발생하는지 확인합니다.
    - name: DB_BLOCKS
      required: false
      유형: bigint
      description: >-
        데이터베이스에서 얼마나 많은 활동이 발생하고 있는지를 나타냅니다. 이 필드의 값이 높으면 쿼리에 인덱스나 필터를 추가할 때 성능 향상에 도움이 될 수 있음을 시사합니다.
    - name: DB_CPU_TIME
      required: false
      유형: bigint
      description: >-
        요청을 완료하는 데 걸린 CPU 시간(밀리초)입니다. 요청 중 데이터베이스 계층에서 발생하는 활동량을 나타냅니다.
    - name: REFERRER_URI
      required: false
      type: string
      description: 요청을 받는 페이지의 참조 URI입니다.
    - name: TIMESTAMP_DERIVED
      required: true
      type: timestamp
      timeFormat: rfc3339
      isEventTime: true
      description: >-
        ISO8601 호환 형식(YYYY-MM-DDTHH:MM:SS.sssZ)으로 된 Salesforce 서비스의 액세스 시간입니다. 예: 2015-07-27T11:32:59.555Z. 시간대는 GMT입니다.
    - name: USER_ID_DERIVED
      required: false
      type: string
      description: >-
        UI 또는 API를 통해 Salesforce 서비스를 사용하는 사용자의 대소문자를 구분하지 않는 18자 ID입니다. 예: 00590000000I1SNIA0.
    - name: CLIENT_IP
      required: false
      type: string
      indicators:
        - ip
      description: >-
        Salesforce 서비스를 사용하는 클라이언트의 IP 주소입니다. Salesforce 내부 IP(예: Salesforce Workbench 또는 AppExchange에서의 로그인)는 "Salesforce.com IP"로 표시됩니다. 예: 10.0.0.1.
    - name: URI_ID_DERIVED
      required: false
      type: string
      description: 요청을 받는 페이지 URI의 대소문자를 구분하지 않는 18자 ID입니다.
    - name: USER_TYPE
      type: string
      description: >-
        사용자 라이선스의 범주입니다. 가능한 값은 다음과 같습니다:
            CsnOnly — 애플리케이션 액세스가 Chatter로 제한된 사용자입니다. 이 사용자 유형에는 Chatter Free 및 Chatter moderator 사용자가 포함됩니다.
            CspLitePortal — CSP Lite Portal 라이선스입니다. 조직의 고객이며 고객 포털 또는 Experience Cloud 사이트를 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            CustomerSuccess — Customer Success 라이선스입니다. 조직의 고객이며 고객 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            Guest — 고객이 로그인하지 않고도 사이트를 보고 상호 작용할 수 있도록 액세스가 제한된 사용자입니다.
            PowerCustomerSuccess — Power Customer Success 라이선스입니다. 조직의 고객이며 고객 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다. 이 라이선스 유형의 사용자는 고객 포털 역할 계층에서 자신이 직접 소유한 데이터 또는 자신 아래의 사용자들이 소유하거나 공유한 데이터를 보고 편집할 수 있습니다.
            PowerPartner — Power Partner 라이선스입니다. 파트너이므로 액세스가 제한된 사용자로, 일반적으로 파트너 포털 또는 사이트를 통해 애플리케이션에 액세스합니다.
            SelfService — 조직의 고객이며 셀프 서비스 포털을 통해 애플리케이션에 액세스하므로 액세스가 제한된 사용자입니다.
            Standard — 표준 사용자 라이선스입니다. 이 사용자 유형에는 Salesforce Platform 및 Salesforce Platform One 사용자 라이선스와 이 조직의 관리자도 포함됩니다.
```


---

# 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/salesforce/event-monitoring.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.
