콘텐츠로 이동

Windows 세션 리플레이

실험적 기능

Windows SDK의 Session Replay는 기본적으로 비활성화되어 있으며, 명시적으로 활성화하고 확인할 수 있지만 아직 안정적인 릴리스 범위에 포함되지 않습니다. 도입 전에 대상 애플리케이션의 호환성, 프라이버시, 성능 및 데이터 양을 직접 평가하세요. 현재 동작을 안정적인 호환 약속으로 간주하지 마십시오.

지원 범위

WPF, WinForms, WinUI 3, WebView2, Electron 및 Native C/C++ 애플리케이션에서 명시적으로 활성화하여 확인할 수 있습니다. 다양한 UI 프레임워크, 크로스 도메인 Frame, Canvas, 커스텀 렌더링 콘텐츠 및 미디어 재생 컨트롤의 재생 효과는 대상 애플리케이션에서 개별적으로 확인해야 합니다.

세션 리플레이 활성화

SDK 초기화 시 SessionReplay.Enabledtrue로 명시적으로 설정합니다. 다음 예제는 공용 DataWay를 사용합니다. 로컬 환경(DataKit)에 배포하는 경우 DatawayUrlClientTokenDatakitUrl로 대체하세요.

using Guance.Windows;

GuanceSdk.Init(new GuanceConfig
{
    DatawayUrl = "https://openway.<your-domain>",
    ClientToken = "<client-token>",
    RumAppId = "<rum-app-id>",
    ServiceName = "desktop-client",
    Env = "prod",
    Version = "1.0.0",
    SessionReplay = new RumSessionReplayConfig
    {
        Enabled = true,
        SampleRate = 1.0,
        OnErrorSampleRate = 0.0,
        TextAndInputPrivacy = SessionReplayTextAndInputPrivacy.MaskAll,
        TouchPrivacy = SessionReplayTouchPrivacy.Show,
        ImagePrivacy = SessionReplayImagePrivacy.MaskAll
    }
});

Native C/C++ 애플리케이션은 초기화 전에 해당 필드를 설정합니다:

#include "guance_sdk.h"

guance_sdk_config config;
guance_sdk_config_init(&config);
config.session_replay_enabled = 1;
config.session_replay_sample_rate = 1.0;
config.session_replay_on_error_sample_rate = 0.0;

DataWay 또는 DataKit, RUM 애플리케이션 ID, 서비스 이름, 환경 및 애플리케이션 버전 등 초기화 필수 항목을 함께 입력한 후 guance_sdk_init()를 호출합니다. Native SDK는 또한 창 수명 주기에 따라 재생 창을 등록해야 합니다. WebView2 및 Electron 페이지 기록은 각각의 Native Bridge를 통해 동일한 세션에 기록됩니다.

프라이버시 구성

세션 리플레이는 UI의 텍스트, 입력, 클릭 및 이미지 정보를 수집할 수 있습니다. 활성화하기 전에 테스트 환경에서 수집 콘텐츠, 데이터 양 및 업로드 동작을 확인하고, 전역 구성과 요소 수준 오버라이드가 비즈니스 프라이버시 요구 사항을 충족하는지 확인하세요.

속성 유형 필수 설명
TextAndInputPrivacy SessionReplayTextAndInputPrivacy 아니요 텍스트 및 입력 콘텐츠의 프라이버시 수준을 설정합니다. MaskSensitiveInputs는 민감한 입력만 마스킹합니다. MaskAllInputs는 모든 입력 콘텐츠를 마스킹합니다. MaskAll은 모든 텍스트 및 입력 콘텐츠를 마스킹합니다. Allow는 텍스트 및 입력 콘텐츠를 마스킹하지 않습니다. 기본값 MaskAll.
TouchPrivacy SessionReplayTouchPrivacy 아니요 포인터 및 터치 동작의 프라이버시 수준을 설정합니다. Show는 포인터 및 터치 동작을 표시합니다. Hide는 포인터 및 터치 동작을 숨깁니다. 기본값 Show.
ImagePrivacy SessionReplayImagePrivacy 아니요 이미지 콘텐츠의 프라이버시 수준을 설정합니다. MaskAll은 모든 이미지를 마스킹합니다. MaskLargeOnly는 렌더링 영역이 임계값을 초과하는 이미지만 마스킹합니다. MaskNone은 이미지를 적극적으로 마스킹하지 않습니다. 기본값 MaskAll.

기본적으로 텍스트, 입력 및 이미지 마스킹과 같은 보수적인 전략을 사용하고, 비즈니스 평가를 완료한 후에만 규칙을 완화하는 것이 좋습니다. 계정, 결제, 신원 증명 또는 기타 민감한 데이터의 경우 요소 수준 프라이버시 오버라이드를 통해 더 엄격한 규칙을 설정하거나 전체 요소를 숨겨야 합니다.

프라이버시 오버라이드

SDK는 RumSessionReplayConfig를 통해 전역 프라이버시 수준을 구성할 수 있을 뿐만 아니라 뷰 수준에서 이러한 설정을 재정의할 수 있습니다. 다음 요소 수준 API는 .NET의 WPF, WinForms 및 WinUI 3 컨트롤에 적용됩니다.

뷰 수준 프라이버시 오버라이드:

  • 텍스트 및 입력, 터치, 이미지의 프라이버시 수준 재정의 지원
  • 지정된 요소 및 그 하위 요소를 완전히 숨기는 기능 지원

참고:

  • 오버라이드 설정을 올바르게 식별할 수 있도록 요소 수명 주기에서 최대한 빨리 적용해야 합니다.
  • 프라이버시 오버라이드는 해당 요소와 그 하위 요소에 적용됩니다.
  • 텍스트, 터치 및 이미지 프라이버시 오버라이드 우선순위: 하위 요소 > 상위 요소 > 전역 설정
  • 숨김 설정은 전체 요소 트리에 적용되며, 하위 요소는 상위 요소에서 상속된 숨김 설정을 제거할 수 없습니다.

텍스트 및 입력 오버라이드

GuanceSdk.SetSessionReplayTextAndInputPrivacy()를 사용하여 요소의 텍스트 및 입력 프라이버시 수준을 설정합니다. null을 전달하면 현재 요소의 오버라이드 설정을 제거할 수 있습니다.

// 지정된 요소에 텍스트 및 입력 프라이버시 오버라이드 설정
GuanceSdk.SetSessionReplayTextAndInputPrivacy(
    passwordBox,
    SessionReplayTextAndInputPrivacy.MaskAll);

// 지정된 요소의 텍스트 및 입력 프라이버시 오버라이드 제거
GuanceSdk.SetSessionReplayTextAndInputPrivacy(passwordBox, null);

터치 오버라이드

GuanceSdk.SetSessionReplayTouchPrivacy()를 사용하여 요소의 포인터 및 터치 프라이버시 수준을 설정합니다. null을 전달하면 현재 요소의 오버라이드 설정을 제거할 수 있습니다.

// 지정된 요소의 포인터 및 터치 동작 숨기기
GuanceSdk.SetSessionReplayTouchPrivacy(
    paymentPanel,
    SessionReplayTouchPrivacy.Hide);

// 지정된 요소의 포인터 및 터치 프라이버시 오버라이드 제거
GuanceSdk.SetSessionReplayTouchPrivacy(paymentPanel, null);

이미지 오버라이드

GuanceSdk.SetSessionReplayImagePrivacy()를 사용하여 요소의 이미지 프라이버시 수준을 설정합니다. null을 전달하면 현재 요소의 오버라이드 설정을 제거할 수 있습니다.

// 지정된 요소의 모든 이미지 마스킹
GuanceSdk.SetSessionReplayImagePrivacy(
    identityImage,
    SessionReplayImagePrivacy.MaskAll);

// 지정된 요소의 이미지 프라이버시 오버라이드 제거
GuanceSdk.SetSessionReplayImagePrivacy(identityImage, null);

요소 숨김 오버라이드

완전히 숨겨야 하는 민감한 요소의 경우 GuanceSdk.SetSessionReplayHidden()을 사용하여 설정합니다. 설정 후 해당 요소는 재생에서 Hidden 플레이스홀더로 표시되며 하위 요소는 기록되지 않습니다.

// 지정된 요소 및 그 하위 요소 숨기기
GuanceSdk.SetSessionReplayHidden(customerIdentityPanel, true);

// 지정된 요소의 숨김 설정 제거
GuanceSdk.SetSessionReplayHidden(customerIdentityPanel, false);

WebView2 및 Electron

WebView2 및 Electron의 Browser collector는 네이티브 Bridge의 getPrivacyLevel()에서 allow, mask-user-input 또는 mask를 읽습니다. 프라이버시 수준은 반드시 네이티브 신뢰할 수 있는 구성에 의해 결정되어야 하며, Renderer가 자체적으로 완화할 수 없습니다.

관련 문서

문서 평가

이 페이지가 도움이 되었나요?