Salesforce 로그 수집
이 문서에서는 서드 파티 API를 사용하여 Google Security Operations 피드를 설정하여 Salesforce 로그를 수집하는 방법을 설명합니다.
Salesforce는 영업, 서비스, 마케팅, 분석을 위한 도구를 제공하는 클라우드 기반 고객 관계 관리 (CRM) 플랫폼입니다. Salesforce 로그는 플랫폼 전반의 사용자 활동, 보안 이벤트, 시스템 변경사항, API 사용량을 캡처합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Salesforce Enterprise Edition 이상 (API 액세스 사용 설정)
- Salesforce 시스템 관리자 권한
- OpenSSL 설치 (인증서 생성용)
RSA 키 쌍 및 인증서 생성
JWT 서명을 위한 RSA 비공개 키와 자체 서명 X.509 인증서를 생성합니다.
비공개 키 생성
```bash
openssl genrsa -out salesforce_private.key 2048
```
자체 서명 인증서 생성
```bash
openssl req -new -x509 -key salesforce_private.key -out salesforce_certificate.crt -days 365
```
메시지가 표시되면 인증서 세부정보를 입력합니다.
- 국가 이름: 2자리 국가 코드를 입력합니다 (예:
US). - 주/도 이름: 주를 입력합니다 (예:
California). - Locality Name: 도시를 입력합니다 (예:
San Francisco). - 조직 이름: 조직 이름을 입력합니다 (예:
Acme Corp). - 조직 단위 이름: 부서를 입력합니다 (예:
IT Security). - 일반 이름: 설명이 포함된 이름을 입력합니다 (예:
Chronicle Integration). - 이메일 주소: 연락처 이메일을 입력합니다.
Salesforce 외부 클라이언트 앱 만들기
외부 클라이언트 앱은 Salesforce (2026년 봄 이후)에서 OAuth 인증에 권장되는 방법입니다.
- Salesforce에 로그인합니다.
- 설정 (오른쪽 상단의 톱니바퀴 아이콘)으로 이동합니다.
- 빠른 찾기 상자에
External Client Apps를 입력합니다. - External Client App Manager(외부 클라이언트 앱 관리자)를 클릭합니다.
- 새 외부 클라이언트 앱을 클릭합니다.
기본 정보 구성
- 다음 구성 세부정보를 제공합니다.
- External Client App Name(외부 클라이언트 앱 이름): 설명이 포함된 이름(예:
Google SecOps Integration)을 입력합니다. - API 이름: 앱 이름을 기반으로 자동 입력됩니다. 기본값을 유지하거나 맞춤설정합니다.
- 연락처 이메일: 이메일 주소를 입력합니다.
- 배포 상태: 로컬을 선택합니다.
- External Client App Name(외부 클라이언트 앱 이름): 설명이 포함된 이름(예:
- 계속을 클릭합니다.
OAuth 설정 사용 설정
- OAuth 사용 설정 체크박스를 선택합니다.
- 다음 구성 세부정보를 제공합니다.
- 콜백 URL:
https://login.salesforce.com/services/oauth2/callback을 입력합니다.
- 콜백 URL:
- OAuth 범위 섹션에서 다음 범위를 사용 가능한 OAuth 범위에서 선택한 OAuth 범위로 이동합니다.
- API를 통해 사용자 데이터 관리 (api)
- 사용자를 대신하여 언제든지 요청 수행(refresh_token, offline_access)
JWT Bearer 흐름 사용 설정 및 인증서 업로드
- 흐름 사용 설정 섹션에서 JWT Bearer 흐름 사용 설정 체크박스를 선택합니다.
- 인증서 업로드 섹션이 표시됩니다.
- 파일 업로드를 클릭하거나 인증서 파일을 드래그 앤 드롭합니다.
- 이전에 생성된
salesforce_certificate.crt파일을 선택합니다. - 업로드가 완료될 때까지 기다립니다. 인증서 파일 이름이 업로드 버튼 아래에 표시됩니다.
OAuth 정책 구성
- OAuth 정책 섹션에서 다음을 수행합니다.
- 허용된 사용자: 관리자가 승인한 사용자는 사전 승인 처리됨을 선택합니다.
- 저장을 클릭합니다.
고객 키 가져오기
외부 클라이언트 앱을 만든 후 Chronicle 구성을 위한 고객 키를 가져옵니다.
- 외부 클라이언트 앱 관리자에서 앱 이름 (예:
Google SecOps Integration)을 클릭합니다. - 설정 탭으로 이동합니다.
- OAuth 설정 섹션에서 고객 키 및 보안 비밀을 클릭합니다.
- Consumer Key(고객 키) 값을 복사하여 저장합니다.
소비자 키 형식의 예:
```
3MVG9IKcPoNiNVBIPjdw4z.pcfRjTFBp7xC8x9k4U8jZ0HlLQdPqX5bKjR8yNzQ9_YvY.8xD3F2W6nXb5YgNx
```
외부 클라이언트 앱 사전 승인
Salesforce에는 JWT Bearer 흐름에 대한 사전 승인이 필요합니다. 권한 집합을 통해 사용자에게 외부 클라이언트 앱을 할당하여 사전 승인합니다.
권한 세트 만들기
- 설정 > 사용자 > 권한 집합으로 이동합니다.
- New(새로 만들기)를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 라벨:
Chronicle Integration Users를 입력합니다 (예). - API 이름: 라벨을 기반으로 자동 입력됩니다.
- 라벨:
- 저장을 클릭합니다.
외부 클라이언트 앱에 권한 집합 할당
- 설정 > 외부 클라이언트 앱 관리자로 이동합니다.
- 외부 클라이언트 앱 (예:
Google SecOps Integration)을 클릭합니다. - 정책 탭을 클릭합니다.
- 앱 정책 섹션의 권한 세트 선택에서 다음을 수행합니다.
- 권한 세트 (예:
Chronicle Integration Users)를 사용 가능한 권한 세트에서 선택한 권한 세트로 이동합니다.
- 권한 세트 (예:
- 저장을 클릭합니다.
사용자에게 권한 집합 할당
- 권한 집합 세부정보 페이지에서 할당 관리를 클릭합니다.
- 할당 추가를 클릭합니다.
- Chronicle 통합에 사용할 사용자 계정 (예:
integration@acme.com) 옆에 있는 체크박스를 선택합니다. - 할당을 클릭합니다.
- 완료를 클릭합니다.
Salesforce 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Salesforce EventLogFile). - 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 SALESFORCE를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 파라미터의 값을 지정합니다.
- API 호스트 이름: Salesforce 인스턴스 호스트 이름 (예:
acme.my.salesforce.com)을 입력합니다.
- API 호스트 이름: Salesforce 인스턴스 호스트 이름 (예:
* **OAuth JWT Endpoint**: Enter the OAuth token endpoint URL:
- Production orgs: `https://login.salesforce.com/services/oauth2/token`
- Sandbox orgs: `https://test.salesforce.com/services/oauth2/token`
- My Domain: `https://acme.my.salesforce.com/services/oauth2/token`
* **JWT Claims Issuer**: Enter the Consumer Key from the External Client App.
* **JWT Claims Subject**: Enter the Salesforce username of the pre-authorized user (for example, `integration@acme.com`).
* **JWT Claims Audience**: Enter the authorization server URL:
- Production orgs: `https://login.salesforce.com`
- Sandbox orgs: `https://test.salesforce.com`
- My Domain: `https://acme.my.salesforce.com`
* **RSA Private Key**: Paste the complete private key contents including `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` markers.
비공개 키 콘텐츠를 가져오려면 다음을 실행하세요.
```bash
cat salesforce_private.key
```
머리글과 바닥글 줄을 포함한 전체 출력을 복사합니다.
* **Asset namespace**: The [asset namespace](/chronicle/docs/investigation/asset-namespaces).
* **Ingestion labels**: The label to be applied to the events from this feed.
- 다음을 클릭합니다.
- 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
Salesforce 인스턴스 유형 참조
OAuth JWT 엔드포인트 및 대상 값은 Salesforce 인스턴스 유형에 따라 다릅니다.
| Instance Type | OAuth JWT Endpoint | JWT Claims Audience | API Hostname Format |
| ------------------- | ------------------------------------------------------- | -------------------------------- | -------------------------------------- |
| **Production** | `https://login.salesforce.com/services/oauth2/token` | `https://login.salesforce.com` | `company.my.salesforce.com` |
| **Sandbox** | `https://test.salesforce.com/services/oauth2/token` | `https://test.salesforce.com` | `company--sandbox.sandbox.my.salesforce.com` |
| **My Domain** | `https://domain.my.salesforce.com/services/oauth2/token`| `https://domain.my.salesforce.com` | `domain.my.salesforce.com` |
Note: "My Domain" is recommended for production deployments. "My Domain" provides a custom, branded login URL and is required for certain Salesforce features.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
Account.Name |
target.resource.name |
원시 로그의 Account.Name 값입니다. |
AccountId |
target.resource.id |
원시 로그의 AccountId 값입니다. |
Action |
security_result.description |
원시 로그의 Action 값입니다. |
AdditionalInfo |
- | IDM 객체에 매핑되지 않았습니다. |
ApiType |
target.application |
원시 로그의 ApiType 값입니다. |
ApiVersion |
- | IDM 객체에 매핑되지 않았습니다. |
Application |
principal.application |
원시 로그의 Application 값 또는 LoginAsEvent의 경우 '브라우저', LoginEvent의 경우 '통합 JWT 토큰', objecttype이 LoginHistory인 LoginHistory의 경우 'SfdcSiqActivityPlatform', ApiEvent의 경우 'N/A', LoginAsEventStream의 경우 '브라우저'입니다. |
attributes.url |
target.url |
원시 로그의 attributes.url 값 또는 원시 로그의 다양한 이벤트 유형에 대한 특정 URL입니다. |
attributes.type |
metadata.product_event_type |
원시 로그의 attributes.type 값입니다. |
AuthSessionId |
network.session_id |
원시 로그의 AuthSessionId 값입니다. |
Browser |
principal.resource.name |
원시 로그의 Browser 값입니다. Browser이 원시 로그에서 제공되지 않고 Application이 '인사이트'인 경우 '알 수 없음'입니다. ApiType이 'SOAP 파트너'인 LoginHistory의 경우 'Java (Salesforce.com)'입니다. Application이 'SfdcSiqActivityPlatform'인 LoginHistory의 경우 '알 수 없음'입니다. LoginAsEventStream의 경우 data.properties.Browser.str에서 가져옵니다. |
Case.Subject |
target.resource.name |
원시 로그의 Case.Subject 값입니다. |
CaseId |
target.resource.id |
원시 로그의 CaseId 값입니다. |
cat |
metadata.product_event_type |
원시 로그의 cat 값입니다. |
City |
principal.location.city |
원시 로그 또는 LoginHistory의 경우 LoginGeo.City에서 가져온 City 값입니다. |
Client |
principal.labels |
원시 로그의 Client 값으로, 라벨로 형식이 지정됩니다. |
CLIENT_IP |
principal.ip, principal.asset.ip |
원시 로그의 CLIENT_IP 값입니다. |
ClientVersion |
- | IDM 객체에 매핑되지 않았습니다. |
CipherSuite |
network.tls.cipher |
원시 로그의 CipherSuite 값입니다. |
ColumnHeaders |
principal.labels |
원시 로그의 ColumnHeaders 값으로, 라벨로 형식이 지정됩니다. |
ConnectedAppId |
principal.labels |
원시 로그의 ConnectedAppId 값으로, 라벨로 형식이 지정됩니다. |
Contact.Name |
target.resource.name |
원시 로그의 Contact.Name 값입니다. |
ContactId |
target.resource.id |
원시 로그의 ContactId 값입니다. |
Country |
principal.location.country_or_region |
원시 로그의 Country 값 또는 LoginHistory의 LoginGeo.Country 값입니다. |
CreatedByContext |
principal.user.userid |
원시 로그의 CreatedByContext 값입니다. |
CreatedById |
principal.resource.attribute.labels |
원시 로그의 CreatedById 값으로, 라벨로 형식이 지정됩니다. |
CreatedDate |
metadata.collected_timestamp |
원시 로그의 CreatedDate 값입니다. 없는 경우 현재 타임스탬프입니다. |
CPU_TIME |
target.resource.attribute.labels |
원시 로그의 CPU_TIME 값으로, 라벨로 형식이 지정됩니다. |
data |
- | 개별적으로 추출되고 매핑된 다양한 필드를 포함합니다. |
DATASET_IDS |
target.resource.name |
원시 로그의 DATASET_IDS 값입니다. |
DelegatedOrganizationId |
target.administrative_domain |
원시 로그의 DelegatedOrganizationId 값입니다. |
DelegatedUsername |
observer.user.userid |
원시 로그의 DelegatedUsername 값입니다. |
Description |
metadata.description |
원시 로그의 Description 값입니다. |
DevicePlatform |
principal.resource.type |
리소스 유형을 추출하기 위해 파싱된 원시 로그의 DevicePlatform 값입니다. |
Display |
metadata.description |
원시 로그의 Display 값입니다. |
DOWNLOAD_FORMAT |
target.resource.attribute.labels |
원시 로그의 DOWNLOAD_FORMAT 값으로, 라벨로 형식이 지정됩니다. |
Duration |
target.resource.attribute.labels |
원시 로그의 Duration 값으로, 라벨로 형식이 지정됩니다. |
ENTITY_NAME |
target.resource.attribute.labels |
원시 로그의 ENTITY_NAME 값으로, 라벨로 형식이 지정됩니다. |
ErrorCode |
security_result.action |
원시 로그의 ErrorCode 값이 ALLOW 또는 BLOCK으로 변환됩니다. |
EventDate |
timestamp |
원시 로그의 EventDate 값입니다. data.properties.TIMESTAMP_DERIVED.str(사용 가능한 경우), data.properties.TIMESTAMP_DERIVED_FIRST.str(사용 가능한 경우), @timestamp(사용 가능한 경우), created_date(사용 가능한 경우), timestamp(사용 가능한 경우) 또는 LoginHistory의 LoginTime일 수 있습니다. |
EventIdentifier |
metadata.product_log_id |
원시 로그의 EventIdentifier 값입니다. |
EventType |
metadata.product_event_type |
원시 로그의 EventType 값입니다. |
Id |
principal.user.userid |
원시 로그의 Id 값 또는 SetupAuditTrail 및 기타 이벤트의 metadata.product_log_id 값입니다. |
IdentityUsed |
principal.user.email_addresses |
원시 로그의 IdentityUsed 값입니다. |
Lead.Name |
target.resource.name |
원시 로그의 Lead.Name 값입니다. |
LeadId |
target.resource.id |
원시 로그의 LeadId 값입니다. |
LoginAsCategory |
- | IDM 객체에 매핑되지 않았습니다. |
LoginGeo.Country |
principal.location.country_or_region |
원시 로그의 LoginGeo.Country 값입니다. |
LoginHistoryId |
- | IDM 객체에 매핑되지 않았습니다. |
LoginKey |
principal.user.userid, network.session_id |
원시 로그의 LoginKey 값 또는 SetupAuditTrail의 CreatedByContext 값입니다. |
LoginTime |
timestamp |
원시 로그의 LoginTime 값입니다. |
LoginType |
security_result.description |
원시 로그의 LoginType 값 또는 ApiType이 'SOAP Partner'인 LoginHistory의 경우 'Other Apex API', Application이 'SfdcSiqActivityPlatform'인 LoginHistory의 경우 'Remote Access 2.0'입니다. |
LoginUrl |
target.url, principal.url |
원시 로그의 LoginUrl 값입니다. |
LogFile |
principal.resource.attribute.labels |
원시 로그의 LogFile 값으로, 라벨로 형식이 지정됩니다. |
LogFileContentType |
principal.resource.attribute.labels |
원시 로그의 LogFileContentType 값으로, 라벨로 형식이 지정됩니다. |
LogFileLength |
principal.resource.attribute.labels |
원시 로그의 LogFileLength 값으로, 라벨로 형식이 지정됩니다. |
Message |
- | IDM 객체에 매핑되지 않았습니다. |
METHOD |
network.http.method |
원시 로그의 METHOD 값입니다. |
Name |
target.application |
원시 로그의 Name 값입니다. |
NewValue |
- | OldValue와 함께 사용하여 security_result.summary을 생성합니다. |
NUMBER_FIELDS |
target.resource.attribute.labels |
원시 로그의 NUMBER_FIELDS 값으로, 라벨로 형식이 지정됩니다. |
OldValue |
- | NewValue와 함께 사용하여 security_result.summary을 생성합니다. |
Operation |
security_result.description, target.resource.attribute.labels |
원시 로그의 Operation 값 또는 SetupAuditTrail의 Display 값입니다. |
OperationStatus |
security_result.action |
원시 로그의 OperationStatus 값이 ALLOW 또는 BLOCK으로 변환됩니다. |
ORGANIZATION_ID |
target.administrative_domain |
원시 로그의 ORGANIZATION_ID 값입니다. |
OsName |
principal.platform |
원시 로그의 OsName 값입니다. |
OsVersion |
principal.platform_version |
원시 로그의 OsVersion 값입니다. |
Platform |
principal.platform |
원시 로그 또는 LightningUriEventStream의 경우 data.properties.OsName.str, LoginEventStream의 경우 data.properties.OsName.str에서 가져온 Platform 값입니다. |
QueriedEntities |
target.resource.name, principal.labels |
원시 로그의 QueriedEntities 값 또는 UriEvent 및 ApiEvent의 component_name 값입니다. |
Query |
target.process.command_line, principal.labels |
원시 로그의 Query 값입니다. |
RecordId |
target.resource.id |
원시 로그의 RecordId 값입니다. |
Records |
principal.labels |
원시 로그의 Records 값으로, 라벨로 형식이 지정됩니다. |
REQUEST_ID |
metadata.product_log_id, target.resource.product_object_id |
원시 로그의 REQUEST_ID 값입니다. |
REQUEST_SIZE |
network.sent_bytes |
원시 로그의 REQUEST_SIZE 값입니다. |
REQUEST_STATUS |
security_result.summary |
원시 로그의 REQUEST_STATUS 값입니다. |
RESPONSE_SIZE |
network.received_bytes |
원시 로그의 RESPONSE_SIZE 값입니다. |
RowsProcessed |
target.resource.attribute.labels |
원시 로그의 RowsProcessed 값으로, 라벨로 형식이 지정됩니다. |
RUN_TIME |
target.resource.attribute.labels |
원시 로그의 RUN_TIME 값으로, 라벨로 형식이 지정됩니다. |
SamlEntityUrl |
- | IDM 객체에 매핑되지 않았습니다. |
SdkAppType |
- | IDM 객체에 매핑되지 않았습니다. |
SdkAppVersion |
- | IDM 객체에 매핑되지 않았습니다. |
SdkVersion |
- | IDM 객체에 매핑되지 않았습니다. |
Section |
security_result.summary |
원시 로그의 Section 값입니다. |
SessionKey |
network.session_id |
원시 로그의 SessionKey 값입니다. |
SessionLevel |
target.resource.attribute.labels |
원시 로그의 SessionLevel 값으로, 라벨로 형식이 지정됩니다. |
SourceIp |
principal.ip, principal.asset.ip |
원시 로그의 SourceIp 값입니다. |
src |
principal.ip, principal.asset.ip |
원시 로그의 src 값입니다. |
SsoType |
target.resource.attribute.labels |
원시 로그의 SsoType 값으로, 라벨로 형식이 지정됩니다. |
STATUS_CODE |
network.http.response_code |
원시 로그의 STATUS_CODE 값입니다. |
Status |
security_result.action, security_result.action_details |
원시 로그의 Status 값으로, ALLOW 또는 BLOCK으로 변환되거나 LoginEventStream의 작업 세부정보로 사용됩니다. |
Subject |
target.resource.name |
원시 로그의 Subject 값입니다. |
TargetUrl |
- | IDM 객체에 매핑되지 않았습니다. |
TIMESTAMP |
metadata.collected_timestamp |
원시 로그의 TIMESTAMP 값입니다. |
TIMESTAMP_DERIVED |
timestamp |
원시 로그의 TIMESTAMP_DERIVED 값입니다. |
TlsProtocol |
network.tls.version_protocol |
원시 로그의 TlsProtocol 값입니다. |
URI |
target.url |
원시 로그의 URI 값입니다. |
USER_AGENT |
network.http.user_agent |
원시 로그의 USER_AGENT 값입니다. |
USER_ID |
principal.user.userid |
원시 로그의 USER_ID 값입니다. |
USER_ID_DERIVED |
principal.user.product_object_id, target.resource.attribute.labels |
원시 로그의 USER_ID_DERIVED 값입니다. |
UserId |
principal.user.userid |
원시 로그의 UserId 값입니다. |
USER_TYPE |
target.resource.attribute.labels |
원시 로그의 USER_TYPE 값으로, 라벨로 형식이 지정됩니다. |
Username |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
원시 로그의 Username 값 또는 다양한 이벤트의 src_email 값 또는 IdentityProviderEventStore의 IdentityUsed 값 또는 검색 및 SearchAlert의 data.properties.Email.str 값 또는 LoginAsEventStream 및 LoginEventStream의 data.properties.Username.str 값입니다. |
UserType |
target.resource.attribute.labels |
원시 로그의 UserType 값으로, 라벨로 형식이 지정됩니다. |
usrName |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
원시 로그의 usrName 값입니다. |
VerificationMethod |
target.resource.attribute.labels |
원시 로그의 VerificationMethod 값으로, 라벨로 형식이 지정됩니다. |
| 파서 로직 | metadata.event_type |
event_id 및 operation 필드를 기반으로 파생되거나, LoginEventStream의 경우 'USER_LOGIN', Logout 및 LogoutEvent의 경우 'USER_LOGOUT', 다양한 이벤트의 경우 'USER_RESOURCE_UPDATE_CONTENT', PlatformEncryption의 경우 'USER_RESOURCE_UPDATE_PERMISSIONS', QueuedExecution, ApexExecution, LightningInteraction, LightningPerformance, LightningPageView, URI, RestApi, API, AuraRequest, ApexCallout, OneCommerceUsage, Sites, MetadataApiOperation, OneCommerceUsage, VisualforceRequest, Dashboard, Search, ListViewEvent의 경우 'RESOURCE_READ', Operation이 'Create' 또는 'INSERT'인 UriEvent 및 TimeBasedWorkflow의 경우 'RESOURCE_CREATION', Operation이 'Update'인 UriEvent 및 LightningUriEvent의 경우 'RESOURCE_WRITTEN', Operation이 'Delete' 또는 'ROLLBACK'인 UriEvent의 경우 'RESOURCE_DELETION', SetupAuditTrail 및 AuditTrail의 경우 'USER_UNCATEGORIZED', operation이 'namedCredentialEncryptedFieldChange'인 SetupAuditTrail의 경우 'USER_CHANGE_PASSWORD', ApiEventStream 및 LightningUriEventStream의 경우 'GENERIC_EVENT' 또는 네트워크 및 주 구성원 존재 여부를 기반으로 합니다. |
| 파서 로직 | metadata.ingestion_labels |
이벤트의 소스를 나타내는 라벨입니다('이벤트 로그 파일', '실시간 이벤트 모니터링', 'SetupAuditTrail' 중 하나). |
| 파서 로직 | metadata.log_type |
항상 'SALESFORCE'로 설정됩니다. |
| 파서 로직 | metadata.product_name |
항상 'SALESFORCE'로 설정됩니다. |
| 파서 로직 | metadata.vendor_name |
항상 'SALESFORCE'로 설정됩니다. |
| 파서 로직 | metadata.url_back_to_product |
LoginUrl, attributes.url, data.properties.PageUrl.str, data.properties.LoginUrl.str과 같은 다양한 필드에서 구성됩니다. |
| 파서 로직 | network.application_protocol |
uri 필드가 'http'로 시작하는 경우 'HTTPS'로 설정됩니다. |
| 파서 로직 | network.http.referral_url |
'Referer='가 포함된 경우 user_agent 필드에서 추출됩니다. |
| 파서 로직 | network.http.response_code |
다양한 이벤트에 대해 request_status에서 파생됩니다. |
| 파서 로직 | network.http.user_agent |
원시 로그의 user_agent 값 또는 ApiEventStream 및 LoginEventStream의 data.properties.UserAgent.str 값 또는 Sites 이벤트의 값 또는 Sites 이벤트의 'User-Agent'입니다. |
| 파서 로직 | network.session_id |
원시 로그의 session_key 또는 SESSION_KEY 값 또는 LoginKey 또는 AuthSessionId과 같은 다른 필드에서 구성된 값입니다. |
| 파서 로직 | network.tls.version |
원시 로그 또는 LoginEventStream의 경우 data.properties.TlsProtocol.str에서 가져온 tls_protocol 값입니다. |
| 파서 로직 | principal.application |
원시 로그의 application 값 또는 로그인: 성공 이벤트의 경우 'Salesforce for Outlook', 애플리케이션이 없는 로그인: 성공 이벤트의 경우 'Insights', Lightning 이벤트의 경우 device_platform에서 추출됩니다. |
| 파서 로직 | principal.asset.hostname |
client_ip이 호스트 이름인 경우의 값입니다. |
| 파서 로직 | principal.asset.ip |
IP 주소인 경우 client_ip 또는 src_ip 또는 SourceIp 또는 CLIENT_IP 값입니다. |
| 파서 로직 | principal.hostname |
client_ip이 호스트 이름인 경우의 값입니다. |
| 파서 로직 | principal.ip |
IP 주소인 경우 client_ip 또는 src_ip 또는 SourceIp 또는 CLIENT_IP 값입니다. |
| 파서 로직 | principal.labels |
FederationIdentifier, ApiType, OrgId, channel과 같은 다양한 필드에서 구성된 라벨입니다. |
| 파서 로직 | principal.location.city |
원시 로그의 geoip_src.city_name 또는 City 또는 LoginGeo.City 값입니다. |
| 파서 로직 | principal.location.country_or_region |
원시 로그의 geoip_src.country_name 또는 Country 또는 LoginGeo.Country 또는 client_geo 값입니다. |
| 파서 로직 | principal.location.region_latitude |
원시 로그의 data.properties.LoginLatitude.number 값입니다. |
| 파서 로직 | principal.location.region_longitude |
원시 로그의 data.properties.LoginLongitude.number 값입니다. |
| 파서 로직 | principal.location.state |
원시 로그의 geoip_src.region_name 값입니다. |
| 파서 로직 | principal.platform |
원시 로그의 Platform 또는 OsName 또는 os_name 값입니다. Platform에 'Windows'가 포함된 LoginEventStream의 경우 'WINDOWS'입니다. |
| 파서 로직 | principal.platform_version |
원시 로그의 OsVersion 또는 os_version 값 또는 Platform에 'Windows'가 포함된 LoginEventStream의 경우 Platform에서 추출한 값 |
| 파서 로직 | principal.resource.attribute.labels |
CreatedById, ApiVersion, LogFile, LogFileContentType, LogFileLength과 같은 다양한 필드에서 구성된 라벨입니다. |
| 파서 로직 | principal.resource.name |
원시 로그의 Browser 또는 browser_name 값 또는 ApiType이 'SOAP Partner'인 LoginHistory의 경우 'Java (Salesforce.com)' |
| 파서 로직 | principal.resource.type |
Lightning 이벤트의 경우 device_platform에서 추출되고, LoginAsEvent 및 LoginAsEventStream의 경우 '브라우저'입니다. |
| 파서 로직 | principal.url |
원시 로그의 LoginUrl 값입니다. |
| 파서 로직 | principal.user.email_addresses |
원시 로그의 usrName 또는 Username 또는 src_email 또는 IdentityUsed 또는 data.properties.Username.str 또는 data.properties.Email.str 값입니다. |
| 파서 로직 | principal.user.product_object_id |
원시 로그의 attrs.USER_ID_DERIVED 또는 data.properties.USER_ID_DERIVED.str 값입니다. |
| 파서 로직 | principal.user.userid |
원시 로그의 usrName 또는 Username 또는 user_id 또는 UserId 또는 USER_ID 또는 Id 또는 LoginKey 또는 CreatedByContext 또는 data.properties.Username.str 또는 data.properties.USER_ID.str 또는 data.properties.LoginKey.str 값입니다. |
| 파서 로직 | security_result.action |
원시 로그의 Status 또는 OperationStatus 또는 ErrorCode 또는 action 또는 operation_status에서 파생되어 허용 또는 차단으로 변환됩니다. |
| 파서 로직 | security_result.action_details |
LoginEventStream의 원시 로그에서 가져온 Status 값입니다. |
| 파서 로직 | security_result.description |
원시 로그의 LoginType 또는 logintype 또는 Operation 또는 Action 또는 Display 값입니다. |
| 파서 로직 | security_result.rule_name |
원시 로그의 Policy 또는 rule_name 값입니다. |
| 파서 로직 | security_result.summary |
원시 로그의 NewValue 및 OldValue 또는 REQUEST_STATUS 또는 Section 또는 forecastcategory에서 구성됩니다. |
| 파서 로직 | target.administrative_domain |
원시 로그의 ORGANIZATION_ID 또는 DelegatedOrganizationId 또는 organization_id 또는 data.properties.OrgName.str 값입니다. |
| 파서 로직 | target.application |
원시 로그의 Application 또는 app_name 또는 ApiType 또는 Name 또는 data.properties.Application.str 값입니다. |
| 파서 로직 | target.asset.hostname |
uri 필드에서 추출한 target_hostname 값입니다. |
| 파서 로직 | target.asset.ip |
원시 로그의 data.properties.CLIENT_IP.str 값입니다. |
| 파서 로직 | target.asset_id |
device_id 또는 REQUEST_ID에서 생성됩니다. |
| 파서 로직 | target.file.mime_type |
원시 로그의 file_type 값입니다. |
| 파서 로직 | target.file.size |
원시 로그의 size_bytes 값입니다. |
| 파서 로직 | target.hostname |
uri 필드에서 추출한 target_hostname 값입니다. |
| 파서 로직 | target.process.command_line |
원시 로그의 query_exec 또는 Query 또는 data.properties.Query.str 값입니다. |
| 파서 로직 | target.process.pid |
원시 로그의 job_id 값입니다. |
| 파서 로직 | target.resource.attribute.labels |
CPU_TIME, RUN_TIME, USER_TYPE, DB_TOTAL_TIME, MEDIA_TYPE, ROWS_PROCESSED, NUMBER_FIELDS, DB_BLOCKS, DB_CPU_TIME, ENTITY_NAME, EXCEPTION_MESSAGE, USER_ID_DERIVED, DOWNLOAD_FORMAT, USER_TYPE, CPU_TIME, RUN_TIME, WAVE_SESSION_ID, SessionLevel, verification_method, cpu_time, run_time, db_total_time, db_cpu_time, exec_time, callout_time, number_soql_queries, duration, user_type, entry_point, operation, session_level, rows_processed, sso_type, dashboard_type, Operation, SessionLevel와 같은 다양한 필드에서 구성된 라벨 |
| 파서 로직 | target.resource.id |
원시 로그의 REQUEST_ID 또는 RecordId 또는 caseid 또는 leadid 또는 contactid 또는 opportunityid 또는 accountid 값입니다. |
| 파서 로직 | target.resource.name |
원시 로그의 QueriedEntities 또는 resource_name 또는 component_name 또는 DATASET_IDS 또는 field 또는 StageName 또는 Subject 값입니다. |
| 파서 로직 | target.resource.product_object_id |
원시 로그의 REQUEST_ID 값입니다. |
| 파서 로직 | target.resource.resource_type |
ApexCallout 및 PlatformEncryption의 경우 'ACCESS_POLICY', ApexTrigger의 경우 'DATABASE', ContentTransfer의 경우 'FILE', ApiEvent의 경우 'TABLE'로 설정합니다. |
| 파서 로직 | target.resource.type |
QueuedExecution 및 ApexExecution의 경우 'BATCH', ContentTransfer의 경우 'FILE', ApexTrigger의 경우 'DATABASE_TRIGGER', 해당 ID 필드의 존재 여부에 따라 'Case', 'Lead', 'Contact', 'Opportunity', 'Account'로 설정됩니다. |
| 파서 로직 | target.url |
원시 로그의 LoginUrl 또는 URI 또는 attributes.url 또는 login_url 또는 uri 값입니다. |
| 파서 로직 | target.user.email_addresses |
원시 로그의 Username 또는 attrs.usrName 또는 email_address 값입니다. |
| 파서 로직 | target.user.user_display_name |
원시 로그의 target_user_display_name 또는 user_name 또는 username 값입니다. |
| 파서 로직 | target.user.userid |
원시 로그의 target_user_name 또는 data.properties.UserId.str 또는 data.properties.CreatedById.str 값입니다. |
| 파서 로직 | extensions.auth.auth_details |
Status이 'Success'가 아닌 경우 'ACTIVE'로 설정하고, 그렇지 않은 경우 'UNKNOWN_AUTHENTICATION_STATUS'로 설정합니다. |
| 파서 로직 | extensions.auth.mechanism |
logintype에 'Remote'가 포함된 로그인: 성공 및 로그인 이벤트의 경우 'REMOTE', LoginEventStream의 경우 'USERNAME_PASSWORD', login_url이 있는 이벤트의 경우 'MECHANISM_OTHER', 로그인: 성공 및 로그아웃 이벤트의 경우 'AUTHTYPE_UNSPECIFIED'로 설정됩니다. |
| 파서 로직 | extensions.auth.type |
LoginType이 'SAML Sfdc Initiated SSO'인 로그인, 로그아웃, LogoutEvent, LoginAs, IdentityProviderEventStore, LoginHistory, LoginAsEvent의 경우 'SSO'로 설정하고, LoginType이 'Application'인 로그인: 성공, 로그아웃, LoginAsEvent의 경우 'AUTHTYPE_UNSPECIFIED'로 설정합니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.