プライバシーコントロールの調整

このトピックでは、Snowflakeが結果にノイズを付加するために使用するプライバシー制御調整のために、データ所有者が使用できるテクニックについて説明します。Snowflakeでは、このトピックで紹介されている順番でこれらのオプションを試してみることをお勧めします。

Snowflakeは、プライバシーバジェットのプライバシーロスに対する上限と、集計ごとに使用されるプライバシーバジェットの最大量の両方を調整するためのパラメーターを提供します(差分プライバシーの文献では、 イプシロン と総称されます)。

ステップ1: プライバシードメインを調整する

プライバシーバジェットを調整する前に、プライバシー保護されたテーブルの列に設定されたプライバシードメインを調整することを検討する必要があります。Snowflakeでは列のすべての値をわかりにくくするのに十分なノイズを付加するため、値の範囲が広いほど、より多くのノイズを付加する必要があります。以下のガイドラインに従います。

  • ノイズを増やしたい場合は、実際の値よりも大きい値や小さい値を含むように範囲を広げてください。プライバシードメインは、実際の値ではなく、すべての 可能な 値を定義することに留意してください。

  • ノイズを減らしたい場合は、プライバシードメインを狭めて、有用な範囲外の値を除外するかクランプします。プライバシードメイン外の値を扱う方法に関する情報については、 プライバシードメイン外の値 をご参照ください。

注釈

アナリストは、ノイズを減らすためにプライバシードメインを狭めることもできます。詳細については、 結果を改善するためにプライバシードメインを狭める をご参照ください

ステップ2: MAX_BUDGET_PER_AGGREGATE パラメーターを調整する

プライバシードメインを調整しても、まだプライバシー制御の微調整が必要な場合は、プライバシーバジェットに影響する設定を変更してみることができます。プライバシーポリシーの本文にある MAX_BUDGET_PER_AGGREGATE パラメーターを調整することで、クエリ内の各集計にどれだけのプライバシーバジェットを費やすことができるか(つまり、集計によってどれだけのプライバシーロスが発生する可能性があるか)を制御します。このパラメーターを調整すると、各集計クエリに追加されるノイズの量が変わり、プライバシーバジェットの上限に達する前に実行できる集計の数も変わります。

このパラメーターは、各クエリではなく、各集計に対してレベルを設定します。たとえば、 SELECT COUNT(*), AVG(a) ... クエリに COUNT(*)AVG(a) の2つの集計があるとします。

クエリ内の各集計で発生する最大のプライバシーロスを調整するには、 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 ステートメントにパラメーターを含めないと、デフォルト値にリセットされます。