다음을 통해 공유


이벤트 추적

이 문서에서는 Microsoft Dynamics 365 Fraud Protection에서 이벤트 추적을 사용하는 방법을 설명합니다.

Microsoft Dynamics 365 Fraud Protection의 이벤트 추적 기능을 사용하면 포털 외부에서 확장 가능하고 작동하는 실시간 원격 분석 플랫폼을 설정할 수 있습니다. 각 이벤트는 사용자 수준 또는 시스템 수준 작업에 의해 예약되거나 트리거됩니다. 관심 있는 이벤트를 구독하고 이벤트 페이로드를 Azure Event Hubs 또는 Azure Blob Storage로 전달할 수 있습니다. 여러 이벤트 추적 세션에서 동시에 이벤트를 요청할 수도 있습니다. 그런 다음 시스템은 이벤트를 시간순으로 전달합니다.

이벤트를 집계하고 사용하여 서비스 비용과 사용량을 모니터링하고 관리하는 데 사용할 수 있는 메트릭을 정의할 수 있습니다. 이벤트를 사용하여 트랜잭션 데이터를 사용하는 사용자 지정 보고서를 개발하거나기본 사기 방지 포털에서 수행된 작업에 대한 시스템 로그를 확인할 수 있습니다(예: "날짜 C사용자 A 편집된 목록 B"). Microsoft Power Automate 및 Azure Logic Apps에서 사용할 수 있는 Azure Event Hubs 커넥터를 사용하는 경우 경고 또는 고도로 사용자 지정된 워크플로를 위해 Azure Event Hubs로 보내는 데이터를 사용할 수도 있습니다. 마찬가지로 Azure Blob Storage를 사용하면 추가 분석을 위해 모든 기록 데이터를 콜드 스토리지 계정에 복사하는 새 구독을 만들 수 있습니다.

Fraud Protection 인스턴스에 여러 환경이 있는 경우 환경 전환기를 사용하여 각 환경에 대한 이벤트 추적을 찾을 수 있습니다. 환경에 자식 환경이 있는 경우 부모 환경에 대해 구독되는 이벤트 추적에는 모든 자식 환경에 대해 동일한 이벤트가 자동으로 포함됩니다.

참고 항목

이벤트 추적 고객에게는 Event Hub 또는 Blob Storage와 같은 추가 Azure 서비스에 대한 구독이 있어야 합니다. 자세한 내용은 Microsoft 계정 임원에게 문의하세요. Azure 전역 관리자 자격 증명이 있는 경우 Azure Portal에 로그인하여 사용 가능한 구독을 확인합니다.

시작하기

이벤트 추적 기능 사용을 시작하려면 다음 단계를 수행합니다.

  1. Fraud Protection 포털에서 데이터를 선택한 다음, 이벤트 추적을 선택합니다.

  2. 새 구독을 선택합니다.

  3. 구독 표시 이름을 입력합니다.

  4. 스토리지 위치를 선택합니다.

    1. Event Hubs의 경우: Azure Key Vault에서 Event Hubs 인스턴스에 대한 연결 문자열 입력합니다. Azure Key Vault는 Fraud Protection 구독과 동일한 테넌트에 있어야 합니다. Azure Key Vault에 Fraud Protection 앱에 대한 비밀 액세스 권한을 부여합니다. 사기 방지 포털의 Azure Key Vault에서 비밀 식별자 URL 을 입력합니다. 자세한 내용은 Event Hubs 연결 문자열 가져오기를 참조하세요.
    2. Blob Storage의 경우: Azure Key Vault에서 Azure Blob Storage 계정에 대한 연결 문자열 입력합니다. Azure Key Vault는 Fraud Protection 구독과 동일한 테넌트에 있어야 합니다. Azure Key Vault에 Fraud Protection 앱에 대한 비밀 액세스 권한을 부여합니다. Fraud Protection 포털에서 Azure Key Vault의 비밀 식별자 URL과 이벤트 추적 데이터가 있는 컨테이너 이름을 입력합니다. 자세한 내용은 계정 액세스 키 보기를 참조 하세요.
  5. 연결 테스트를 클릭합니다. 연결이 성공적으로 테스트되면 Azure Key Vault의 연결 문자열 추출된 계정 관련 정보가 표시됩니다. Azure Event Hubs의 경우 이 읽기 전용 정보에는 Event Hub 네임스페이스 및 이벤트 허브 이름이 포함됩니다. Azure Blob Storage의 경우 Storage 계정 이름이 표시됩니다. 이 정보가 사용하려는 스토리지 계정과 일치하는지 확인합니다. 연결 테스트 가 성공하지 않으면 만들기 단추를 사용할 수 없습니다.

  6. 이벤트를 선택하고 JSON 페이로드의 설명 및 샘플을 검토합니다. 그런 다음 만들기를 선택하여 구독을 저장합니다. 이벤트는 해당 시점부터 Event Hubs 인스턴스로 즉시 전송됩니다. Blob Storage를 선택한 경우 모든 기록 데이터를 쓰는 복사 프로세스가 시작되고 모든 이벤트가 30분마다 컨테이너에 게시됩니다.

  7. Fraud Protection 포털로 돌아가서 이벤트/시간 메트릭의 수를 확인하고 데이터가 Event Hubs 및 Blob Storage로 전송되고 있는지 확인합니다. 이벤트/시간실패/시간 메트릭은 지난 24시간 동안의 평균을 표시합니다.

    Event Hubs에 대한 추가 모니터링을 보려면 Azure Portal로 이동하여 메트릭을 설정합니다. 자세한 내용은 Azure Monitor의 Azure Event Hubs 메트릭을 참조하세요.

  8. 선택 사항: Event Hubs에서 Power BI로 고유한 수신 파이프라인을 설정합니다. 사용자 지정 보고서 개발을 시작하는 방법에 대한 자세한 내용은 Power BI 작업을 참조하세요.

  9. 선택 사항: Power Automate에서 Event Hubs로 커넥트 사용자 지정 워크플로를 정의합니다. 자세한 내용은 Logic Apps 또는 Power Automate 작업을 참조 하세요.

이벤트 스키마

현재 이벤트 추적에서 지원되는 5가지 이벤트 분류(트랜잭션 이벤트, 추적 이벤트, 평가 이벤트, 감사 이벤트모니터링 이벤트)를 사용할 수 있습니다.

트랜잭션 이벤트

트랜잭션 이벤트를 사용하여 평가 및 평가되지 않은 API 호출에서 사용할 수 있는 데이터를 사용하여 사용자 지정 점수카드 및 자동화된 워크플로를 만듭니다. Blob Storage를 사용하여 기록 API 호출에서 데이터를 복사하여 비즈니스용 데이터 웨어하우스를 만들 수도 있습니다. 이 이벤트에 대한 페이로드에는 각 API 호출에 대한 전체 요청 및 응답이 포함됩니다.

네임스페이스: FraudProtection.Observe.<API 이름> 또는 FraudProtection.Assessment.<API 이름>
{
    "uniqueId": "unique event id and used to deduplicate events",
    "request": {
        //API request payload
    },
    "response": {
        //API response payload
    },
    "name": "FraudProtection.Observe.AccountLabel",
    "version": "1.0",
    "metadata": {
        "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
        "timestamp": "2020-09-25T03:46:53.3716978Z"
    }
}

추적 이벤트

추적 이벤트를 사용하여 Trace() 반환 형식을 포함하는 모든 규칙에 대한 성능을 보고하고 모니터링합니다. 이 이벤트에 대한 페이로드에는 이벤트를 트리거한 규칙의 이름, 해당 규칙의 평가 형식과 상관 관계가 있는 이벤트 유형, 상관 관계 ID 등과 같은 표준화된 필드가 포함됩니다. 그런 다음 Trace() 반환 형식의 키:값 쌍을 사용하여 사용자 지정 특성을 보내 샘플 페이로드, 위험 점수 및 사용자 지정 필드의 변수를 포함할 수 있습니다. 규칙에서 Trace()를 사용하여 이러한 이벤트를 트리거하는 방법에 대한 자세한 내용은 규칙 언어 가이드의 관찰 함수를 참조하세요.

네임스페이스: FraudProtection.Trace.Rule.
{
    "name": "FraudProtection.Trace.Rule",
    "version": "1.0",
    "metadata":
{
    "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
    "timestamp": "2020-06-10T23:43:33.4526859Z" 
}
    "ruleName": "Risk Score Policy",
    "eventType": "Purchase",
    "correlationId": "e49319e6-0bea-4567-9f3e-c9f873fc958a",
    "eventId": "e75e703c-1e54-4d41-af4b-a4c1b8866f02",
    "attributes":
{
      "example": "ManualReview” //key:value pairs defined in the Trace() return type
} 

    }

평가 이벤트

평가 및 관련 레이블 및 관찰 이벤트는 이벤트 허브 및 Blob으로 추적할 수 있습니다.

네임스페이스: FraudProtection.Assessments.
{
    "request": "",
    "response": "",
    "eventId": "uniqueId",
    "assessmentApiName": "<your assessment api name>",
    "assessmentName": "<your assessment name>"
}
네임스페이스: FraudProtection.CaseManagement.Events.

사례 관리 결정 상태 및 사례 관리에서 만든 레이블입니다.

{
	"name": "FraudProtection.CaseManagement.Events",
	"version": "1.0",
	"metadata": {
		"tenantId": "<your tenantID>",
		"timestamp": "2020-09-25T03:46:53.3716978Z"
	},
	"assessmentId": "<your assessment uniqueId>",
	"assessmentName": "<your assessment name>",
	"caseId": "uniqueId of the case record",
	"queueId": "uniqueId of the queue the case was routed to",
	"queueName": "name of the queue the case was routed to",
	"eventType": "<your assessment uniqueId>",
	"eventId": "<your assessment transaction uniqueId>",
	"creationDate": "creation datetime",
	"reviewStartDate": "review start datetime",
	"reviewedDate": "reviewed datetime",
	"decision": "decision of the review agent",
	"reason": "decision reason",
	"reasonNote": "decision note",
	"agentId": "uniqueId of the review agent",
	"agentName": "name of the review agent",
	"status": "status of the decision",
	"fraudFlag": "fraud flag (label) of the decision"
}
네임스페이스: FraudProtection.Observations.
{
    "request": "",
    "primaryEventId": "<assessment event id>",
    "observationApiName": "<your observation api name>",
    "observationName": "<your observation name>",
    "observationEventId": "<your observation event id>",
    "assessmentApiName": "<your assessment api name>",
    "assessmentName": "<your assessment name>"
}
네임스페이스: FraudProtection.Labels.
{
    "request": "",
    "labelEventId": "",
    "assessmentApiName": "<your assessment api name>",
    "assessmentName": "<your assessment name>"
}

감사 이벤트

감사 이벤트를 사용하여 포털 작업을 추적하고 감사 로그를 개발합니다. 감사 이벤트는 현재 규칙, 목록, 속도 및 외부 호출에 대한 새/편집/삭제 작업을 지원합니다.

네임스페이스: FraudProtection.Audit.
"audit": {
    "entityId": "cde1518f-305e-42e8-8d05-9b955efe3f46",
    "entityName": "Manual Review Rule",
    "entityType": "Rule",
    "operationName": "NewRule",
    "userId": "user@contoso.com"
},
"name": "FraudProtection.Audit",
"version": "1.0",
"metadata": {
    "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
    "timestamp": "2020-06-10T23:43:33.4526859Z"
}

감사 로그 액세스

감사 로그에 액세스할 수 있는 두 가지 방법이 있습니다. 이벤트 추적을 설정하거나 고객 지원 티켓을 만들어 자동 생성된 감사 로그 전송을 요청할 수 있습니다. 이벤트 추적을 사용하지 않고 대신 지원 티켓을 제출하기로 결정한 경우 지원 티켓은 Fraud Protection 엔지니어링 팀으로 라우팅됩니다. 팀은 로그를 추출하여 사용자에게 다시 제공합니다. 감사 로그는 환경을 프로비전하는 동일한 지역에 캡처되고 저장됩니다. 로그가 캡처되고 로그 보존 기간이 365일인 후에는 로그를 편집할 수 없습니다. 365일보다 오래된 로그는 자동으로 삭제됩니다.

감사 로그를 사용하여 추적할 수 있는 5개의 이벤트가 생성됩니다. 이러한 이벤트는 다음과 같습니다.

  • 사용자가 처음으로 Fraud Protection 역할에 할당됩니다.
  • 기존 사용자의 역할이 업데이트됩니다.
  • 특정 사용자에 대해 모든 역할 할당이 제거됩니다.
  • 사용자가 FCRA 동의를 수락합니다.
  • 사용자가 TAB(트랜잭션 승인 부스터) 설정을 업데이트합니다. 이러한 설정에 대한 변경 내용은 업데이트로 간주됩니다.

활동 로그 이벤트

활동 로그 이벤트를 사용하여 사기 방지의 일부 작업에 대해 누가 무엇을, 언제, 어디서 수행했는지에 대한 자세한 레코드를 가져옵니다. 예를 들어 규칙을 마지막으로 변경한 사용자를 확인할 수 있습니다. 결과는 활동 로그 검색 결과와 일치 합니다 .

네임스페이스: FraudProtection.ActivityLog.
{
"eventId": "0c6e1948-75a9-4513-bb4c-4828c9a8ab05",
"operationType": "Create",
"resourceType": "Decision rule",
"resourceId": "b1053216-2fc4-4ef6-94e8-c4da706d87fa",
"resourceName": "Rule Test",
"userId": "fb88ba00-58e0-421c-8742-10ae04dddb86"
}

"userID" 뒤에 작업 및 특정 리소스 종류 필드가 잇습니다.

이벤트 모니터링

사기 방지 포털에서 사용할 수 있는 보고를 사용하여 API 및 외부 호출 성능에 대한 사용자 지정 보고 및 경고에 모니터링 이벤트를 사용할 수 있습니다. 아래의 각 이벤트는 각 서비스의 대기 시간 및 오류에 대한 인사이트를 제공합니다.

네임스페이스: FraudProtection.Monitoring.RequestLatencyMsDistribution.

API 호출의 경우 요청 수 및 대기 시간 분포(ms)는 이 이벤트에서 20초마다 전송됩니다. 이러한 이벤트에는 집계 기간을 결정하는 startTime 및 endTime 필드와 필요에 따라 메트릭을 필터링하는 데 사용할 수 있는 차원 이름 및 값이 포함됩니다.


{
"Index": [
             1
],
"BucketSamples": [
             2
],
"NumberOfBuckets": 10000,
"BucketSize": 10,
"MinimumValue": 0,
"CounterName": "RequestLatencyMsDistribution",
"DimensionNames": [
   "EnvironmentId",
   "TenantId",
   "ApiName",
   "ExperienceType",
   "IsTestRequest",
   "RequestType",
   "HttpRequestStatus",
   "HttpStatusCode"
],
"DimensionValues": [
   "63f55d63-9653-4ed9-be77-294da21202ae",
   "63f55d63-9653-4ed9-be77-294da21202ae",
   "v1.0/Observe/Create",
   "N/A",
   "False",
   "REALTIME",
   "Success",
   "200"
],
"StartTime": "2020-06-22T23:43:20",
"EndTime": "2020-06-22T23:43:40",
"Samples": 2,
"Min": 3,
"Max": 7,
"name": "FraudProtection.Monitoring.RequestLatencyMsDistribution",
"version": "1.0",
"metadata": {
   "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
   "timestamp": "2020-06-22T23:43:20.0947542Z"
}
}

샘플 필드는 API당 요청 수를 나타냅니다.

네임스페이스: FraudProtection.Monitoring.ExternalCalls

이 이벤트에는 규칙에서 트리거되는 외부 호출 문서에> 대한 각 외부 호출 <링크의 대기 시간(ms) 및 HTTP 상태 코드가 포함됩니다. 호출을 트리거하는 규칙 및 절에 대한 추가 차원도 제공됩니다.

외부 호출의 경우 대기 시간(ms)과 http 상태 코드 메트릭이 이 이벤트의 각 요청과 함께 전송됩니다. 개별 호출의 성능을 조사하는 데 관심이 있는 경우 문제 해결 환경을 개선하기 위해 호출을 트리거하는 규칙에 대한 추가 차원도 제공됩니다.


{
    "name": "FraudProtection.Monitoring.ExternalCalls",
    "version": "1.0",
    "metadata": {
        "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
        "timestamp": "2020-06-10T23:43:33.4526859Z"
    },
    "externalCallName": "SampleExternalCall",
    "requestStatus": "Success",
    "httpStatusCode": 200,
    "correlationId": "50BFA0D6-1E3D-4700-A2B3-1DD01162C08A",
    "latencyMs": 123,
    "assessment": "PURCHASE",
    "rule": "SampleRule",
    "clause": "SampleClause"
}

네임스페이스: FraudProtection.Errors.ExternalCalls

이 이벤트는 실패한 각 외부 호출에 대한 오류를 기록하며 외부 호출 성능으로 볼 수 있는 문제를 디버깅하는 데 유용할 수 있습니다. 호출에 대한 전체 요청 및 응답뿐만 아니라 대기 시간 및 호출이 트리거된 규칙 및 절도 기록됩니다.


{
    "name": "FraudProtection.Errors.ExternalCalls",
    "version": "1.0",
    "metadata": {
        "tenantId": "63f55d63-9653-4ed9-be77-294da21202ae",
        "timestamp": "2020-06-10T23:43:33.4526859Z"
    },
    "externalCallName": "SampleExternalCall",
    "requestStatus": "ResponseFailure",
    "httpStatusCode": 404,
    "correlationId": "50BFA0D6-1E3D-4700-A2B3-1DD01162C08A",
    "latencyMs": 123,
    "assessment": "PURCHASE",
    "rule": "SampleRule",
    "clause": "SampleClause",
    "response": "{}",
    "requestUri": "https://samplewebsite/sample",
    "requestBody": "{}"
}