Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Lorsque vous accordez des autorisations à Lake Formation sur une table du catalogue de données, vous pouvez inclure des spécifications de filtrage des données afin de restreindre l'accès à certaines données dans les résultats des requêtes et les moteurs intégrés à Lake Formation. Lake Formation utilise le filtrage des données pour garantir la sécurité au niveau des colonnes, au niveau des lignes et au niveau des cellules. Vous pouvez définir et appliquer des filtres de données sur des colonnes imbriquées si vos données sources contiennent des structures imbriquées.
Grâce aux fonctionnalités de filtrage des données de Lake Formation, vous pouvez mettre en œuvre les niveaux de sécurité des données suivants.
Sécurité au niveau des colonnes
L'octroi d'autorisations sur une table du catalogue de données avec sécurité au niveau des colonnes (filtrage des colonnes) permet aux utilisateurs de n'afficher que les colonnes spécifiques et les colonnes imbriquées auxquelles ils ont accès dans la table. Prenons l'persons
exemple d'une table utilisée dans plusieurs applications pour une grande entreprise de communication multirégionale. L'octroi d'autorisations sur les tables du catalogue de données avec filtrage par colonne peut empêcher les utilisateurs qui ne travaillent pas dans le service des ressources humaines de voir des informations personnelles identifiables (PII) telles qu'un numéro de sécurité sociale ou une date de naissance. Vous pouvez également définir des politiques de sécurité et n'autoriser l'accès qu'à des sous-structures partielles de colonnes imbriquées.
Sécurité au niveau des lignes
L'octroi d'autorisations sur une table du catalogue de données avec sécurité au niveau des lignes (filtrage des lignes) permet aux utilisateurs de n'afficher que les lignes de données spécifiques auxquelles ils ont accès dans la table. Le filtrage est basé sur les valeurs d'une ou de plusieurs colonnes. Vous pouvez inclure des structures de colonnes imbriquées lorsque vous définissez des expressions de filtre de ligne. Par exemple, si les différents bureaux régionaux de l'entreprise de communication disposent de leur propre service des ressources humaines, vous pouvez limiter les dossiers personnels que les employés des ressources humaines peuvent consulter uniquement aux dossiers des employés de leur région.
Sécurité au niveau des cellules
La sécurité au niveau des cellules combine le filtrage des lignes et le filtrage des colonnes pour créer un modèle d'autorisations extrêmement flexible. Si vous visualisez les lignes et les colonnes d'un tableau sous forme de grille, en utilisant la sécurité au niveau des cellules, vous pouvez restreindre l'accès à des éléments individuels (cellules) de la grille n'importe où dans les deux dimensions. En d'autres termes, vous pouvez restreindre l'accès aux différentes colonnes en fonction de la ligne. Ceci est illustré par le schéma suivant, dans lequel les colonnes restreintes sont ombrées.

En reprenant l'exemple de la table des personnes, vous pouvez créer un filtre de données au niveau de la cellule qui restreint l'accès à la colonne des adresses postales si la colonne du pays est définie sur « Royaume-Uni », mais autorise l'accès à la colonne des adresses postales si la colonne du pays est définie sur « États-Unis ».
Les filtres s'appliquent uniquement aux opérations de lecture. Par conséquent, vous ne pouvez accorder que l'autorisation à la SELECT
Lake Formation avec des filtres.
Sécurité au niveau des cellules sur les colonnes imbriquées
Lake Formation vous permet de définir et d'appliquer des filtres de données avec une sécurité au niveau des cellules sur des colonnes imbriquées. Cependant, les moteurs d'analyse intégrés tels qu'Amazon Athena, Amazon EMR et Amazon Redshift Spectrum permettent d'exécuter des requêtes sur des tables imbriquées gérées par Lake Formation avec une sécurité au niveau des lignes et des colonnes.
Pour connaître les limitations, veuillez consulter Limites du filtrage des données.
Rubriques
Filtres de données dans Lake Formation
Vous pouvez implémenter la sécurité au niveau des colonnes, des lignes et des cellules en créant des filtres de données. Vous sélectionnez un filtre de données lorsque vous accordez l'autorisation SELECT
Lake Formation sur les tables. Si votre table contient des structures de colonnes imbriquées, vous pouvez définir un filtre de données en incluant ou en excluant les colonnes enfants et définir des expressions de filtre au niveau des lignes sur les attributs imbriqués.
Chaque filtre de données appartient à une table spécifique de votre catalogue de données. Un filtre de données inclut les informations suivantes :
-
Nom du filtre
-
Le catalogue IDs de la table associée au filtre
-
Nom de la table
-
Nom de la base de données contenant la table
-
Spécification des colonnes : liste de colonnes et de colonnes imbriquées (avec
struct
types de données) à inclure ou à exclure dans les résultats de la requête. -
Expression de filtre de ligne : expression qui spécifie les lignes à inclure dans les résultats de la requête. Sous réserve de certaines restrictions, l'expression possède la syntaxe d'une
WHERE
clause du langage partiQL. Pour spécifier toutes les lignes, choisissez Accès à toutes les lignes sous Accès au niveau des lignes dans la console ou UtiliserAllRowsWildcard
dans les appels d'API.Pour plus d'informations sur les éléments pris en charge dans les expressions de filtre de ligne, consultezSupport partiQL dans les expressions de filtre de ligne.
Le niveau de filtrage obtenu dépend de la façon dont vous renseignez le filtre de données.
-
Lorsque vous spécifiez le caractère générique « all columns » (« toutes les colonnes ») et que vous fournissez une expression de filtre de ligne, vous établissez uniquement une sécurité au niveau de la ligne (filtrage des lignes).
-
Lorsque vous incluez ou excluez des colonnes spécifiques et des colonnes imbriquées, et que vous spécifiez « toutes les lignes » à l'aide du caractère générique pour toutes les lignes, vous établissez une sécurité au niveau des colonnes (filtrage des colonnes) uniquement.
-
Lorsque vous incluez ou excluez des colonnes spécifiques et que vous fournissez également une expression de filtre de ligne, vous établissez une sécurité au niveau de la cellule (filtrage des cellules).
La capture d'écran suivante de la console Lake Formation montre un filtre de données qui effectue un filtrage au niveau des cellules. Pour les requêtes portant sur la orders
table, cela restreint l'accès à la customer_name
colonne et les résultats de la requête ne renvoient que les lignes où la product_type
colonne contient « pharma ».

Notez l'utilisation de guillemets simples pour entourer la chaîne littérale,. 'pharma'
Vous pouvez utiliser la console Lake Formation pour créer ce filtre de données, ou vous pouvez fournir l'objet de requête suivant à l'opération CreateDataCellsFilter
d'API.
{
"Name": "restrict-pharma",
"DatabaseName": "sales",
"TableName": "orders",
"TableCatalogId": "111122223333",
"RowFilter": {"FilterExpression": "product_type='pharma'"},
"ColumnWildcard": {
"ExcludedColumnNames": ["customer_name"]
}
}
Vous pouvez créer autant de filtres de données que nécessaire pour une table. Pour ce faire, vous avez besoin d'une SELECT
autorisation avec l'option d'octroi sur une table. Par défaut, les administrateurs de Data Lake sont autorisés à créer des filtres de données sur toutes les tables de ce compte. Vous n'utilisez généralement qu'un sous-ensemble des filtres de données possibles lorsque vous accordez des autorisations sur la table à un principal. Par exemple, vous pouvez créer un deuxième filtre de données pour la orders
table qui est un filtre de row-security-only données. En vous référant à la capture d'écran précédente, vous pouvez choisir l'option Accès à toutes les colonnes et inclure une expression de filtre de ligne deproduct_type<>pharma
. Le nom de ce filtre de données peut êtreno-pharma
. Il restreint l'accès à toutes les lignes dont la product_type
colonne est définie sur « pharma ».
L'objet de demande pour l'opération CreateDataCellsFilter
d'API pour ce filtre de données est le suivant.
{
"Name": "no-pharma",
"DatabaseName": "sales",
"TableName": "orders",
"TableCatalogId": "111122223333",
"RowFilter": {"FilterExpression": "product_type<>'pharma'"},
"ColumnNames": ["customer_id", "customer_name", "order_num"
"product_id", "purchase_date", "product_type",
"product_manufacturer", "quantity", "price"]
}
Vous pouvez ensuite accorder une autorisation SELECT
sur le orders
tableau contenant le filtre de restrict-pharma
données à un utilisateur administratif, et SELECT
sur le orders
tableau contenant le filtre de no-pharma
données à des utilisateurs non administratifs. Pour les utilisateurs du secteur de la santé, vous accorderiez SELECT
sur le orders
tableau un accès complet à toutes les lignes et colonnes (aucun filtre de données), ou peut-être un autre filtre de données restreignant l'accès aux informations tarifaires.
Vous pouvez inclure ou exclure des colonnes imbriquées lorsque vous spécifiez la sécurité au niveau des colonnes et au niveau des lignes dans un filtre de données. Dans l'exemple suivant, l'accès au product.offer
champ est spécifié à l'aide de noms de colonnes qualifiés (entre guillemets). Ceci est important pour les champs imbriqués afin d'éviter que des erreurs ne se produisent lorsque les noms de colonnes contiennent des caractères spéciaux et pour maintenir la rétrocompatibilité avec les définitions de sécurité de niveau supérieur des colonnes.
{
"Name": "example_dcf",
"DatabaseName": "example_db",
"TableName": "example_table",
"TableCatalogId": "111122223333",
"RowFilter": { "FilterExpression": "customer.customerName <> 'John'" },
"ColumnNames": ["customer", "\"product\".\"offer\""]
}