适用范围和名词解释
神策网络科技(北京)有限公司(以下简称“神策”或“我们”)作为神策官方网站、神策软件产品和服务的运营者,始终高度重视用户的个人信息保护。为帮助使用神策软件产品的企业客户(以下简称“客户”)更好地落实终端用户个人信息保护相关事宜,同时,也便于客户更清楚地理解神策软件产品的合规性和已采用的安全保护技术能力,尤其是保护个人信息和隐私的方法和措施,神策特编写此版《合规说明》。本说明适用于神策所有产品和服务以及可能涉及的特定软件产品和服务(以下简称“神策软件产品和服务”),包括但不限于我们提供的官方网站、SDK1、API、插件、组件、代码、工具以及不断创新研发的软件产品(神策分析、神策智能运营、神策智能推荐等)及服务。
神策软件产品的数据存储与应用情况说明
神策郑重承诺未经授权不接触客户数据
对于采用私有化部署方式的神策软件产品的使用者,即系统部署在客户的机房或客户使用的公有云(包括但不限于阿里云、腾讯云、华为云、AWS、Azure 等),相关的安全措施和权限限制均由客户掌握,对于客户机房的数据神策无权获取。
对于采用 SaaS 部署方式的神策软件产品的使用者,即客户系统服务端多节点分布式部署,神策同样无权接触客户数据,仅出于服务目的对服务资源进行托管。
神策承诺在提供软件产品和服务过程中,未经客户授权不接触相关数据或报表等形式的统计结果。
神策提供的软件产品和服务,仅可被用于合法用途
客户仅可将神策软件产品和服务用于合法用途,客户需要确保其使用神策软件产品和服务的行为符合相关法律法规的规定和监管要求,不侵犯任何第三方的知识产权及其他合法权益,不违反对其有约束力的法律文件的规定。如果客户违反上述约定,神策有权暂停提供产品和服务、并解除本协议,已收取的服务费用不予退还;如神策因此遭受第三方追索、行政调查或卷入其他法律程序,客户还需赔偿神策遭受的一切损失(包括但不限于应诉费用、配合调查发生的费用、第三方追索赔偿款、补偿款、律师费等)。
为了符合《个人信息保护法》关于“收集数据时取得权利所有人授权同意”的要求,客户如使用神策软件产品进行合规数据收集时,需要在《用户隐私说明》文件内,披露第三方 SDK 以及提及神策软件产品。
免责声明
如果客户使用神策软件产品进行数据收集,应当保证数据来源合法合规,或者已经取得相关方和终端用户授权。
客户对终端用户的信息处理应当合法合规,否则神策有权要求客户停止使用神策软件产品进行数据收集和处理,并保留追究责任的权利,且不视为神策违约。
如客户使用神策软件产品对客户指定的第三方进行数据收集和处理,由此行为产生的第三方诉求和相应责任,神策有权要求客户承担或补偿。
神策对于数据处理的安全保护措施说明
数据收集安全说明
SDK 延迟初始化
Android 合规步骤
神策分析 v6.0.0 及以上的 SDK
Android SDK 在 v6.0.0 版本及以上提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK 进行数据收集。具体可以参考以下步骤:
首次调用在同意隐私条款后调用 SensorsDataAPI.startWithConfigOptions() 初始化 SDK,此后在 Application 的 onCreate() 方法中主线程初始化 SDK
// Application 的 onCreate() 方法中主线程初始化 SDK
if (同意隐私条款) {
SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
// 初始化 SDK
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
}
// 在 Activity 中同意隐私条款后初始化 SDK
if (未同意隐私条款) {
//隐私协议弹窗相关逻辑
if(同意隐私条款) {
// 初始化配置
SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
// 初始化 SDK,延迟初始化场景 context 需要传递 Activity
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
}
}
- 延迟初始化暂只支持传入的 context 为 Activity
- 禁止在 onDestroy 中初始化
- Deeplink 唤起页面需跟初始化页面保持一致
- 对于延迟初始化场景,触发的 $AppStart 事件会出现无法带上静态公共属性的问题,需要使用高级功能中的属性插件化在初始化中设置属性
某些按钮 (如输入用户密码的安全键盘) 如果包含隐私信息,Android 全埋点提供了 API 可以忽略控件的点击事件采集:
SensorsDataAPI.shareInstance().ignoreView(View view);
神策智能运营 v0.5.0 及以上的 SDK
Android SensorsFocus SDK 在 v0.5.0 版本及以上提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK。具体可以参考以下步骤:
首次调用在同意隐私条款后调用 SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址")); 初始化 SDK,此后在 Application 的 onCreate() 方法中主线程初始化 SDK
// Application 的 onCreate() 方法中主线程初始化 SDK
if (同意隐私条款) {
// 初始化 SDK
SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址"));
}
// 在 Activity 中同意隐私条款后初始化 SDK
if (未同意隐私条款) {
//隐私协议弹窗相关逻辑
if(同意隐私条款) {
SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址"));
}
}
- 延迟初始化暂只支持传入的 context 为 Activity
- 禁止在 onDestroy 中初始化
Android SDK 在 v6.0.0 版本及以上提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK 进行数据收集。具体可以参考以下步骤:
首次调用在同意隐私条款后调用 SensorsDataAPI.startWithConfigOptions() 初始化 SDK,此后在 Application 的 onCreate() 方法中主线程初始化 SDK
// Application 的 onCreate() 方法中主线程初始化 SDK
if (同意隐私条款) {
SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
// 初始化 SDK
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
}
// 在 Activity 中同意隐私条款后初始化 SDK
if (未同意隐私条款) {
//隐私协议弹窗相关逻辑
if(同意隐私条款) {
// 初始化配置
SAConfigOptions saConfigOptions = new SAConfigOptions(SA_SERVER_URL);
// 初始化 SDK,延迟初始化场景 context 需要传递 Activity
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
}
}
- 延迟初始化暂只支持传入的 context 为 Activity
- 禁止在 onDestroy 中初始化
- Deeplink 唤起页面需跟初始化页面保持一致
- 对于延迟初始化场景,触发的 $AppStart 事件会出现无法带上静态公共属性的问题,需要使用高级功能中的属性插件化在初始化中设置属性
某些按钮 (如输入用户密码的安全键盘) 如果包含隐私信息,Android 全埋点提供了 API 可以忽略控件的点击事件采集:
SensorsDataAPI.shareInstance().ignoreView(View view);
Android SensorsFocus SDK 在 v0.5.0 版本及以上提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK。具体可以参考以下步骤:
首次调用在同意隐私条款后调用 SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址")); 初始化 SDK,此后在 Application 的 onCreate() 方法中主线程初始化 SDK
// Application 的 onCreate() 方法中主线程初始化 SDK
if (同意隐私条款) {
// 初始化 SDK
SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址"));
}
// 在 Activity 中同意隐私条款后初始化 SDK
if (未同意隐私条款) {
//隐私协议弹窗相关逻辑
if(同意隐私条款) {
SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions("弹窗服务端地址"));
}
}
- 延迟初始化暂只支持传入的 context 为 Activity
- 禁止在 onDestroy 中初始化
iOS 合规步骤
客户确保用户在同意《隐私政策》后,初始化 iOS SDK。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 判断是否第一次打开 App,如果是进入隐私协议相关代码
if (<#第一次打开 App || 非第一次打开 App 但尚未同意用户协议#>) {
// 隐私协议弹窗相关逻辑
if (<#同意用户协议#>) {
// 初始化 SDK
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:SA_SERVER_URL launchOptions:launchOptions];
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart | SensorsAnalyticsEventTypeAppEnd | SensorsAnalyticsEventTypeAppClick | SensorsAnalyticsEventTypeAppViewScreen;
[SensorsAnalyticsSDK startWithConfigOptions:options];
}
}else{
// 初始化 SDK
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:SA_SERVER_URL launchOptions:launchOptions];
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart | SensorsAnalyticsEventTypeAppEnd | SensorsAnalyticsEventTypeAppClick | SensorsAnalyticsEventTypeAppViewScreen;
[SensorsAnalyticsSDK startWithConfigOptions:options];
}
...
return YES;
}
某些按钮 (如输入用户密码的安全键盘) 如果包含隐私信息,iOS 全埋点提供了 API 可以忽略控件的点击事件采集:
button.sensorsAnalyticesIgnoreView = YES;
Web JS SDK 合规步骤
Web JS SDK 在 v1.21.1 版本及以上提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK 进行数据收集。具体可以参考以下步骤:
if(同意隐私条款){
sensors.init({
server_url: 'http://test-syg.datasink.sensorsdata.cn/sa?token=xxxxx&project=xxxxxx',
is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
use_client_time:true,
send_type:'beacon',
heatmap: {
//是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
clickmap:'default',
//是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
scroll_notice_map:'not_collect'
}
});
sensors.quick('autoTrack');
}
- 在加载 Web JS SDK 之前设置 window 全局变量 sensors_data_pre_config。
- 合规不支持 Web JS SDK API 中使用回调函数。
- 合规不支持异步加载的方式引入 Web JS SDK。
微信小程序 SDK 合规步骤
微信小程序 SDK 可以先调用 sensors.disableSDK() 来禁用数据采集。
在同意隐私政策后,使用 sensors.enableSDK() 来启用数据采集。
import sensors from '../sensorsdata.esm.js';
sensors.init(...)
sensors.disableSDK();
if(同意隐私政策){
sensors.enableSDK();
}
React Native 合规步骤
React Native Module v2.2.5 及以上版本提供了延迟初始化的方式来满足合规。客户在其用户同意《隐私政策》后,初始化 SDK 进行数据收集。具体可以参考以下步骤:
// 程序入口初始化 SDK
import sensors,{SAAutoTrackType} from 'sensorsdata-analytics-react-native'
if (未同意隐私条款) {
// 隐私协议弹窗相关逻辑
if (<#同意用户协议#>) {
// 初始化 SDK
sensors.init({
server_url:'数据接收地址',
auto_track:SAAutoTrackType.START|SAAutoTrackType.END|SAAutoTrackType.CLICK|SAAutoTrackType.VIEW_SCREEN
})
} else {
// 初始化 SDK
sensors.init({
server_url:'数据接收地址',
auto_track:SAAutoTrackType.START|SAAutoTrackType.END|SAAutoTrackType.CLICK|SAAutoTrackType.VIEW_SCREEN
})
}
HarmonyOS 合规步骤
客户确保用户在同意《隐私政策》后,初始化 HarmonyOS SDK。
import sensors from '@sensorsdata/analytics';
if (未同意隐私条款) {
//隐私协议弹窗相关逻辑
if (同意隐私条款) {
sensors.init({
// 服务器接收地址
server_url: '你的数据接收地址',
// Ability 上下文
context: this.context
});
}
}
SDK 本地数据加密
Android SDK 合规步骤
版本要求
Android SDK v6.2.0 版本及以上
Android SDK 提供对缓存中的内容进行加密,需手动开启。如果对加密方式有要求,神策默认加密无法满足需求,可以实现自定义加密,自定义加密方式可以咨询 SDK 值班同学。
使用默认方式加密
Android SDK 中默认实现了加密,使用 AES 加密方式,AES 128 偏移 16 位,按如下代码即可开启加密:
SAConfigOptions configOptions = new SAConfigOptions("数据接收地址");
//注册 MuPlugin 插件
configOptions.registerStorePlugin(new SAEncryptStorePlugin(this));
SensorsDataAPI.startWithConfigOptions(this, configOptions);
一旦实现合规加密或者自定义加密,加密数据将无法恢复到未加密数据
iOS SDK 合规步骤
版本要求
iOS SDK v4.2.0 版本及以上
iOS SDK 提供对缓存中的内容进行加密,需手动开启。如果对加密方式有要求,神策默认加密无法满足需求,可以实现自定义加密,自定义加密方式可以咨询 SDK 值班同学。
使用默认方式加密
iOS SDK 中默认实现了加密,使用 AES 加密方式,AES 128 偏移 16 位,按如下代码即可开启加密:
Objective-C
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:<#数据接收地址#> launchOptions:launchOptions];
//注册加密插件
SAAESStorePlugin *plugin = [[SAAESStorePlugin alloc] init];
[options registerStorePlugin:plugin];
[SensorsAnalyticsSDK startWithConfigOptions:options];
Swift
let options = SAConfigOptions.init(serverURL: <#数据接收地址#>, launchOptions: launchOptions)
//注册加密插件
let plugin = SAAESStorePlugin()
options.register(plugin)
SensorsAnalyticsSDK.start(configOptions: options)
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:<#数据接收地址#> launchOptions:launchOptions];
//注册加密插件
SAAESStorePlugin *plugin = [[SAAESStorePlugin alloc] init];
[options registerStorePlugin:plugin];
[SensorsAnalyticsSDK startWithConfigOptions:options];
let options = SAConfigOptions.init(serverURL: <#数据接收地址#>, launchOptions: launchOptions)
//注册加密插件
let plugin = SAAESStorePlugin()
options.register(plugin)
SensorsAnalyticsSDK.start(configOptions: options)
一旦实现合规加密或者自定义加密,加密数据将无法恢复到未加密数据
Web JS SDK 合规步骤
目前 Web JS SDK 保存的 cookie 包含用户信息及 register 设置的属性信息,可以对 cookie 进行深层加密,保证安全性
使用加密功能时必须保证所有页面的 SDK 必须是最新版;否则如果某些页面使用了加密 cookie 的功能,那么 cookie 就是加密的,一旦个别页面使用的是老版本 SDK ,没有解密功能,都会导致无法解析 cookie ,从而造成产生新用户,用户无法统一
版本要求
- Web JS SDK v1.16.10 及以上版本
功能配置
小程序 SDK 合规步骤
目前 SDK 保存在 storage 中的信息包含用户信息及 register 设置的属性信息,可以对 storage 中的数据进行深层加密,保证安全性
版本要求
- 微信小程序 SDK v1.14.9 及以上版本
功能配置
// app.js
var sensors = require('sensorsdata.min.js');
sensors.setPara({
name: 'sensors',
server_url: '数据接收地址',
encrypt_storage : true // 是否开启本地加密存储
});
HarmonyOS SDK 合规步骤
版本要求
HarmonyOS SDK v0.0.6 及以上版本
功能配置
该部分需参照 HarmonyOS SDK 集成文档进行开启使用。请联系售后同学进行技术支持。
App Store 隐私指引
App Store 上架问题见:https://manual.sensorsdata.cn/sa/latest/tech_sdk_client_app_store_compliance-41845311.html
Android SDK 配置项
禁止获取 Android ID
调用 SensorsDataUtils.enableAndroidId (boolean enabled) 接口用于控制 AndroidID 的采集开启和关闭。true 表示可采集。false 表示不可采集。
// 关闭采集 AndroidID
SensorsDataUtils.enableAndroidId(false);
禁止获取 OAID
调用 SensorsDataUtils.enableOAID (boolean enabled) 接口用于控制 OAID 的采集开启和关闭。true 表示可采集。false 表示不可采集。
// 关闭采集 OAID
SensorsDataUtils.enableOAID(false);
Mac 地址、IMEI 号、MEID 号、运营商信息、IMSI 信息
Android SDK v6.8.0 及以上版本已删除获取 Mac 地址、获取 IMEI 号、获取 MEID 号、获取 运营商信息、获取 IMSI 信息的业务逻辑处理,即 SDK 中不涉及以上标识符的读取和使用。
关闭屏幕方向传感器
在初始化 SDK 后,可主动开启/关闭屏幕方向采集。
// 关闭屏幕方向采集和方向传感器
SensorsDataAPI.sharedInstance().enableTrackScreenOrientation(false)
神策信息脱敏说明
对指定显示信息进行加密
在神策软件产品中,可以根据角色进行显示信息配置,可以对每个角色配置对应的加密用户属性和加密事件属性。可有效地在不影响分析的前提下,进行重要信息的脱敏。
配置参考文档链接:https://manual.sensorsdata.cn/sa/latest/guide_role-41844972.html#id-.成员与角色v2.3-指定加密信息
神策销毁安全说明
支持欧盟《通用数据保护条例》(GDPR),可删除底层用户数据
- 联系神策工作人员,在客户授权确认后进行数据删除。
如需要数据删除,客户可以联系神策工作人员,得到客户授权确认后神策工作人员可配合客户进行数据删除。
神策 SDK 属性采集合规性说明
神策 SDK 产品权限说明
Android SDK 产品权限说明
为保证支持客户数据收集的正常展开,Android SDK 需要以下系统权限:
权限 | 用途 | 是否必须 | 备注 |
---|---|---|---|
INTERNET | 允许应用发送统计数据 | 必须权限,SDK 发送埋点数据需要此权限 | |
ACCESS_NETWORK_STATE | 允许应用检测网络状态 | 必须权限,SDK 会根据网络状态选择是否发送数据 | |
READ_PHONE_STATE | 允许应用获取设备 IMEI、MEID 和 Android11 及以上系统版本获取网络类型 | 可选权限,采用 App 内推广和采集 $carrier 属性时会用到此权限 | Android v6.8.0 及以上版本神策 SDK只用来 Android11 及以上系统版本获取网络类型 |
ACCESS_WIFI_STATE | 允许应用获取 MAC 地址 | 可选权限,采用 App 内推广时会用到此权限 | Android v6.8.0 及以上版本神策 SDK 无需授权开通此权限,已删除该权限声明 |
尽管神策 Android SDK 需要如上系统权限,但是:
- Android SDK 不会申请上述权限以外的权限,如果检测出与神策 SDK 命名相同的 SDK 有申请上述权限以外的权限,请及时与神策工作人员联系,神策将协力客户一起排查,避免产生数据安全事故。
- Android SDK 不会向用户主动发起授权请求,神策会在客户集成 SDK 时告知客户需要如上权限以保证系统正常运转,客户需要在 SDK 初始化之前自行调用。
关于 Android ID 的说明: 使用 Android SDK 收集匿名 ID 的时候,考虑到收集的准确性,会常规采用 Android ID ,此方法可能存在一定的合规风险;客户如果不需要采用 Android ID,请调用禁用 AndroidID 接口,如有其它问题,请及时联系神策工作人员。
关于 OAID 的说明:使用 Android SDK 收集匿名 ID 的时候,如果客户集成了 OAID 的SDK,考虑到收集的准确性,可能会收集 OAID。如有其他问题,请及时联系神策工作人员。
iOS SDK 产品权限说明
为保证支持客户数据收集的正常展开,iOS SDK 需要以下系统权限:
权限 | 用途 | 是否必须 |
---|---|---|
网络(国服专门) | 允许应用发数据 | 必须权限,SDK 发送埋点数据需要此权限 |
定位 | 允许应用获取 GPS 数据 | 可选权限,SDK 采集 GPS 数据时需要此权限 |
IDFA | 允许应用获取 IDFA | 可选权限,采用 App 内推广时会用到此权限 |
尽管神策 iOS SDK 需要如上系统权限,但是:
- iOS SDK 不会申请上述权限以外的权限,如果检测出与神策 SDK 命名相同的 SDK 有申请上述权限以外的权限,请与神策工作人员取得联系,神策将协力客户一起排查,避免产生数据安全事故。
- 由于 iOS 系统的特性,iOS SDK 可能会主动对用户发起授权,但仅限于上述权限。
关于 IDFA 的说明:使用 iOS SDK 在收集匿名 ID 和进行渠道匹配的时候,考虑到收集的准确性,会常规采用 IDFA ,此方法可能存在一定的合规风险;客户如果不需要收集 IDFA,请在项目工程中去除 framework 的引用,并且不要在项目中导入 AdSupport 相关头文件。如有其他问题,请及时联系神策工作人员。
Harmony SDK 产品权限说明
为保证支持客户数据收集的正常展开,HarmonyOS SDK 需要以下系统权限:
权限 | 用途 | 是否必须 | 申请时机 |
ohos.permission.INTERNET | 允许应用发送统计数据 | 必须权限,SDK 发送埋点数据需要此权限 | 发送埋点数据时 |
ohos.permission.GET_NETWORK_INFO | 允许应用检测网络状态 | 必须权限,SDK 会根据网络状态选择是否发送数据 | 发送埋点数据时 |
ohos.permission.GET_WIFI_INFO | 允许应用检测网络状态 | 可选权限,允许应用获取 WIFI 信息 | 埋点事件采集时 |
SDK 收集、数据发送与异常处理策略
详细见《Android SDK & iOS SDK 安全说明》
神策 SDK 预置属性数据常规收集情况说明
使用 SDK 进行数据收集的时候,涉及预置属性如下:
类别 | 英文变量名 | 显示名 | 数据 类型 | 是否 自动 采集 | 是否 支持 关闭 | 默认 是否 隐藏 | 作用 (分析 技术 Debug) | 信息隐私风险评估 | 风险评估备注 |
---|---|---|---|---|---|---|---|---|---|
保留属性 | distinct_id | 用户 ID | STRING | 是 | 否 | / | 分析 | 无风险 | |
time | 时间 | DATETIME | 是 | 否 | / | 分析 | 无风险 | ||
基础预置属性 | $app_state | App 状态 | STRING | 是 | 否 | 技术 | 无风险 | ||
$app_id | 应用唯一标识 | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$app_name | 应用名称 | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$app_version | 应用版本 | STRING | 是 | 否 | 否 | 分析 | 低风险 | ||
$is_first_day | 是否首日访问 | BOOL | 是 | 否 | 否 | 分析 | 低风险 | 服务端进行二次修正 | |
$is_first_time | 是否首次触发事件 | BOOL | 是 | 是 | 否 | 分析 | 低风险 | 服务端进行二次修正 | |
$timezone_offset | 时区偏移量 | NUMBER | 是 | 否 | 否 | 分析 | 低风险 | ||
$event_duration | 事件时长 | NUMBER | 是 | 是 | 否 | 分析 | 低风险 | ||
$latitude | 纬度 | NUMBER | 否 | 是 | 否 | 分析 | 高风险 | ||
$longitude | 经度 | NUMBER | 否 | 是 | 否 | 分析 | 高风险 | ||
$title | 页面标题 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$screen_name | 页面名称 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
app_crashed_reason | 崩溃原因 | STRING | 否 | 是 | 否 | Debug | 无风险 | ||
$url | 页面地址 | STRING | 否 | 否 | 否 | 分析 | 低风险 | ||
$url_query | 页面参数 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$url_path | 页面路径 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$referrer | 前向地址 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$referrer_host | 前向域名 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$referrer_title | 前向页面标题 | STRING | 否 | 是 | 否 | 分析 | 无风险 | ||
$user_agent | UserAgent | STRING | 否 | 是 | 是 | 技术 | 中风险 | ||
$scene | 启动场景 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$share_depth | 分享次数 | NUMBER | 是 | 是 | 否 | 分析 | 中风险 | ||
$share_distinct_id | 分享者 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$share_url_path | 分享路径 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$share_method | 分享时途径 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$source_package_name | 来源应用包名 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$bot_name | 爬虫名称 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$viewport_height | 视区高度 | NUMBER | 否 | 是 | 否 | 分析 | 低风险 | ||
$viewport_position | 视区距顶部的位置 | NUMBER | 否 | 是 | 否 | 分析 | 低风险 | ||
$viewport_width | 视区宽度 | NUMBER | 否 | 是 | 否 | 分析 | 低风险 | ||
$item_join | Item 匹配模式 | - | 否 | 是 | 否 | 技术 | 无风险 | ||
$receive_time | $receive_time | NUMBER | 是 | 否 | 是 | 技术 | 无风险 | ||
$lib_plugin_version | SDK 插件版本号 | LIST | 是 | 否 | 是 | 技术 | 无风险 | ||
设备相关 | $brand | 设备品牌 | STRING | 是 | 否 | 否 | 分析 | 中风险 | |
$manufacturer | 设备制造商 | STRING | 是 | 否 | 否 | 分析 | 中风险 | ||
$model | 设备型号 | STRING | 是 | 否 | 否 | 分析 | 中风险 | ||
$os | 操作系统 | STRING | 是 | 否 | 否 | 分析 | 中风险 | ||
$os_version | 操作系统版本 | STRING | 是 | 否 | 否 | 分析 | 中风险 | ||
$screen_height | 屏幕高度 | NUMBER | 是 | 否 | 否 | 分析 | 低风险 | ||
$screen_width | 屏幕宽度 | NUMBER | 是 | 否 | 否 | 分析 | 低风险 | ||
$wifi | 是否 WIFI | BOOL | 是 | 否 | 否 | 分析 | 低风险 | ||
$carrier | 运营商 | STRING | 是 | 否 | 否 | 分析 | 中风险 | Android SDK v6.8.0 及以上版本已不采集 | |
$network_type | 网络类型 | STRING | 是 | 否 | 否 | 分析 | 低风险 | ||
$device_id | 设备 ID | STRING | 否 | 否 | 否 | 分析 | 高风险 | ||
$screen_orientation | 屏幕方向 | STRING | 否 | 否 | 否 | 分析 | 低风险 | ||
浏览器相关 | $browser | 浏览器 | STRING | 是 | 否 | 否 | 分析 | 中风险 | |
$browser_version | 浏览器版本 | STRING | 是 | 否 | 否 | 分析 | 中风险 | ||
点击事件相关 | $element_id | 元素 ID | STRING | 是 | 是 | 否 | 技术 | 低风险 | |
$element_name | 元素名称 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
$element_type | 元素类型 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
$element_content | 元素内容 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$element_position | 元素位置 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
$element_selector | 元素选择器 | STRING | 否 | 是 | 否 | 技术 | 低风险 | ||
$element_target_url | 元素链接地址 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
$element_class_name | 元素样式名 | STRING | 是 | 是 | 否 | 技术 | 低风险 | ||
latest 相关属性 | $latest_referrer | 最近一次站外地址 | STRING | 是 | 是 | 否 | 分析 | 中风险 | |
$latest_referrer_host | 最近一次站外域名 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_search_keyword | 最近一次搜索引擎关键词 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_traffic_source_type | 最近一次流量来源类型 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_landing_page | 最近一次落地页 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_utm_campaign | 最近一次广告系列名称 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_utm_content | 最近一次广告系列内容 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_utm_medium | 最近一次广告系列媒介 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_utm_source | 最近一次广告系列来源 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_utm_term | 最近一次广告系列字词 | STRING | 是 | 是 | 否 | 分析 | 中风险 | ||
$latest_scene | 最近一次启动场景 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
$latest_share_method | 最近一次分享时途径 | STRING | 是 | 是 | 否 | 分析 | 低风险 | ||
SDK 相关 | $lib | SDK 类型 | STRING | 是 | 否 | 否 | Debug | 无风险 | |
$lib_version | SDK 版本 | STRING | 是 | 否 | 是 | Debug | 无风险 | ||
$lib_method | 埋点方式 | STRING | 是 | 否 | 是 | Debug | 无风险 | ||
$lib_detail | 埋点细节 | STRING | 是 | 是 | 是 | Debug | 无风险 | ||
渠道相关 | $ios_install_source | App 渠道匹配所需要的设备指纹信息 | STRING | 否 | 是 | / | 技术 | 高风险 | 属性不入库 服务端进行渠道匹配后将属性删除 |
$channel_device_info | App 渠道匹配所需要的设备指纹信息(与上方事件变量名不同) | STRING | 否 | 是 | / | 技术 | 高风险 | 属性不入库 服务端进行渠道匹配后将属性删除 | |
$ios_install_disable_callback | 是否不进行追踪回调 | BOOL | 否 | 是 | 否 | 技术 | 低风险 | ||
$is_channel_callback_event | 是否进行渠道匹配回调 | BOOL | 否 | 是 | 是 | 技术 | 低风险 | ||
$channel_extra_information | 渠道额外信息 | STRING | 否 | 是 | 是 | 技术 | 高风险 | ||
$utm_matching_type | 渠道追踪匹配模式 | STRING | 否 | 是 | 否 | 技术 | 低风险 | ||
$utm_source | 广告系列来源 | STRING | 否 | 是 | 否 | 分析 | 中风险 | ||
$utm_medium | 广告系列媒介 | STRING | 否 | 是 | 否 | 分析 | 中风险 | ||
$utm_term | 广告系列字词 | STRING | 否 | 是 | 否 | 分析 | 中风险 | ||
$utm_content | 广告系列内容 | STRING | 否 | 是 | 否 | 分析 | 中风险 | ||
$utm_campaign | 广告系列名称 | STRING | 否 | 是 | 否 | 分析 | 中风险 | ||
$matched_key | 渠道匹配关键字 | STRING | 否 | 是 | 否 | 技术 | 高风险 | ||
$matching_key_list | 渠道匹配关键字列表 | STRING | 否 | 是 | 是 | 技术 | 高风险 | ||
$short_url_key | 短链 Key | STRING | 否 | 是 | 否 | 技术 | 低风险 | ||
$short_url_target | 短链目标地址 | STRING | 否 | 是 | 否 | 技术 | 低风险 | ||
$channel_active_period_day | 有效激活窗口期(天) | NUMBER | 是 | 否 | 否 | 分析 | 无风险 | ||
$channel_callback_period_day | 深度回传归因窗口期(天) | NUMBER | 是 | 否 | 否 | 分析 | 无风险 | ||
$channel_attribute_period_hour | 激活归因窗口期(小时) | NUMBER | 是 | 否 | 否 | 分析 | 无风险 | ||
$channel_name | 渠道名称 | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$channel_account_id | 渠道广告主 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$channel_campaign_id | 渠道广告计划 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$channel_adgroup_id | 渠道广告组 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$channel_ad_id | 渠道广告创意 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$channel_click_id | 渠道监测点击 ID | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$first_channel_name | 首次渠道名称 | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$first_channel_account_id | 首次渠道广告主 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$first_channel_campaign_id | 首次渠道广告计划 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$first_channel_adgroup_id | 首次渠道广告组 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$first_channel_ad_id | 首次渠道广告创意 ID | STRING | 是 | 否 | 是 | 分析 | 无风险 | ||
$first_channel_click_id | 首次渠道监测点击 ID | STRING | 是 | 否 | 否 | 分析 | 无风险 | ||
$channel_active_result | 渠道有效激活标识 | BOOL | 是 | 否 | 否 | 分析 | 无风险 | ||
IP 相关 | $ip | IP | STRING | 是 | 否 | 否 | 技术 | 无风险 | √(Nginx 解析) |
$city | 城市 | STRING | 是 | 否 | 否 | 分析 | 无风险 | √(根据 IP 解析) | |
$province | 省份 | STRING | 是 | 否 | 否 | 分析 | 无风险 | √(根据 IP 解析) | |
$country | 国家 | STRING | 是 | 否 | 否 | 分析 | 无风险 | √(根据 IP 解析) | |
$ip_isp | IP 运营商 | STRING | 是 | 否 | 否 | 分析 | 无风险 | √(根据 IP 解析) | |
用户关联相关 | $is_login_id | 是否登录 ID | BOOL | 是 | 否 | 是 | 技术 | 低风险 | √(事件入库时添加) |
$track_signup_original_id | 关联原始 ID | STRING | 是 | 否 | 否 | 技术 | 无风险 | ||
item 相关预置属性 | $is_valid | 是否封禁 | BOOL | √ | |||||
$receive_time | 到达时间 | NUMBER | √ | ||||||
$update_time | 更新时间 | DATETIME | √ |
- 全部的预置属性涉及超过 100 种,上表列出了常规采集的预置属性,如果需要查看全量的预置属性,请联系神策的支持人员。
- 同时神策 SDK 提供了多种接口以供调用,满足客户关闭特定属性采集的需求。如果需要避免 $ios_install_source 带来的风险,可以选择如下方法:
- 方法一:避免使用渠道追踪功能,不调用“激活事件”和“渠道信息事件”。
- 方法二:升级到 Android SDK v6.8.0 及以上版本,已不在使用 IMEI 号、MAC 地址、MEID 号标识符;
如需更多详细信息,请联系神策工作人员。
信息隐私风险评估分级标准说明
出自:国家标准 GB/T 35273-2020《信息安全技术个人信息安全规范》(以下简称“规范”)
上述规范中提及的“个人信息”,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息,如姓名、出生日期、身份证件号码、个人生物识别信息、住址、通信通讯联系方式、通信记录和内容、账号密码、财产信息、征信信息、行踪轨迹、住宿信息、健康生理信息、交易信息等。
判定某项信息是否属于个人信息,可参考以下两个方面:一是识别,即从信息到个人,由信息本身的特殊性识别出特定自然人,个人信息应有助于识别出特定个人。二是关联,即从个人到信息,如已知特定自然人,由该特定自然人在其活动中产生的信息(如个人位置信息、个人通话记录、个人浏览记录等)即为个人信息。符合上述两种情形之一的信息,均应判定为个人信息。
表 A.1 个人信息举例。
个人敏感信息是指一旦泄露、非法提供或滥用可能危害人身和财产安全,极易导致个人名誉、身心健康受到损害或歧视性待遇等的个人信息。通常情况下,14 岁以下(含)儿童的个人信息和涉及自然人隐私的信息属于个人敏感信息。可从以下角度判定是否属于个人敏感信息:
泄露:个人信息一旦泄露,将导致个人信息主体及收集、使用个人信息的组织和机构丧失对个人信息的控制能力,造成个人信息扩散范围和用途的不可控。某些个人信息在泄漏后,被以违背个人信息主体意愿的方式直接使用或与其他信息进行关联分析,可能对个人信息主体权益带来重大风险,应判定为个人敏感信息。例如,个人信息主体的身份证复印件被他人用于手机号卡实名登记、银行账户开户办卡等。
非法提供:某些个人信息仅因在个人信息主体授权同意范围外扩散,即可对个人信息主体权益带来重大风险,应判定为个人敏感信息。例如,性取向、存款信息、传染病史等。
滥用:某些个人信息在被超出授权合理界限时使用(如变更处理目的、扩大处理范围等),可能对个人信息主体权益带来重大风险,应判定为个人敏感信息。例如,在未取得个人信息主体授权时,将健康信息用于保险公司营销和确定个体保费高低。
表 B.1 个人敏感信息举例。
自定义属性收集免责说明
涉及到业务或者终端用户自身数据的相关信息,均需要客户的开发者通过代码埋点(人为编写数据收集代码)才能收集, SDK 不会主动进行收集。
客户应当保证数据来源的合法合规,或者已经取得相关方和终端用户授权后,才能通过神策软件产品收集自定义属性数据。
神策合规性自查说明
神策 SDK 合规性说明
神策 SDK 常规收集的数据类型只有“设备 ID”,主要用于分析。客户需要收集其他类型的数据,需要客户根据业务需求以及选择开启的神策 SDK 功能来做相应选择:
调用 -login:接口:需继续选择“用户 ID”
开启全埋点:需继续选择“产品交互”
开启崩溃收集:需继续选择“崩溃数据”
- 开启经纬度收集:需继续选择“精确位置”
另,客户可以根据其业务的调整及时更新隐私政策。
神策符合多个国家的数据相关法律法规要求
根据自查,神策软件产品符合《信息安全技术移动互联网应用(App)收集个人信息基本规范(草案)》的要求,也符合欧盟《通用数据保护条例》(GDPR)和美国《加州消费者隐私法案》(CCPA) 的要求。针对上述标准,神策 SDK 提供如下功能:
- 初始化后是否开始采集数据
- 针对当前 App 关闭 / 开启数据采集
- 禁止特定属性的采集
- 禁止特定埋点的采集
- 禁止特定埋点下的特定属性的采集
- 当前用户的识别 ID,用于导出数据
- 删除特定用户数据的功能
- 基于接口/工具删除数据的功能
基于《中华人民共和国网络安全法》的自查结果
根据自查,神策给客户提供的神策软件产品(包含 SDK),不违反《网络安全法》的强制性规定。
基于《中华人民共和国个人信息保护法》的自查结果
根据自查,神策给客户提供的神策软件产品(包含 SDK),不违反《个人信息保护法》的强制性规定。
基于《中华人民共和国数据安全法》的自查结果
根据自查,神策给客户提供的神策软件产品(包含 SDK),不违反《数据安全法》的强制性规定。
神策资质认证说明
信息安全管理认证
神策已通过信息安全管理体系认证 ISO 27001
神策已通过隐私信息管理体系ISO 27701
神策已通过质量管理体系认证 ISO 9001
神策已通过 CMMI 3 认证
神策分析云、神策营销云和神策广告云已通过网络安全等级保护三级备案及测评
行业资格
神策积极践行数据合规,并参与行业内众多合规活动。
2020 (第六届)中国互联网法治大会成立移动互联网用户信息安全保护相关工作组织,包括神策、阿里巴巴、字节跳动、华为、百度、小米在内的 46 家企/事业单位、研究机构等获准加入。
2020 年 11 月 27 日,工业和信息化部组织的全国 APP 个人信息保护监管会发布《APP 用户权益保护测评规范》10 项标准及《APP 收集使用个人信息最小必要评估规范》8 项标准, 作为互联网协会成员单位,神策创始人 & CEO 桑文锋宣读《APP 个人信息保护公开承诺书》,承诺书如下:
6.3.
安全审计报告
《神策 Android SDK 源码安全审计报告》
《神策 iOS SDK 源码安全审计报告》
《神策 JS SDK 源码安全审计报告》
《神策微信小程序源码安全审计报告》
《神策隐私政策》
客户可以联系神策客户成功/项目经理获取以上安全审计报告
名词注释
1.SDK (Software Development Kit,以下简称 SDK)是指软件开发工具包,神策提供的 SDK 包括但不限于 Android SDK 、iOS SDK、Web JS SDK 、小程序 SDK 、小游戏 SDK 、C SDK、C# SDK、Java SDK 等。预置属性是指 SDK 常规采集的属性信息。