WWDC2023: Get started with privacy manifests

1,660 阅读4分钟

WWDC2023 Session 10060: Get started with privacy manifests

简介

去年,Apple 开发了 Privacy Nutrition Labels 功能,App 必须在 App Store 声明隐私行为。比如,如何采集和使用用户数据,确保相关行为对用户透明。而在更早之前,大概 2020 年的时候,开发了 App Tracking Transparency 功能,确保用户对于跨 App 追踪行为能够有一定控制。

但是这两个功能都存在一些痛点,比如:

  • 开发者难以知道 App 集成的三方 SDK 具备哪些隐私行为,因此难以在 Privacy Nutrition Labels 上正确体现

  • App Tracking Transparency 缺乏配套能力,管控力较弱

本文为 WWDC 2023 Session 10060,介绍了新引入的 privacy manifest 功能,以及一些相关的功能变化。阐述如何解决前述的一些痛点问题。

本文主要从以下四个方面,介绍了相关改变:

  • Privacy manifest: 通过隐私清单,声明 App/SDK 隐私行为

  • Privacy report: Xcode 可以通过隐私清单生成隐私报告,更方便填写 Privacy Nutrition Labels

  • Tracking domains: 声明哪些网络域名和追踪用户有关,从系统层面,在用户授权追踪行为前,阻止相关网络请求发出

  • Required reason APIs: 对于一部分可以用来生成用户指纹的 API,必须声明 App 使用此 API 的目的

Privacy manifest

Privacy manifest 是一个比较强大的功能,本文的后续章节都有涉及,本节重点讲下对三方 SDK 的影响。

image

三方 SDK 的开发者,可以在 Xcode 创建 xcprivacy 后缀的文件。

image

文件大概包含以下内容:

  • Privacy Nutrition Label Types - 隐私标签类型

  • Privacy Tracking Enabled - 是否追踪用户

App 开发者集成了对应 SDK 后,就可以从这个 xcprivacy 文件,知道三方 SDK 的隐私行为,在下一节 Privacy report 里,还会介绍如何根据这些 xcprivacy 文件生成隐私报告。

Privacy report

image

打包完成后,可以使用 Archives 里的 Generate Privacy Report 功能,生成 PDF 格式的隐私报告,报告如下图所示:

image

这份报告会整合 App 里的 xcprivacy 文件,说清楚每个 framework 涉及的隐私行为。

开发者可以借助这个报告,更轻松的理解、审核和描述 App 的隐私行为。

Tracking domains

开发人员不打算在未经许可的情况下跟踪人员,但在某些 Edge case 下,可能会创建用于跟踪用户的非预期网络连接。例如,许多第三方 SDK 在跟踪人员之前会检查跟踪权限状态。但是,某些第三方 SDK 需要您在用户未授予权限时手动禁用跟踪。第三方 SDK 可能默认跟踪,除非您通过其库中的函数或某些配置更改另行指定。这可能会导致 Edge cases。

现在,开发者可以分离 tracking domains 和非 tracking domains,iOS 17 起,如果用户没有授权追踪行为,发送到 tracking domains 的网络请求会被系统阻止而失败。

image

声明 tracking domains 的方式,也是通过 xcprivacy 文件来实现。

image

另外 Xcode Instruments 也提供了相关功能,帮助开发者识别, App 发往哪些 domain 的网络请求可能存在追踪用户的行为。

Required reason APIs

一些 App 会使用设备信息,来生成指纹,用于识别设备和用户。即使用户授权了用户追踪行为,Apple 也不允许生成指纹的行为。因此在 iOS 17 里,新加入了 Required reason APIs

NSFileSystemFreeSize 为例,这个 API 可用于一些功能行为,比如,获取磁盘剩余空间后,决定是否可以下载文件。但是这个 API 也可用于生成设备指纹。

iOS 17 开始,使用这些 API,需要在 xcprivacy 文件里说明使用的目的,如下图所示:

image

开发者可以在 Approved list 里选择 App 使用这些 API 的目的,如果存在 list 没有的目的,但是开发者认为对用户有好处,可以给 Apple 反馈。

具体的 Required reason APIs 有哪些,还没公布,但是 Session 里有提到,总数量不会太多。

开发者需要做什么

Apple 的 Plan

  • 2023 秋季开始,Apple 会识别 privacy-impacting SDK,如果这些 SDK 没包含 privacy manifest,Apple 会发邮件给 App 的 开发者

  • 2024 春节开始,Apple Review 里会包含相关规则

所以,开发者需要做以下事情

  • 对于 App 开发者

    • 让 SDK 开发者提供 manifest
    • 使用 Xcode Privacy Report
  • 对于 SDK 开发者

    • 使用 signature 和 manifest(PS:signature 是为了保证 SDK 不被篡改,因为和隐私相关较弱,本文没有详细介绍)
  • 对于所有开发者

    • 声明 tracking domains 和 required reason API usage