我刚刚升级到 18.04,想尝试一下 livepatch。阅读完 Livepatch 服务条款网页 (https://www.ubuntu.com/legal/terms-and-policies/livepatch-terms-of-service)我对个人资料部分的这两段话有点疑惑:
我们也可能收集某些非个人身份信息,这些信息位于您的计算机上。收集的信息可能包括与数据传输频率相关的统计信息,以及与软件和配置相关的性能指标。您同意 Canonical 可以保留和使用这些信息。
如果适用法律或法院、行政机构或其他政府机构的命令或要求需要遵守,Canonical 可能会披露您发送、发布或发表的任何或所有个人数据和内容。您的个人数据的所有其他使用均受隐私政策的约束。
我理解,为了进行实时修补,Canonical 需要了解我的系统的一些信息,例如内核版本。此外,通过我的 SSO 帐户和令牌,他们知道我的电子邮件地址和姓名。
到目前为止一切顺利。但我想知道 Canonical 还需要了解我的系统的哪些信息。上面的文字对此含糊其辞。“统计数据”和“性能指标”听起来并不是实时补丁服务本身所必需的。此外,如果这些数据真的是“不可识别个人身份的”,为什么 Canonical 在后面一段中要求同意他们可以根据要求向行政机构或政府机构披露这些数据?
哪些数据会定期或一次性传输给 Canonical?我如何调查传输的内容?我如何确保它不会突然改变而传输超出我想要的数据?
这是一个技术问题。我确实不是想要讨论 Canonical 的服务条款或法律问题。我真的想要一种技术方法来查找我在注册之前传输的内容。
答案1
鉴于 livepatch 客户端是专有的,我没有完整的答案。
也就是说,客户端(/snap/canonical-livepatch/*/canonical-livepatchd
)是用 Go 编写的。使用深入研究,这里有一些信息可供参考:
(dlv) bt
0 0x00000000006ad140 in main.(*client).check
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:212
1 0x00000000006acfeb in main.(*client).Check
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:200
2 0x00000000006b8415 in main.refresh
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:60
3 0x00000000006bf957 in main.newDaemon.func1
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/daemon.go:76
4 0x00000000006b86a3 in main.(*refreshLoop).loop
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:120
5 0x00000000006c0bfd in main.(*service).Start.func1
at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/service.go:151
6 0x0000000000457b31 in runtime.goexit
at /home/c/.gobrew/versions/1.10/src/runtime/asm_amd64.s:2361
(dlv) locals
rendered.cap = 0
rendered.len = 0
rendered.ptr = *uint8 nil
status = main.ClientStatus {ClientVersion: "8.0.1", MachineId: "bfcf169468f641528ac653c41ff1797d", MachineToken: "",...+7 more}
(dlv) print status
main.ClientStatus {
ClientVersion: "8.0.1",
MachineId: "bfcf169468f641528ac653c41ff1797d",
MachineToken: "",
Architecture: "x86_64",
CpuModel: "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz",
LastCheck: time.Time {
wall: 0,
ext: 0,
loc: *time.Location nil,},
BootTime: time.Time {
wall: 0,
ext: 63662149770,
loc: *(*time.Location)(0x963f60),},
ApplyTime: time.Time {
wall: 0,
ext: 0,
loc: *time.Location nil,},
Uptime: 3472,
Kernels: []main.KernelStatus len: 1, cap: 1, [
(*main.KernelStatus)(0xc4201883c0),
],}
变量中的字段status
包括:
- 客户端版本
- 机器 ID(来自
/etc/machine-id
) - 机器令牌(Ubuntu One 令牌?)
- CPU 模型和(OS?)架构
- 最后检查时间
- 启动时间(启动所需的时间?)
- 应用时间(??——可能是上次应用更新的时间?)
- 正常运行时间
- 内核列表
启动时间和正常运行时间可以被视为纳入统计和性能指标中。
再次强调,这只是一个起点。您可以根据自己的意愿来决定,希望其他人可以提供更明确的信息。
我如何确保它不会突然改变而传输超出我想要的内容?
你不能。源代码不可用,并且 snap 会自动刷新,如果我没记错的话。
答案2
我询问了 Canonical 销售团队,实时补丁服务会传输哪些数据。他们这样回复我:
这是我们发送的有关客户的信息:
- /etc/machine-id 中的机器 ID
- 来自 livepatch 服务器的机器令牌
- 机器结构
- 机器CPU型号
- 客户端上次更新时间是什么时候
- 系统何时启动
- 上次使用 livepatch 是什么时候?
- 当前系统正常运行时间
- 内核版本
他们还提到,他们还传输了一些快照统计数据,这些数据可能会随着 GDPR 要求而改变。