Mise en œuvre de la protection de la confidentialité au niveau de l’entité à l’aide de politiques d’agrégation¶
Le respect de la vie privée au niveau de l’entité renforce les protections de la confidentialité fournies par les politiques d’agrégation. Avec la confidentialité au niveau des entités, Snowflake peut s’assurer qu’un groupe d’agrégation contient un certain nombre d’entités et pas seulement un certain nombre de lignes.
La majorité des tâches et des considérations liées aux politiques d’agrégation sont les mêmes, que vous mettiez en œuvre ou non la protection de la confidentialité au niveau de l’entité. Pour obtenir des informations générales sur l’utilisation des politiques d’agrégation, consultez Politiques d’agrégation.
À propos de la protection de la confidentialité au niveau de l’entité¶
Une entité fait référence à un ensemble d’attributs appartenant à un objet logique (par exemple, un profil d’utilisateur ou des informations sur un foyer). Ces attributs peuvent être utilisés pour identifier une entité au sein d’un ensemble de données. La confidentialité au niveau de l’entité est une fonction des technologies améliorant la confidentialité (PET) qui protège la confidentialité d’une entité stockée dans un ensemble de données partagé. Il garantit que les requêtes ne peuvent pas exposer les attributs sensibles d’une entité, même si ces attributs se trouvent dans plusieurs enregistrements.
Pour assurer la confidentialité au niveau de l’entité, Snowflake vous permet de spécifier quels attributs peuvent être utilisés pour identifier une entité (une clé d’entité). Cela permet à Snowflake d’identifier tous les enregistrements qui appartiennent à une entité particulière au sein d’un ensemble de données. Par exemple, si la clé de l’entité est définie comme la colonne email
, Snowflake peut déterminer que tous les enregistrements contenant email=joe.smith@example.com
appartiennent à la même entité.
Politiques d’agrégation sans confidentialité au niveau de l’entité¶
Par défaut, les politiques d’agrégation obligent les analystes à exécuter des requêtes qui agrègent les données plutôt que d’extraire des lignes individuelles, ce qui permet d’assurer la confidentialité au niveau des lignes. Cependant, la confidentialité au niveau des lignes n’empêche pas une requête d’exposer les attributs d’une entité lorsque ces attributs se trouvent dans plusieurs lignes (par exemple, dans une table contenant des données transactionnelles).
Par exemple, supposons qu’un service de diffusion en continu, ActonViz, dispose d’une table transactionnelle contenant l’adresse e-mail (user_id
) et le foyer (household_id
) de chaque téléspectateur lorsqu’il regarde des émissions.
user_id |
household_id |
program_id |
watch_time |
heure_début |
---|---|---|---|---|
dave_sr@company.com |
12345 |
1 |
29 |
2023-09-12 09:00 |
mary@bazco.com |
23485 |
1 |
30 |
2023-09-12 09:00 |
dave_sr@company.com |
12345 |
6 |
18 |
2023-09-11 13:00 |
joe@jupiterlink.com |
85456 |
6 |
25 |
2023-09-15 22:00 |
junior@example.com |
12345 |
5 |
30 |
2023-09-13 11:00 |
ActonViz peut utiliser une politique d’agrégation pour forcer les annonceurs à agréger les données dans des groupes contenant au moins deux enregistrements. Cela empêche les annonceurs de récupérer les données d’un enregistrement individuel (confidentialité au niveau de la ligne). Si chaque téléspectateur et chaque ménage n’apparaissait qu’une seule fois dans la table, cela suffirait à protéger leur confidentialité.
Cependant, la requête d’un annonceur peut toujours obtenir des informations sur les téléspectateurs et leurs foyers. Une requête pourrait créer un groupe composé uniquement d’enregistrements du ménage 12345
ou, pire encore, un groupe composé uniquement d’enregistrements du téléspectateur dave_sr
. Dans les deux cas, le nombre d’enregistrements dans le groupe répondrait aux exigences fixées par ActonViz (minimum de deux enregistrements par groupe).
Politiques d’agrégation avec confidentialité au niveau de l’entité¶
Pour assurer la confidentialité au niveau de l’entité, Snowflake vous permet de spécifier une clé d’entité lors de l’affectation d’une politique d’agrégation à une table ou à une vue. Une fois la clé d’entité définie, les groupes renvoyés par une requête sur une table ou une vue soumise à des contraintes d’agrégation doivent contenir le nombre spécifié d’entités et pas seulement un nombre spécifié de lignes.
Dans l’exemple précédent, supposons que ActonViz définisse household_id
comme la clé de l’entité parce qu’il identifie chaque ménage de manière unique. La confidentialité de chaque ménage est désormais préservée. Avant la modification, un groupe pouvait être entièrement constitué d’enregistrements où household_id = 12345
, mais il doit désormais contenir au moins deux valeurs distinctes de household_id
.
Notez que la clé d’entité n’est pas toujours la même que la clé primaire d’une table. Dans cet exemple, la table peut utiliser user_id
comme clé primaire, car elle identifie de manière unique un spectateur. Mais dans ce cas, ActonViz veut protéger la confidentialité d’un foyer entier, composé de plusieurs téléspectateurs et a donc choisi household_id
comme clé d’entité.
À propos des tailles de groupe minimales¶
Chaque politique d’agrégation spécifie une taille de groupe minimale. Sans confidentialité au niveau de l’entité, la taille minimale du groupe définit le nombre d’enregistrements qui doivent être inclus dans un groupe d’agrégation. Lorsqu’une clé d’entité est spécifiée, la taille minimale du groupe définit le nombre d’entités qui doivent être incluses dans un groupe d’agrégation.
Les politiques de niveau colonne suivantes n’affectent pas la manière dont Snowflake calcule s’il y a suffisamment d’entités dans un groupe d’agrégation :
Les politiques de projection n’ont aucun effet.
Les politiques de masquage n’ont aucun effet. Lorsqu’une politique de masquage est attribuée à la colonne GROUP BY, les groupes d’agrégation formés par la requête sont basés sur les valeurs renvoyées par la politique de masquage. Chacun de ces groupes doit disposer d’un nombre suffisant d’entités.
Dans les cas où les références de noms sont utilisées plusieurs fois (par exemple, dans les opérateurs JOIN ou UNION), Snowflake applique la taille minimale du groupe pour chaque référence de nom de chaque ensemble de données séparément. Cela s’applique même lorsque la référence renvoie plusieurs fois au même ensemble de données.
Renforcer la protection de la confidentialité au niveau de l’entité grâce à des politiques d’agrégation¶
Pour appliquer la confidentialité au niveau de l’entité avec des politiques d’agrégation, procédez comme suit :
Lorsque vous exécutez la commande CREATE AGGREGATION POLICY pour créer la politique d’agrégation, spécifiez le nombre d’entités qui doivent être incluses dans chaque groupe d’agrégation.
Définissez la clé d’entité lorsque vous affectez la politique d’agrégation à une table ou à une vue.
Spécifier le nombre minimum d’entités¶
La syntaxe de création d’une politique d’agrégation avec CREATE AGGREGATION POLICY ne change pas si vous utilisez une clé d’entité pour obtenir une confidentialité au niveau de l’entité. Vous pouvez toujours utiliser l’argument MIN_GROUP_SIZE de la fonction AGGREGATION_CONSTRAINT pour spécifier une taille de groupe minimale. Dès que vous définissez une clé d’entité, la taille minimale du groupe passe d’une exigence sur le nombre d’enregistrements dans un groupe à une exigence sur le nombre d’entités dans un groupe.
Par exemple, la commande suivante crée une politique d’agrégation de taille de groupe minimale égale à 5. Tant que vous définissez une clé d’entité lors de l’affectation de la politique à une table, chaque groupe d’agrégation doit contenir au moins 5 entités.
CREATE AGGREGATION POLICY my_agg_policy
AS () RETURNS AGGREGATION_CONSTRAINT ->
AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Pour plus de détails sur la création de politiques d’agrégation, y compris un exemple de politique d’agrégation conditionnelle qui applique des restrictions différentes selon les circonstances, voir Création d’une politique d’agrégation.
Définir une clé d’entité¶
Vous définissez une clé d’entité pour une table lorsque vous affectez la politique d’agrégation à la table ou à la vue. Vous pouvez définir la clé d’entité lorsque crée une nouvelle table ou vue, ou lorsque met à jour une table ou une vue existante.
Définir une clé d’entité pour les tables et les vues existantes¶
Lorsque vous exécutez la commande ALTER TABLE … SET AGGREGATION POLICY ou la commande ALTER VIEW … SET AGGREGATION POLICY pour affecter la politique d’agrégation, utilisez la clause ENTITY KEY pour spécifier les colonnes de la table ou de la vue qui contiennent les attributs d’identification d’une entité (c’est-à-dire la clé d’entité).
Par exemple, pour créer une clé d’entité tout en affectant une politique d’agrégation my_agg_policy
à une table viewership_log
, exécutez :
ALTER TABLE viewership_log
SET AGGREGATION POLICY my_agg_policy
ENTITY KEY (first_name,last_name);
Comme les colonnes first_name
et last_name
sont la clé de l’entité, la politique d’agrégation peut déterminer que toutes les lignes où first_name = joe
et last_name = peterbilt
appartiennent à la même entité.
Spécifier une clé d’entité pour les nouvelles tables et vues¶
Lorsque vous exécutez la commande CREATE TABLE … WITH AGGREGATION POLICY ou la commande CREATE VIEW … WITH AGGREGATION POLICY pour affecter la politique d’agrégation, utilisez la clause ENTITY KEY pour spécifier les colonnes de la table ou de la vue qui contiennent les attributs d’identification d’une entité.
Par exemple, pour créer une nouvelle table t1
tout en attribuant une politique d’agrégation et en définissant une clé d’entité, exécutez :
CREATE TABLE t1
WITH AGGREGATION POLICY my_agg_policy
ENTITY KEY (first_name,last_name);
Comme les colonnes first_name
et last_name
sont la clé de l’entité, la politique d’agrégation peut déterminer que toutes les lignes où first_name = joe
et last_name = peterbilt
appartiennent à la même entité.
Requête sur une table soumise à des contraintes d’agrégation¶
Les conditions requises pour l’interrogation d’une table soumise à des contraintes d’agrégation qui possède une clé d’entité sont les mêmes que celles requises pour l’interrogation d’une table qui n’en possède pas. Pour obtenir des informations sur les types de requêtes conformes à ces exigences, consultez Conditions des requêtes.