Utilisation des budgets de confidentialité

Cette rubrique décrit les tâches qu’un fournisseur de données ayant implémenté la confidentialité différentielle peut effectuer pour gérer les budgets de confidentialité. Pour une introduction sur les budgets de confidentialité et la manière dont ils aident à empêcher les requêtes de révéler des informations sensibles sur une entité, voir Limiter la perte de confidentialité.

Un budget de confidentialité est créé automatiquement lorsque vous définissez un nom de budget de confidentialité dans le corps de la politique de confidentialité. Vous ne créez pas un budget de confidentialité indépendamment d’une politique de confidentialité.

Pour gérer un budget de confidentialité, vous avez besoin d’un privilège OWNERSHIP sur la politique de confidentialité qui précise le budget de confidentialité.

Afficher un budget de confidentialité

L’espace de noms de chaque budget de confidentialité est associé à une politique de confidentialité. Il peut y avoir plusieurs budgets de confidentialité portant le même nom, mais chacun est propre à une politique de confidentialité. Dans une politique de confidentialité, l’espace de noms d’un budget de confidentialité est en outre associé au compte de consommateur qui subit une perte de confidentialité. Par conséquent, plusieurs comptes peuvent avoir un budget de confidentialité avec le même nom et la même limite de perte de confidentialité, mais Snowflake comptabilise la perte de confidentialité cumulée pour chaque compte séparément.

L’affichage d’un budget de confidentialité vous permet de voir sa limite de perte de confidentialité ainsi que la perte de confidentialité cumulée subie par les utilisateurs associée au budget. Vous pouvez utiliser ces informations pour déterminer si la perte de confidentialité cumulée approche la limite du budget de confidentialité.

Note

La perte de confidentialité cumulée associée à un budget de confidentialité n’inclut pas la perte de confidentialité subie dans des comptes extérieurs au compte du fournisseur de données.

Vous disposez des deux possibilités suivantes pour afficher les budgets de confidentialité. Pour les deux options, un budget de confidentialité n’apparaît que si les analystes associés au budget de confidentialité ont subi une perte de confidentialité ou si un administrateur a réinitialisé le budget de confidentialité.

  • Pour interroger tous les budgets de confidentialité du compte, utilisez la vue PRIVACY_BUDGETS dans le schéma Account Usage. La vue PRIVACY_BUDGETS dans le schéma ACCOUNT USAGE contient tous les budgets de confidentialité du compte. Vous pouvez l’utiliser pour afficher les budgets de confidentialité associés à toutes les politiques de confidentialité que vous possédez et filtrer les résultats pour vous concentrer sur des budgets de confidentialité spécifiques par nom. Par exemple, pour se concentrer sur un budget de confidentialité spécifique associé à la politique de confidentialité patients_policy, vous pouvez exécuter la requête suivante :

    SELECT * FROM snowflake.account_usage.privacy_budgets
      WHERE policy_name='patients_policy' AND budget_name='analyst_budget';
    
    Copy
  • Pour afficher les budgets de confidentialité associés à une politique de confidentialité particulière, utilisez la fonction de table CUMULATIVE_PRIVACY_LOSSES. Vous pouvez utiliser la fonction de table CUMULATIVE_PRIVACY_LOSSES pour récupérer les budgets de confidentialité associés à une politique de confidentialité particulière. Contrairement à la vue PRIVACY_BUDGETS dans le schéma ACCOUNT USAGE, cette fonction n’a pas de quantité de latence fixe et renverra les valeurs en temps réel pour les pertes de confidentialité cumulées. Lors de l’appel de la fonction, le nom de la politique de confidentialité doit être entièrement qualifié.

    Par exemple, pour afficher les budgets de confidentialité spécifiés dans la politique my_policy_privacy, exécutez ce qui suit :

    SELECT *
      FROM TABLE(SNOWFLAKE.DATA_PRIVACY.CUMULATIVE_PRIVACY_LOSSES(
        'my_policy_db.my_policy_schema.my_policy_privacy'));
    
    Copy

Définir les paramètres de confidentialité pour un budget de confidentialité

Snowflake vous permet d’ajuster la limite du budget de confidentialité en matière de perte de confidentialité et le montant maximal du budget de confidentialité dépensé par agrégat (collectivement appelés epsilon dans la confidentialité différentielle). Vous définissez ces contrôles en spécifiant les paramètres suivants dans le corps de la politique de confidentialité :

  • BUDGET_LIMIT — Définit la limite du budget de confidentialité sur la perte de confidentialité cumulée.

  • MAX_BUDGET_PER_AGGREGATE – Définit le montant maximal du budget de confidentialité dépensé par agrégat (c’est-à-dire la perte de confidentialité maximale subie par chaque fonction d’agrégat dans une requête).

Par exemple, pour utiliser la commande ALTER PRIVACY POLICY pour ajuster les contrôles de confidentialité d’un budget de confidentialité existant, vous pouvez exécuter ceci :

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

Vous pouvez également définir ces contrôles lors de l’exécution de la commande CREATE PRIVACY POLICY pour créer la politique de confidentialité.

Prudence

Lors du changement du paramètre BUDGET_LIMIT, MAX_BUDGET_PER_AGGREGATE ou BUDGET_WINDOW, tout paramètre non spécifié dans votre commande ALTER PRIVACY POLICY revient à sa valeur par défaut. Ainsi, dans l’exemple précédent, le paramètre BUDGET_WINDOW, qui détermine la fréquence à laquelle Snowflake réinitialise le budget de confidentialité, reviendra à sa valeur par défaut.

Pour plus d’informations sur la configuration des contrôles de confidentialité, voir Ajuster les contrôles de confidentialité.

Actualisation du budget de confidentialité

À propos de la période d’actualisation

Régulièrement, Snowflake remet à 0 la perte de confidentialité cumulée d’un budget de confidentialité pour permettre aux analystes d’exécuter un nouvel ensemble de requêtes. Cette période d’actualisation est connue sous le nom de fenêtre budgétaire. Cette actualisation automatique permet aux analystes d’accéder aux nouvelles données dès qu’elles sont ajoutées à une table. Théoriquement, l’analyste n’a appris aucune information sur ces nouvelles données, il est donc opportun de le laisser exécuter davantage de requêtes.

Par défaut, la fenêtre budgétaire est hebdomadaire.

Modifier la période d’actualisation

Pour modifier la période d’actualisation du budget de confidentialité, mettez à jour la valeur budget_window de la politique de confidentialité privacy_budget. Par exemple :

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

Prudence

Lors du changement du paramètre BUDGET_LIMIT, MAX_BUDGET_PER_AGGREGATE ou BUDGET_WINDOW, tout paramètre non spécifié dans votre commande ALTER PRIVACY POLICY revient à sa valeur par défaut. Donc, dans l’exemple précédent, BUDGET_LIMIT et MAX_BUDGET_PER_AGGREGATE reviendront à leurs valeurs par défaut.

Réinitialiser la perte de confidentialité cumulée

Lorsque les analystes exécutent des requêtes sur des données protégées par une politique, Snowflake comptabilise la perte de confidentialité cumulée de ces requêtes. Vous pouvez appeler la procédure stockée RESET_PRIVACY_BUDGET pour remettre à 0 la perte de confidentialité cumulée, permettant aux analystes d’exécuter des requêtes supplémentaires.

La procédure stockée RESET_PRIVACY_BUDGET est destinée à réinitialiser le budget lorsque les analystes subissent par inadvertance une perte de confidentialité et souhaitent recommencer. N’oubliez pas que la perte de confidentialité est automatiquement définie sur 0 lorsque le budget de confidentialité est actualisé.

Seule la perte de confidentialité cumulée associée aux analystes du compte spécifié est remise à 0, même si le budget de confidentialité est associé aux analystes de plusieurs comptes.

Note

Lors de l’appel de RESET_PRIVACY_BUDGET, la perte de confidentialité cumulée n’est pas réinitialisée immédiatement. Elle est réinitialisée la prochaine fois qu’une requête entraîne une perte de confidentialité. Par conséquent, si vous affichez le budget de confidentialité après avoir appelé la fonction mais avant que la première requête n’entraîne une perte de confidentialité, la perte de confidentialité cumulée ne sera pas égale à 0.

Exemple

Voici un exemple de remise à zéro du nombre d’utilisations de confidentialité pour tous les utilisateurs exécutant des requêtes dans le compte companyorg.account_123 :

CALL SNOWFLAKE.DATA_PRIVACY.RESET_PRIVACY_BUDGET(
  'my_policy_db.my_policy_schema.my_policy',
  'analyst_budget',
  'companyorg',
  'account_123');
Copy