# Okta 프로필

## 개요

Panther에서 Okta 로그 소스 통합을 구성하여 가져오도록 할 수 있습니다 [사용자 프로필](#okta.users) 및 [디바이스 프로필](#okta.devices) 을 Panther가 관리하는 Enrichment로 가져올 수 있습니다. 즉, 프로필 및 디바이스 데이터를 디텍션 로직과 검색 쿼리에서 사용할 수 있습니다.

다음을 따라 Okta에서 사용자 프로필을 사용자 지정할 수 있습니다 [해당 문서](https://help.okta.com/en-us/Content/Topics/users-groups-profiles/usgp-add-custom-user-attributes.htm). 예를 들어 해당 사용자의 예상 권한 수준처럼 디텍션 로직에서 유용한 사용자 지정 속성을 추가하는 것을 고려할 수 있습니다.

다음 방법을 알아보세요 [저장된 enrichment 데이터를 여기에서 보기](/ko/enrichment.md#viewing-and-managing-enrichments).

### 예시 디텍션 사용 사례

Okta 사용자 및 디바이스 프로필 데이터를 디텍션에서 활용할 수 있습니다. 다음 예시 사용 사례를 참조하세요:

* 작업이 수행된 디바이스가 휴대폰이고 행위자가 시스템 관리자(System Administrator)가 아닌 경우를 디텍션합니다.
* 작업이 종료된 직원에 의해 수행된 경우를 디텍션합니다. 이는 오프보딩이 완료되지 않았음을 나타낼 수 있습니다.
* 디텍션의 구성에서 이벤트 행위자의 직책에 따라 알러트 심각도 수준을 조정합니다. 예를 들어, `INFO` 심각도 수준은 일부 작업이 시스템 관리자(System Administrator)에 의해 수행된 경우 사용하지만 `HIGH` 는 다른 역할의 사용자가 수행한 경우 사용할 수 있습니다.

## Panther에서 Okta 사용자 및 디바이스 프로필을 설정하는 방법

Panther에서 Okta 로그 소스 통합을 처음 설정하는 동안 또는 나중에 소스를 편집하여 Okta 사용자 및 디바이스 프로필을 구성할 수 있습니다.

어느 흐름에서든 Okta 프로필 가져오기 설정을 켠 다음, 프로필 데이터를 새로 고칠 주기를 설정합니다.

{% hint style="info" %}
Panther에서 Okta 사용자 및/또는 디바이스 프로필을 활성화하려면 먼저(또는 동시에) Okta를 로그 소스로 온보딩해야 합니다. Okta 디바이스 또는 사용자 프로필 통합을 *하지 않고* Panther에서 Okta를 로그 소스로 온보딩하는 것은 불가능합니다.
{% endhint %}

### Okta 디바이스 프로필의 전제 조건

* Okta 디바이스 프로필을 Panther로 가져오려면 다음이 필요합니다 [Okta Devices](https://www.okta.com/platform/devices/) 가 활성화되어 있어야 합니다.

### Okta 소스 설정 중 Panther에서 Okta 프로필 구성

* 다음을 따르세요 [Panther에서 새 Okta 소스를 만드는 방법에 대한 이 지침](/ko/data-onboarding/supported-logs/okta.md#how-to-onboard-okta-logs-to-panther), 특히 다음 항목에 주의하세요 **사용자 프로필 활성화** 및 **디바이스 프로필 활성화** 필드.

### Okta 소스 설정 후 Panther에서 Okta 프로필 구성

Panther에 이미 Okta 로그 소스를 만든 후에는 다음을 통해 Okta 프로필을 설정할 수 있습니다 [에서 **Enrichment Providers** 탭](#configure-okta-profiles-after-okta-log-source-setup-from-the-enrichment-providers-screen) 인지 [콘솔의 **Log Sources** 탭](#configure-okta-profiles-after-okta-log-source-setup-from-the-log-sources-screen) 에서.

{% tabs %}
{% tab title="콘솔: Enrichment Providers" %}
**Enrichment Providers 화면에서 Okta 로그 소스 설정 후 Okta 프로필 구성**

1. Panther Console의 왼쪽 탐색 모음에서 **구성** > E**nrichment Providers**.
2. 오른쪽 상단에서 다음을 클릭합니다 **새로 만들기**.
3. 을 클릭합니다. **Okta**.
4. 이미 Panther에 생성된 Okta 로그 소스 목록이 표시된 팝업 모달에서 프로필 데이터를 가져올 항목을 클릭합니다.\
   ![An Available Okta Sources modal lists an Okta source called "test," which is circled. Below, there is a Done button.](/files/632700d37c526d03219196a66a69c0e622e913e3)
   * 아직 Okta 로그 소스를 설정하지 않았다면 대신 다음을 따르세요 [Okta 로그를 Panther에 온보딩하는 방법](/ko/data-onboarding/supported-logs/okta.md#how-to-onboard-okta-logs-to-panther) 지침.
5. 에서 **Enrichment** 페이지에서 다음의 오른쪽에 있는 토글을 클릭합니다 **User Profiles** 및/또는 **Device Profiles** `ON`.
   * 켜 둔 각 토글에 대해 `ON`다음 값을 설정합니다 **새로 고침 주기(분)**. 이는 Panther가 Okta에 저장된 내용으로 프로필 데이터를 업데이트하는 주기를 의미합니다.

     <div align="left"><figure><img src="/files/abbbf6e83c52bfa743dd376facc50ccff2756799" alt="In the Enrichment settings box, there are toggles for User Profiles and Device Profiles. Next to each is a Refresh period (min) field." width="375"><figcaption></figcaption></figure></div>
6. 오른쪽 상단에서 다음을 클릭합니다 **저장**.
   {% endtab %}

{% tab title="콘솔: Log Sources" %}
**Log Sources 화면에서 Okta 로그 소스 설정 후 Okta 프로필 구성**

1. Panther Console의 왼쪽 탐색 모음에서 **구성** > **Log Sources**.
2. 프로필을 설정할 Okta 로그 소스를 찾아 이름을 클릭합니다.
3. 로그 소스 페이지의 오른쪽 상단에서 다음을 클릭합니다 **Configuration,** 그다음 **Edit.**\
   ![The Okta Sand Box log source page has Overview, Schemas, Health, and Filters tabs. On the right side, there is a Configuration button, with an arrow pointing from it to an Edit button.](/files/8eb83499703290149c1fdcbc11b96c076dc1963b)
4. 오른쪽 상단에서 다음을 클릭합니다 **Enrichment**.
5. 에서 **Enrichment** 페이지에서 다음의 오른쪽에 있는 토글을 클릭합니다 **User Profiles** 및/또는 **Device Profiles** `ON`.
   * 켜 둔 각 토글에 대해 `ON`다음 값을 설정합니다 **새로 고침 주기(분)**. 이는 Panther가 Okta에 저장된 내용으로 프로필 데이터를 업데이트하는 주기를 의미합니다.

     <div align="left"><figure><img src="/files/abbbf6e83c52bfa743dd376facc50ccff2756799" alt="In the Enrichment settings box, there are toggles for User Profiles and Device Profiles. Next to each is a Refresh period (min) field." width="375"><figcaption></figcaption></figure></div>
6. 오른쪽 상단에서 다음을 클릭합니다 **저장**.
   {% endtab %}
   {% endtabs %}

## 지원되는 프로필 유형

Panther는 다음을 가져오는 것을 지원합니다 [사용자 프로필](#okta.users) 및 [디바이스 프로필](#okta.devices) Okta에서. 아래는 각 프로필 유형의 데이터가 구성되는 방식에 대한 스키마입니다.

### Okta.Users

```yaml
스키마: Okta.Users
설명: Panther가 관리하는 Okta 사용자 프로필
referenceURL: https://developer.okta.com/docs/reference/api/users/#list-users
필드:
    - 이름: match
      설명: 조회 테이블과 일치시킬 키
      유형: 배열
      요소:
        유형: 문자열
    - 이름: id
      설명: 이 사용자의 Okta 내부 id
      유형: 문자열
      지표:
        - actor_id
    - 이름: created
      설명: 사용자 레코드 생성 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: activated
      설명: 사용자 레코드 활성화 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: statusChanged
      설명: 사용자 상태가 변경된 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: lastLogin
      설명: 마지막 인증 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: lastUpdated
      설명: 마지막 레코드 업데이트 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: passwordChanged
      설명: 마지막 비밀번호 변경 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: status
      설명: 사용자의 상태
      유형: 문자열
    - 이름: profile
      설명: Okta 사용자 프로필
      유형: JSON
```

### Okta.Devices

```yaml
스키마: Okta.Devices
설명: Panther가 관리하는 Okta 디바이스 프로필
referenceURL: https://developer.okta.com/docs/reference/api/devices/#list-devices
필드:
    - 이름: match
      설명: 조회 테이블과 일치시킬 키
      유형: 배열
      요소:
        유형: 문자열
    - 이름: id
      설명: 이 디바이스의 Okta 내부 id
      유형: 문자열
    - 이름: created
      설명: 디바이스 레코드 생성 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: lastUpdated
      설명: 마지막 레코드 업데이트 시간
      유형: 타임스탬프
      시간 형식:
        - rfc3339
    - 이름: status
      설명: 디바이스의 상태
      유형: 문자열
    - 이름: resourceType
      설명: 디바이스 유형
      유형: 문자열
    - 이름: resourceDisplayName
      설명: 디바이스 이름
      유형: 객체
      필드:
        - 이름: value
          설명: 디바이스 이름
          유형: 문자열
        - 이름: sensitive
          설명: 민감하면 참
          유형: 불리언
    - 이름: resourceId
      설명: 디바이스의 외부 id
      유형: 문자열
    - 이름: resourceAlternateId
      설명: 디바이스의 대체 외부 id
      유형: 문자열
    - 이름: profile
      설명: Okta 디바이스 프로필
      유형: JSON
    - 이름: users
      설명: 이 디바이스에 연결된 사용자
      유형: 배열
      요소:
        유형: 객체
        필드:
            - 이름: id
              설명: 이 사용자의 Okta 내부 id
              유형: 문자열
              지표:
                - actor_id
            - 이름: emails
              설명: 이 사용자와 연결된 이메일
              유형: 배열
              요소:
                유형: 문자열
                지표:
                    - email
```

## 예시: 디텍션에서 Okta 프로필 데이터 사용

Okta 사용자 또는 디바이스 프로필을 설정하고 데이터가 수집되면, 해당 데이터를 디텍션 로직에서 참조하기 시작할 수 있습니다.

다음 Okta 사용자 프로필이 있다고 가정합니다:

```json
{
    "activated": "2023-02-22 20:14:57",
    "created": "2023-02-22 20:14:57",
    "id": "00u7364cqlAxlJrgX1d7",
    "lastlogin": "2023-02-22 20:28:05",
    "lastupdated": "2023-02-22 20:27:57",
    "match": [
        "00u7364cqlAxlJrgX1d7",
	"henry.ford@panther.com"
    ],
    "p_any_actor_ids": [
	"00u7364cqlAxlJrgX1d7"
    ],
    "p_any_emails": [
	"henry.ford@panther.com"
    ],
    "p_event_time": "2023-06-01 20:48:36.12",
    "p_log_type": "Okta.Users",
    "p_parse_time": "2023-06-01 20:48:36.12",
    "p_row_id": "623cde25b9568494cebbdfc118a310",
    "p_schema_version": 0,
    "passwordchanged": "2023-02-22 20:27:57",
    "profile": {
	"email": "henry.ford@panther.com",
	"firstName": "Henry",
	"lastName": "Ford",
	"login": "henry.ford@panther.com",
	"manager": "Joe Jacobs",
	"mobilePhone": null,
	"secondEmail": null
	},
    "status": "ACTIVE",
    "statuschanged": "2023-02-22 20:27:57"
}
```

그리고 다음 유입 이벤트가 있습니다:

```json
{
    "actorEmail": "henry.ford@panther.com",
    "action": "deleted_file"
}
```

디텍션을 거치기 전에 이벤트는 Okta 프로필 데이터로 보강되어 다음과 같이 됩니다:

```json
{
    "actorEmail": "henry.ford@panther.com",
    "action": "deleted_file",
    "p_enrichment": {
    	"okta_users": {
    	    "actorEmail": {
    		"p_match": "henry.ford@panther.com",
                "activated": "2023-02-22 20:14:57",
	        "created": "2023-02-22 20:14:57",
		"id": "00u7364cqlAxlJrgX1d7",
		"lastlogin": "2023-02-22 20:28:05",
		"lastupdated": "2023-02-22 20:27:57",
		"match": [
		    "00u7364cqlAxlJrgX1d7",
		    "henry.ford@panther.com"
		],
		"p_any_actor_ids": [
		    "00u7364cqlAxlJrgX1d7"
		],
		"p_any_emails": [
		    "henry.ford@panther.com"
		],
		"passwordchanged": "2023-02-22 20:27:57",
		"profile": {
		    "email": "henry.ford@panther.com",
		    "firstName": "Henry",
		    "lastName": "Ford",
		    "login": "henry.ford@panther.com",
		    "manager": "Joe Jacobs",
		    "mobilePhone": null,
		    "secondEmail": null
		},
	        "status": "ACTIVE",
		"statuschanged": "2023-02-22 20:27:57"
    	    }
    	}
    }
}
```

그다음 Okta 프로필 데이터를 참조하는 디텍션을 다음과 같이 작성할 수 있습니다:

{% tabs %}
{% tab title="Python" %}

```python
def 룰(event):
  userManager = deep_get(event, 'p_enrichment', 'okta_users', 'actorEmail', 'profile', 'manager')
  
  return userManager == 'Joe Jacobs'
```

{% endtab %}

{% tab title="YAML" %}

```yaml
디텍션:
  - Enrichment:
      Table: okta_users
      Selector: actorEmail
      FieldPath: profile.manager
    Condition: Equals
    Value: Joe Jacobs
```

{% endtab %}
{% endtabs %}


---

# 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/enrichment/okta.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.
