隐私与数据脱敏¶
隐私规则应在数据进入 RUM 或 Log 队列前生效。C# 与 Native C/C++ 都支持 URL Query 脱敏;C# 还支持 HttpClient Header 脱敏。
默认行为¶
| 数据 | .NET / C# | Native C/C++ |
|---|---|---|
| URL Query | 保留非敏感值,默认敏感参数替换为 <redacted> |
相同 |
| HTTP Header | 默认采集并脱敏认证类 Header | Native Resource 当前不采集请求/响应 Header |
| 用户与自定义属性 | 应用写入前负责业务脱敏 | 相同 |
| Log 内容与属性 | 应用写入前负责业务脱敏 | 相同 |
| Trace Header | 仅发送到 ShouldTrace/should_trace 允许的目标 |
相同 |
默认敏感 Query 名包括 token、access_token、refresh_token、client_secret、password、secret、api_key、apikey、auth 和 authorization。
C# 隐私配置¶
RumSdk.Init(new RumConfig
{
DatawayUrl = "https://openway.guance.com",
ClientToken = "<client-token>",
RumAppId = "<rum-app-id>",
Privacy = new RumPrivacyConfig
{
CaptureHttpHeaders = true,
CaptureUrlQueryString = true,
RedactAllUrlQueryValues = false,
RedactedValue = "<redacted>",
RedactedHeaderNames = new[]
{
"Authorization",
"Cookie",
"Set-Cookie",
"X-Api-Key"
},
RedactedQueryParameterNames = new[]
{
"token",
"password",
"secret"
}
}
});
| 参数 | 默认值 | 说明 |
|---|---|---|
CaptureHttpHeaders |
true |
是否记录脱敏后的请求和响应 Header。 |
CaptureUrlQueryString |
true |
是否保留 URL Query。关闭后移除整个 Query。 |
RedactAllUrlQueryValues |
false |
是否隐藏全部 Query 值。 |
RedactedValue |
<redacted> |
脱敏替换文本。 |
RedactedHeaderNames |
认证类 Header | Header 名单,不区分大小写。 |
RedactedQueryParameterNames |
敏感参数名单 | Query 参数名单,不区分大小写。 |
Native C/C++ 隐私配置¶
const char* redacted_names[] = {
"token",
"password",
"secret"
};
guance_rum_resource_collection_config privacy;
guance_rum_resource_collection_config_init(&privacy);
privacy.capture_url_query = 1;
privacy.redact_all_url_query_values = 0;
privacy.redacted_value = "<redacted>";
privacy.redacted_query_parameter_names = redacted_names;
privacy.redacted_query_parameter_name_count = 3;
guance_rum_configure_resource_collection(rum, &privacy);
初始化函数会写入默认敏感参数名单。配置函数复制字符串数组,但保留 should_collect 与 user_data;回调必须在重新配置或关闭前保持有效。
关闭网络数据采集¶
目标过滤¶
Native Resource 可以通过 should_collect 过滤采集目标;C# 应在业务 Handler 或手动 Resource 边界执行同等过滤。Trace Header 必须通过 Trace 配置中的目标白名单限制到可信服务。
用户、Log 和自定义字段¶
- 不要写入密码、Token、身份证件、支付信息或完整认证 Header。
- 用户 ID 应使用业务允许的稳定标识或哈希值。
- Log 内容与属性不会自动理解业务敏感字段,应用必须在
AddLog()前脱敏。 - 自定义属性不能覆盖 SDK 保留字段;冲突字段会被忽略。
Session Replay 隐私¶
实验性能力
Session Replay 默认关闭,可以显式开启验证,但仍为实验性能力。开启前必须确认默认策略和元素级覆盖满足业务隐私要求。
.NET 初始化配置支持文本/输入、触摸和图片隐私:
SessionReplay = new RumSessionReplayConfig
{
Enabled = true,
TextAndInputPrivacy = SessionReplayTextAndInputPrivacy.MaskAll,
TouchPrivacy = SessionReplayTouchPrivacy.Hide,
ImagePrivacy = SessionReplayImagePrivacy.MaskAll
}
需要覆盖单个元素时:
RumSdk.SetSessionReplayTextAndInputPrivacy(
passwordBox,
SessionReplayTextAndInputPrivacy.MaskAll);
RumSdk.SetSessionReplayTouchPrivacy(
paymentPanel,
SessionReplayTouchPrivacy.Hide);
RumSdk.SetSessionReplayImagePrivacy(
identityImage,
SessionReplayImagePrivacy.MaskAll);
RumSdk.SetSessionReplayHidden(customerIdentityPanel);
Electron 和 WebView2 的 Browser collector 从原生 Bridge 的 getPrivacyLevel() 读取 allow、mask-user-input 或 mask。隐私级别必须由原生可信配置决定,Renderer 不能自行放宽。