Ajuster les contrôles de confidentialité

Cette rubrique décrit les techniques que le propriétaire des données peut utiliser pour ajuster les contrôles de confidentialité que Snowflake utilise pour introduire du bruit dans les résultats. Snowflake recommande d’essayer ces options dans l’ordre dans lequel elles sont présentées dans cette rubrique.

Snowflake fournit des paramètres permettant d’ajuster à la fois la limite du budget de confidentialité en matière de perte de confidentialité et le montant maximal du budget de confidentialité utilisé par agrégat (collectivement appelés epsilon dans la littérature sur la confidentialité différentielle).

Étape 1 : Ajustez les domaines de confidentialité

Avant d’ajuster le budget de confidentialité, vous devez envisager d’ajuster le domaine de confidentialité défini sur les colonnes de la table protégée par la confidentialité. Snowflake introduit suffisamment de bruit pour masquer toutes les valeurs d’une colonne. Par conséquent, plus la plage de valeurs est large, plus le bruit à introduire est important. Suivez ces indications :

  • Si vous souhaitez augmenter le bruit, élargissez la plage pour inclure des valeurs supérieures ou inférieures aux valeurs réelles. N’oubliez pas que le domaine de confidentialité définit toutes les valeurs possibles, pas les valeurs réelles.

  • Si vous souhaitez réduire le bruit, réduisez le domaine de confidentialité pour exclure ou limiter les valeurs en dehors d’une plage utile. Pour plus d’informations sur la manière dont les valeurs en dehors du domaine de confidentialité sont traitées, voir Valeurs en dehors d’un domaine de confidentialité.

Note

L’analyste peut également restreindre un domaine de confidentialité pour réduire le bruit. Pour plus d’informations, voir Restriction d’un domaine de confidentialité pour améliorer les résultats.

Étape 2 : Ajustez le paramètre MAX_BUDGET_PER_AGGREGATE

Si vous avez ajusté le domaine de confidentialité, mais que vous devez encore affiner vos contrôles de confidentialité, vous pouvez commencer à modifier les paramètres qui affectent le budget de confidentialité. L’ajustement du paramètre MAX_BUDGET_PER_AGGREGATE dans le corps d’une politique de confidentialité permet de contrôler la part du budget de confidentialité qui peut être dépensée pour chaque agrégat dans une requête (c’est-à-dire la perte de confidentialité qu’un agrégat peut subir). Le réglage de ce paramètre modifie la quantité de bruit ajoutée à chaque requête agrégée, ainsi que le nombre d’agrégats qui peuvent être exécutés avant que la limite du budget de confidentialité ne soit atteinte.

Le paramètre définit le niveau de chaque agrégat, et non de chaque requête. À titre d’exemple, la requête SELECT COUNT(*), AVG(a) ... a deux agrégats : COUNT(*) et AVG(a).

Pour ajuster la perte de confidentialité maximale subie par chaque agrégat dans une requête, utilisez la commande ALTER PRIVACY POLICY pour définir une nouvelle valeur pour le paramètre MAX_BUDGET_PER_AGGREGATE. Par exemple :

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

Étape 3 : Ajustez la limite du budget de confidentialité

Si l’ajustement d’autres contrôles de confidentialité ne vous donne pas les résultats recherchés, vous pouvez ajuster la limite du budget de confidentialité en matière de perte de confidentialité. Alors que les autres contrôles de confidentialité affectent la quantité de bruit dans les résultats de requête, le réglage de la limite budgétaire affecte le nombre de requêtes qu’un analyste peut exécuter.

Chaque fois qu’un analyste exécute une requête avec des fonctions d’agrégation sur une table protégée par la confidentialité, la perte de confidentialité cumulée de l’analyste est incrémentée et le nombre estimé d’agrégats restants est diminué. Lorsque la perte de confidentialité cumulée atteint la limite du budget de confidentialité, les analystes ne peuvent pas exécuter une autre requête. Si vous souhaitez maximiser l’utilité de vos données pour l’analyste, vous pouvez baser votre limite budgétaire sur le nombre de requêtes que les analystes, selon vous, exécuteront pendant chaque fenêtre budgétaire.

Note

N’oubliez pas que la perte cumulative de confidentialité est réinitialisée à 0 selon un calendrier fixe, tel que défini par la fenêtre budgétaire <label-diff_privacy_admin_privacy_budget_refresh_definition>. Lorsque le budget de confidentialité est réinitialisé, l’analyste peut exécuter un nouvel ensemble de requêtes même s’il a atteint la limite budgétaire au cours de la fenêtre budgétaire précédente.

La fonction ESTIMATE_REMAINING_DP_AGGREGATES permet d’estimer le nombre de requêtes restantes pour un budget de confidentialité. En général, ce nombre est basé sur le nombre d’agrégats dans chaque requête et la valeur du paramètre MAX_BUDGET_PER_AGGREGATE que vous avez spécifié dans le corps de la politique de confidentialité. Pour consulter un exemple détaillé d’utilisation de la fonction ESTIMATE_REMAINING_DP_AGGREGATES afin d’examiner les effets des requêtes sur le budget de confidentialité, voir Suivi des dépenses du budget de confidentialité.

Après avoir utilisé la fonction ESTIMATE_REMAINING_DP_AGGREGATES pour avoir une idée du budget de confidentialité dépensé sur une série de requêtes, vous pouvez ajuster le paramètre BUDGET_LIMIT dans le corps de la politique de confidentialité pour définir une nouvelle limite de budget de confidentialité. Par exemple :

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

Important

Notez que cette commande inclut le paramètre MAX_BUDGET_PER_AGGREGATE qui a été défini précédemment. Si vous n’incluez pas de paramètre dans l’instruction ALTER PRIVACY POLICY, elle se réinitialise à sa valeur par défaut.