调整隐私控制

本主题描述了数据所有者可以用以调整 Snowflake 用来在结果中引入噪声的隐私控制的技术。Snowflake 建议按照本主题中介绍的顺序尝试这些选项。

Snowflake 提供参数来调整隐私预算对隐私损失的限制和每个汇总操作使用的最大隐私预算(在差分隐私文献中统称为 epsilon)。

步骤 1:调整隐私域

在调整隐私预算之前,应考虑调整隐私保护表中列的隐私域设置。Snowflake 引入的噪声足以掩盖一列中的所有数值,因此数值范围越大,必须引入的噪声就越多。请遵循以下指导原则:

  • 如果您想增加噪声,可以扩大范围,将大于或小于实际值的数值包括在内。请记住,隐私域定义的是所有 可能 的值,而不是实际值。

  • 如果想减少噪声,可缩小隐私域,以排除或限制有用范围之外的值。有关如何处理隐私域外值的信息,请参阅 隐私域外的值

备注

分析师还可以缩小隐私域以减少噪声。有关更多信息,请参阅 缩小隐私域以改善结果

步骤 2:调整 MAX_BUDGET_PER_AGGREGATE 参数

如果您已经调整了隐私域,但仍需要对隐私控制进行微调,您可以修改影响隐私预算的设置。调整隐私策略正文中的 MAX_BUDGET_PER_AGGREGATE 参数,可以控制查询中每个汇总操作的隐私预算(即汇总可能造成的隐私损失)。调整该参数可改变添加到每个汇总查询中的噪声量,以及在达到隐私预算限制前可执行的汇总次数。

该参数设置的是每个汇总的级别,而不是每个查询的级别。例如,查询 SELECT COUNT(*), AVG(a) ... 有两个汇总:COUNT(*)AVG(a)

要调整查询中每个汇总产生的最大隐私损失,请使用 ALTER PRIVACY POLICY 命令为 MAX_BUDGET_PER_AGGREGATE 参数设置新值。例如:

ALTER PRIVACY POLICY users_policy SET BODY ->
  PRIVACY_BUDGET(BUDGET_NAME=>'analysts', MAX_BUDGET_PER_AGGREGATE=>0.1);
Copy

步骤 3:调整隐私预算限额

如果调整其他隐私控制并不能达到您想要的效果,您可以调整隐私预算对隐私损失的限制。其他隐私控制会影响查询结果中的噪声量,而调整预算限制则会影响分析师可以运行的查询次数。

分析师每次针对受隐私保护的表运行带有聚合函数的查询时,分析师的累计隐私损失都会递增,剩余聚合函数的估计数量也会递减。当累计隐私损失达到隐私预算上限时,分析师就不能再运行其他查询。如果您想最大限度地提高数据对分析师的有用性,可以根据您认为分析师在每个预算窗口中将运行的查询次数来确定预算限额。

备注

请记住,累积隐私损失会按照 预算窗口 定义的固定时间表重置为 0。当重新设置隐私预算时,即使在上一个预算窗口中达到了预算限制,分析师也可以运行一组新的查询。

ESTIMATE_REMAINING_DP_AGGREGATES 函数有助于估算隐私预算的剩余查询次数。一般来说,这个数字基于每次查询中的汇总数量以及您在隐私策略正文中指定的 MAX_BUDGET_PER_AGGREGATE 参数值。有关使用 ESTIMATE_REMAINING_DP_AGGREGATES 函数查看查询对隐私预算的影响的扩展示例,请参见 跟踪隐私预算消耗

使用 ESTIMATE_REMAINING_DP_AGGREGATES 功能了解一系列查询消耗的隐私预算后,您可以调整隐私策略正文中的 BUDGET_LIMIT 参数,设置新的隐私预算限制。例如:

ALTER PRIVACY POLICY users_policy SET BODY ->
  PRIVACY_BUDGET(BUDGET_NAME=>'analysts',
  BUDGET_LIMIT=>300,
  MAX_BUDGET_PER_AGGREGATE=>0.1);
Copy

重要

请注意,该命令包括之前设置的 MAX_BUDGET_PER_AGGREGATE 参数。如果不在 ALTER PRIVACY POLICY 语句中包含参数,它将重置为默认值。

语言: 中文