Windows 세션 리플레이¶
실험적 기능
Windows SDK의 Session Replay는 기본적으로 비활성화되어 있으며, 명시적으로 활성화하고 확인할 수 있지만 아직 안정적인 릴리스 범위에 포함되지 않습니다. 도입 전에 대상 애플리케이션의 호환성, 프라이버시, 성능 및 데이터 양을 직접 평가하세요. 현재 동작을 안정적인 호환 약속으로 간주하지 마십시오.
지원 범위¶
WPF, WinForms, WinUI 3, WebView2, Electron 및 Native C/C++ 애플리케이션에서 명시적으로 활성화하여 확인할 수 있습니다. 다양한 UI 프레임워크, 크로스 도메인 Frame, Canvas, 커스텀 렌더링 콘텐츠 및 미디어 재생 컨트롤의 재생 효과는 대상 애플리케이션에서 개별적으로 확인해야 합니다.
세션 리플레이 활성화¶
SDK 초기화 시 SessionReplay.Enabled를 true로 명시적으로 설정합니다. 다음 예제는 공용 DataWay를 사용합니다. 로컬 환경(DataKit)에 배포하는 경우 DatawayUrl과 ClientToken을 DatakitUrl로 대체하세요.
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가 자체적으로 완화할 수 없습니다.