

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.

# Gestion des filtres de données
<a name="managing-filters"></a>

Pour implémenter la sécurité au niveau des colonnes, des lignes et des cellules, vous pouvez créer et gérer des filtres de données. Chaque filtre de données appartient à une table du catalogue de données. Vous pouvez créer plusieurs filtres de données pour une table, puis utiliser un ou plusieurs d'entre eux lorsque vous accordez des autorisations sur la table. Vous pouvez également définir et appliquer des filtres de données sur des colonnes imbriquées dont les `struct` types de données permettent aux utilisateurs d'accéder uniquement aux sous-structures des colonnes imbriquées.

Vous avez besoin `SELECT` d'une autorisation avec l'option d'octroi pour créer ou afficher un filtre de données. Pour permettre aux principaux utilisateurs de votre compte de consulter et d'utiliser un filtre de données, vous pouvez leur accorder l'`DESCRIBE`autorisation.

**Note**  
Lake Formation n'est pas favorable à l'octroi d'une `Describe` autorisation sur un filtre de données partagé depuis un autre compte.

Vous pouvez gérer les filtres de données à l'aide de la AWS Lake Formation console, de l'API ou du AWS Command Line Interface (AWS CLI).

Pour plus d'informations sur les filtres de données, voir [Filtres de données dans Lake Formation](data-filtering.md#data-filters-about)

# Création d'un filtre de données
<a name="creating-data-filters"></a>

Vous pouvez créer un ou plusieurs filtres de données pour chaque table du catalogue de données.

**Pour créer un filtre de données pour une table du catalogue de données (console)**

1. Ouvrez la console Lake Formation à l'adresse [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

   Connectez-vous en tant qu'administrateur du lac de données, propriétaire de la table cible ou principal disposant d'une autorisation Lake Formation sur la table cible.

1. Dans le volet de navigation, sous **Catalogue de données**, sélectionnez **Filtres de données**.

1. Sur la page **Filtres de données**, choisissez **Créer un nouveau filtre**.

1. Dans la boîte de dialogue **Créer un filtre de données**, entrez les informations suivantes :
   + Nom du filtre de données 
   + Base de données cible : spécifiez la base de données qui contient la table.
   + Tableau cible 
   + Accès au niveau des colonnes : laissez ce paramètre défini sur **Accès à toutes les colonnes** pour spécifier le filtrage des lignes uniquement. Choisissez **Inclure les colonnes** ou **Exclure les colonnes** pour définir le filtrage des colonnes ou des cellules, puis spécifiez les colonnes à inclure ou à exclure.

     Colonnes imbriquées : si vous appliquez le filtre à une table contenant des colonnes imbriquées, vous pouvez spécifier explicitement les sous-structures des colonnes de structure imbriquées dans un filtre de données. 

     Lorsque vous accordez l'autorisation SELECT à un principal sur ce filer, le principal exécutant la requête suivante ne verra que les données pour `customer.customerName` et non`customer.customerId`.

     ```
     SELECT "customer" FROM "example_db"."example_table";
     ```  
![\[Column-level access settings with options to include specific columns and filter rows.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/nested-column-filter.png)

      Lorsque vous accordez des autorisations à la `customer` colonne, le principal reçoit l'accès à la colonne et aux champs imbriqués situés sous la colonne (`customerName`et`customerID`). 
   + Expression de filtre de ligne : entrez une expression de filtre pour spécifier le filtrage des lignes ou des cellules. Pour les types de données et les opérateurs pris en charge, consultez[Support partiQL dans les expressions de filtre de ligne](partiql-support.md). Choisissez **Accès à toutes les lignes** pour accorder l'accès à toutes.

     Vous pouvez inclure des structures de colonnes partielles issues de colonnes imbriquées dans une expression de filtre de ligne afin de filtrer les lignes contenant une valeur spécifique.

     Lorsqu'un principal est autorisé à accéder à une table avec une expression `Select * from example_nestedtable where customer.customerName <>'John'` de filtre de ligne et que l'accès **au niveau des colonnes** est défini sur **Accès à toutes les colonnes**, les résultats de la requête n'affichent que les lignes dont la valeur est `customerName <>'John'` vraie.

   La capture d'écran suivante montre un filtre de données qui implémente le filtrage des cellules. Dans les requêtes portant sur la `orders` table, il refuse l'accès à la `customer_name` colonne et affiche uniquement les lignes contenant « pharma » dans la `product_type` colonne.  
![\[La fenêtre du filtre de données contient les champs suivants, disposés verticalement : nom du filtre de données ; base de données cible ; table cible ; groupe de boutons d'option avec les options Accès à toutes les colonnes, Inclure les colonnes et Exclure les colonnes ; Sélectionner les colonnes (liste déroulante) ; Expression du filtre de ligne (zone de texte multiligne). L'option Exclure les colonnes est sélectionnée, la colonne customer_name est sélectionnée pour être exclue et le champ d'expression du filtre de ligne contient « product_type='pharma' ».\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/data-filter-sample-pharma.png)

1. Choisissez **Create filter (Créer un filtre)**.

**Pour créer un filtre de données avec des politiques de filtre cellulaire sur un champ imbriqué**

 Cette section utilise l'exemple de schéma suivant pour montrer comment créer un filtre de cellules de données : 

```
[
    { name: "customer", type: "struct<customerId:string,customerName:string>" },
    { name: "customerApplication", type: "struct<appId:string>" },
    { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" },
    { name: "purchaseId", type: "string" },
]
```

1. Sur la page **Créer un filtre de données**, entrez le nom du filtre de données.

1.  Ensuite, utilisez le menu déroulant pour choisir le nom de la base de données et le nom de la table. 

1. Dans la section **Accès au niveau** des colonnes, choisissez Colonnes incluses, puis sélectionnez une colonne imbriquée (). `customer.customerName`

1. Dans la section **Accès au niveau** des lignes, choisissez l'option **Accès à toutes les lignes**.

1. Choisissez **Create filter (Créer un filtre)**.

   Lorsque vous `SELECT` autorisez ce filtre, le principal a accès à toutes les lignes de la `customerName` colonne.

1. Définissez ensuite un autre filtre de données pour la même base de données/table.

1. Dans la section **Accès au niveau** des colonnes, choisissez Colonnes incluses, puis sélectionnez une autre colonne imbriquée (). `customer.customerid`

1. Dans la section **Accès au niveau** des lignes, choisissez **Filtrer les lignes**, puis entrez une **expression de filtre de ligne** ()`customer.customerid <> 5`.

1. Choisissez **Create filter (Créer un filtre)**.

   Lorsque vous `SELECT` autorisez ce filtre, le principal a accès à toutes les lignes des `customerId` champs`customerName`, à l'exception de la cellule dont la valeur est 5 dans la `customerId` colonne.

# Octroi d'autorisations de filtrage de données
<a name="granting-filter-perms"></a>

Vous pouvez accorder les `SELECT` autorisations `DESCRIBE` et `DROP` Lake Formation sur les filtres de données aux principaux.

Dans un premier temps, vous êtes le seul à pouvoir visualiser les filtres de données que vous créez pour une table. Pour permettre à un autre principal de consulter un filtre de données et d'accorder des autorisations au catalogue de données avec le filtre de données, vous devez soit :
+ Accordez `SELECT` sur un tableau au directeur avec l'option de subvention, et appliquez le filtre de données à la subvention.
+ Accordez l'`DROP`autorisation `DESCRIBE` or sur le filtre de données au principal.

Vous pouvez accorder l'`SELECT`autorisation à un AWS compte externe. L'administrateur du lac de données de ce compte peut ensuite accorder cette autorisation aux autres principaux du compte. Lorsque vous accordez des autorisations à un compte externe, vous devez inclure l'option d'octroi afin que l'administrateur du compte externe puisse étendre l'autorisation aux autres utilisateurs du his/her compte. Lorsque vous accordez à un mandant de votre compte, l'option de subvention est facultative.

Vous pouvez accorder et révoquer des autorisations sur les filtres de données à l'aide de la AWS Lake Formation console, de l'API ou du AWS Command Line Interface (AWS CLI).

------
#### [ Console ]

1. Connectez-vous à la console Lake Formation AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Dans le volet de navigation, sous **Autorisations**, sélectionnez **Autorisations du lac de données**.

1. Sur la page **Autorisations**, dans la section **Autorisations relatives aux données**, choisissez **Grant**.

1. Sur la page **Accorder les autorisations relatives aux données**, choisissez les principaux auxquels accorder les autorisations. 

1. Dans la section Balises LF ou ressources de catalogue, sélectionnez Ressources de **catalogue de données nommées**. Choisissez ensuite la base de données, la table et le filtre de données pour lesquels vous souhaitez accorder des autorisations.  
![\[\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. Dans la section **Autorisations du filtre de données**, choisissez les autorisations que vous souhaitez accorder aux principaux sélectionnés.  
![\[\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/grant-perms-on-filters.png)

------
#### [ AWS CLI ]
+ Entrez une `grant-permissions` commande. Spécifiez `DataCellsFilter` pour l'`resource`argument, et spécifiez `DESCRIBE` ou `DROP` pour l'`Permissions`argument et, éventuellement, pour l'`PermissionsWithGrantOption`argument.

  L'exemple suivant octroie l'option grant `DESCRIBE` à l'utilisateur `datalake_user1` sur le filtre de données`restrict-pharma`, qui appartient à la `orders` table de la `sales` base de données dans le AWS compte 1111-2222-3333.

  ```
  aws lakeformation grant-permissions --cli-input-json file://grant-params.json
  ```

  Voici le contenu du fichier`grant-params.json`.

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# Octroi des autorisations de données fournies par les filtres de données
<a name="granting-data-perms-for-filters"></a>

Les filtres de données représentent un sous-ensemble de données d'une table. Pour fournir un accès aux données aux principaux, `SELECT` des autorisations doivent être accordées à ces principaux. Avec cette autorisation, les directeurs peuvent :
+ Afficher le nom réel de la table dans la liste des tables partagées avec leur compte.
+ Créez des filtres de données sur la table partagée et accordez des autorisations à leurs utilisateurs sur ces filtres de données.

------
#### [ Console ]

**Pour accorder des autorisations SELECT**

1. Accédez à la page **Autorisations** de la console Lake Formation, puis choisissez **Grant**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/permissions-grant-action.png)

1. Sélectionnez les principaux auxquels vous souhaitez donner accès, puis sélectionnez **Ressources de catalogue de données nommées**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. Pour donner accès aux données représentées par le filtre, choisissez **Sélectionner** sous **Autorisations du filtre de données**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/grant-data-filter-perms-step3.png)

------
#### [ CLI ]

Entrez une `grant-permissions` commande. Spécifiez `DataCellsFilter` l'argument ressource et spécifiez `SELECT` l'argument Permissions. 

L'exemple suivant octroie `SELECT` l'option grant à l'utilisateur `datalake_user1` sur le filtre de données`restrict-pharma`, qui appartient à la `orders` table de la `sales` base de données dans Compte AWS `1111-2222-3333`. 

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json 
```

Voici le contenu du fichier`grant-params.json`. 

```
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
    },
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333", 
            "DatabaseName": "sales", 
            "TableName": "orders", 
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"]
}
```

------

# Affichage des filtres de données
<a name="view-data-filters"></a>

Vous pouvez utiliser la console Lake Formation ou AWS CLI l'API Lake Formation pour afficher les filtres de données. 

Pour afficher les filtres de données, vous devez être un administrateur de Data Lake ou disposer des autorisations requises sur les filtres de données.

------
#### [ Console ]

1. Connectez-vous à la console Lake Formation AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Dans le volet de navigation, sous **Catalogue de données**, sélectionnez **Filtres de données**.

   La page affiche les filtres de données auxquels vous avez accès.  
![\[La page Filtres de données affiche les filtres de données disponibles avec les colonnes suivantes : nom du filtre, table, base de données et ID du catalogue de tables. La capture d'écran montre un filtre de données unique avec les valeurs suivantes : test-df, cloudtrailtest_cloudtrail, lakeformation_cloudtrail, identifiant de compte expurgé. Au-dessus du tableau se trouvent quatre boutons (de gauche à droite) : Actualiser/recharger, Afficher (grisé), Supprimer (grisé) et « Créer un nouveau filtre ». Il existe également un champ de recherche vide.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/list-data-filters.jpg)

1. Pour afficher les détails du filtre de données, choisissez le filtre de données, puis sélectionnez Afficher. Une nouvelle fenêtre apparaît avec les informations détaillées du filtre de données.  
![\[La fenêtre « Afficher le filtre de données » affiche des informations supplémentaires sur le filtre de données sélectionné. Les informations affichées incluent le nom, la base de données, la table, le paramètre d'accès au niveau des colonnes, l'expression du filtre de ligne et les colonnes.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/list-data-filters-details.jpg)

------
#### [ AWS CLI ]

Entrez une `list-data-cells-filter` commande et spécifiez une ressource de table.

L'exemple suivant répertorie les filtres de données de la `cloudtrailtest_cloudtrail` table.

```
aws lakeformation list-data-cells-filter --table '{ "CatalogId":"123456789012", 
"DatabaseName":"lakeformation_cloudtrail", "Name":"cloudtrailtest_cloudtrail"}'
```

------
#### [ API/SDK ]

Utilisez l'`ListDataCellsFilter`API et spécifiez une ressource de table.

L'exemple suivant utilise Python pour répertorier les 20 premiers filtres de données de la `myTable` table.

```
response = client.list_data_cells_filter(
    Table = {
        'CatalogId': '111122223333',
        'DatabaseName': 'mydb',
        'Name': 'myTable'
    },
    MaxResults=20
)
```

------

# Autorisations de filtrage des données de liste
<a name="listing-filter-perms"></a>

Vous pouvez utiliser la console Lake Formation pour consulter les autorisations accordées sur les filtres de données. 

Pour consulter les autorisations sur un filtre de données, vous devez être un administrateur de Data Lake ou disposer des autorisations requises sur le filtre de données.

------
#### [ Console ]

1. Connectez-vous à la console Lake Formation AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Dans le volet de navigation, sous **Autorisations**, sélectionnez **Autorisations relatives aux données**.

1. Sur la page **Autorisations relatives aux données**, cliquez ou appuyez dans le champ de recherche, puis dans le menu **Propriétés**, choisissez **Type de ressource**.

1. Dans le menu **Type de ressource**, choisissez **Type de ressource : filtre de cellules de données**.

   Les filtres de données pour lesquels vous avez des autorisations sont répertoriés. Vous devrez peut-être faire défiler la page horizontalement pour voir les colonnes **Permissions** et **Accordable**.  
![\[La page Autorisations relatives aux données affiche un tableau des autorisations avec les colonnes suivantes : Principal, Type de ressource, Base de données, Table, Ressource, Catalogue et Autorisations. La colonne Type de ressource indique le « Filtre de cellule de données » sur les quatre lignes. Les autorisations pour les première et deuxième lignes sont Describe, Drop et Select. Les autorisations pour la troisième ligne sont Describe. Au-dessus du tableau se trouvent un bouton Effacer le filtre et une vignette indiquant que la recherche actuelle porte sur le type de ressource : filtre de cellules de données. Au-dessus se trouve un champ de recherche (texte), et au-dessus se trouvent les boutons Actualiser, Révoquer et Autoriser.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/data-permissions-cell-filters.png)

------
#### [ AWS CLI ]
+ Entrez une `list-permissions` commande. Spécifiez `DataCellsFilter` pour l'`resource`argument, et spécifiez `DESCRIBE` ou `DROP` pour l'`Permissions`argument et, éventuellement, pour l'`PermissionsWithGrantOption`argument.

  L'exemple suivant répertorie les `DESCRIBE` autorisations avec l'option d'octroi sur le filtre de données`restrict-pharma`. Les résultats sont limités aux autorisations accordées pour le principal `datalake_user1` et la `orders` table de la `sales` base de données dans le AWS compte 1111-2222-3333.

  ```
  aws lakeformation list-permissions --cli-input-json file://list-params.json
  ```

  Voici le contenu du fichier`grant-params.json`.

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------