

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Filtraggio dei dati e sicurezza a livello di cella in Lake Formation
<a name="data-filtering"></a>

Quando concedi le autorizzazioni di Lake Formation su una tabella Data Catalog, puoi includere specifiche di filtraggio dei dati per limitare l'accesso a determinati dati nei risultati delle query e nei motori integrati con Lake Formation. Lake Formation utilizza il filtraggio dei dati per ottenere la sicurezza a livello di colonna, la sicurezza a livello di riga e la sicurezza a livello di cella. Puoi definire e applicare filtri di dati sulle colonne nidificate se i dati di origine contengono strutture nidificate.

Con le funzionalità di filtraggio dei dati di Lake Formation, puoi implementare i seguenti livelli di sicurezza dei dati.

**Sicurezza a livello di colonna**  
La concessione delle autorizzazioni su una tabella del Catalogo dati con sicurezza a livello di colonna (filtro delle colonne) consente agli utenti di visualizzare solo colonne specifiche e colonne nidificate a cui hanno accesso nella tabella. Prendiamo in considerazione una `persons` tabella utilizzata in più applicazioni per una grande società di comunicazioni multiregionale. La concessione di autorizzazioni per le tabelle di Data Catalog con filtro a colonne può impedire agli utenti che non lavorano nel reparto risorse umane di visualizzare informazioni di identificazione personale (PII) come il numero di previdenza sociale o la data di nascita. È inoltre possibile definire politiche di sicurezza e concedere l'accesso solo a sottostrutture parziali di colonne annidate.

**Sicurezza a livello di riga**  
La concessione delle autorizzazioni su una tabella del Catalogo dati con sicurezza a livello di riga (filtro di riga) consente agli utenti di visualizzare solo righe di dati specifiche a cui hanno accesso nella tabella. Il filtraggio si basa sui valori di una o più colonne. È possibile includere strutture di colonne annidate quando si definiscono espressioni di filtro di riga. Ad esempio, se diversi uffici regionali della società di comunicazioni hanno i propri reparti delle risorse umane, è possibile limitare i record relativi alle persone che i dipendenti delle risorse umane possono vedere ai soli record relativi ai dipendenti della propria regione.

**Sicurezza a livello di cella**  
La sicurezza a livello di cella combina il filtraggio di righe e il filtraggio di colonne per un modello di autorizzazioni altamente flessibile. Se si visualizzano le righe e le colonne di una tabella come griglia, utilizzando la sicurezza a livello di cella, è possibile limitare l'accesso ai singoli elementi (celle) della griglia in qualsiasi punto delle due dimensioni. In altre parole, è possibile limitare l'accesso a diverse colonne a seconda della riga. Ciò è illustrato dal diagramma seguente, in cui le colonne con restrizioni sono ombreggiate.

![Viene mostrata una griglia con 5 righe e 6 colonne. Le righe e le colonne hanno intestazioni come Col1, Col2, Row1, Row2 e così via. Le celle della griglia con le seguenti coordinate sono ombreggiate: R3, C1; R3, C2; R3, C3; R5, C1; R5; C2; R5, C5; R5, C6.](http://docs.aws.amazon.com/it_it/lake-formation/latest/dg/images/cells-diagram.png)


Continuando l'esempio della tabella delle persone, puoi creare un *filtro dati* a livello di cella che limita l'accesso alla colonna dell'indirizzo se la riga ha la colonna del paese impostata su «UK», ma consente l'accesso alla colonna dell'indirizzo se la riga ha la colonna del paese impostata su «US».

I filtri si applicano solo alle operazioni di lettura. Pertanto, puoi concedere solo l'autorizzazione `SELECT` Lake Formation con filtri.

**Sicurezza a livello di cella sulle colonne annidate**  
Lake Formation consente di definire e applicare filtri di dati con sicurezza a livello di cella su colonne annidate. Tuttavia, i motori analitici integrati come Amazon Athena, Amazon EMR e Amazon Redshift Spectrum supportano l'esecuzione di query su tabelle nidificate gestite da Lake Formation con sicurezza a livello di riga e colonna. 

Per le limitazioni, consulta [Limitazioni del filtraggio dei dati](data-filtering-notes.md).

**Topics**
+ [Filtri di dati in Lake Formation](#data-filters-about)
+ [Supporto PartiQL nelle espressioni di filtro di riga](partiql-support.md)
+ [Autorizzazioni necessarie per eseguire interrogazioni su tabelle con filtraggio a livello di cella](row-filtering-prereqs.md)
+ [Gestione dei filtri di dati](managing-filters.md)

## Filtri di dati in Lake Formation
<a name="data-filters-about"></a>

Puoi implementare la sicurezza a livello di colonna, riga e cella tramite la creazione di *filtri di dati*. Quando concedi l'autorizzazione `SELECT` Lake Formation sulle tabelle, selezioni un filtro dati. Se la tabella contiene strutture di colonne nidificate, è possibile definire un filtro dati includendo o escludendo le colonne secondarie e definire espressioni di filtro a livello di riga sugli attributi nidificati.



Ogni filtro di dati appartiene a una tabella specifica del Data Catalog. Un filtro dati include le seguenti informazioni:
+ Nome del filtro
+ Il catalogo IDs della tabella associata al filtro
+ Nome tabella
+ Nome del database che contiene la tabella
+ Specificazione delle colonne: un elenco di colonne e colonne annidate (con `struct` tipi di dati) da includere o escludere nei risultati della query. 
+ Espressione di filtro di riga: un'espressione che specifica le righe da includere nei risultati della query. Con alcune restrizioni, l'espressione ha la sintassi di una `WHERE` clausola nel linguaggio PartiQL. Per specificare tutte le righe, scegli **Accesso a tutte le righe** in **Accesso a livello di riga** nella console o Utilizza nelle chiamate API. `AllRowsWildcard`

  Per ulteriori informazioni su ciò che è supportato nelle espressioni di filtro di riga, consulta. [Supporto PartiQL nelle espressioni di filtro di riga](partiql-support.md)

Il livello di filtraggio ottenuto dipende da come si popola il filtro dati.
+ Quando specifichi il carattere jolly "tutte le colonne" e fornisci un'espressione di filtro di riga, stabilisci solo la sicurezza a livello di riga (filtraggio di riga).
+ Quando si includono o si escludono colonne specifiche e colonne nidificate e si specifica «tutte le righe» utilizzando il carattere jolly per tutte le righe, si stabilisce solo la sicurezza a livello di colonna (filtraggio delle colonne).
+ Quando includi o escludi colonne specifiche e fornisci anche un'espressione di filtro di riga, stabilisci la sicurezza a livello di cella (filtraggio delle celle).

La seguente schermata della console Lake Formation mostra un filtro dati che esegue il filtraggio a livello di cella. Per le interrogazioni sulla `orders` tabella, limita l'accesso alla `customer_name` colonna e i risultati della query restituiscono solo le righe in cui la colonna contiene «pharma». `product_type`

![La finestra del filtro dei dati contiene i seguenti campi, disposti verticalmente: Nome del filtro dati; Database di destinazione; Tabella di destinazione; Gruppo di pulsanti di opzione con le opzioni Accesso a tutte le colonne, Includi colonne ed Escludi colonne; Seleziona colonne (elenco a discesa); Espressione del filtro di riga (casella di testo multilinea). L'opzione Escludi colonne è selezionata, la colonna customer_name è selezionata per l'esclusione e il campo di espressione del filtro Row contiene. 'product_type='pharma'](http://docs.aws.amazon.com/it_it/lake-formation/latest/dg/images/data-filter-sample-pharma.png)


Nota l'uso di virgolette singole per racchiudere la stringa letterale,. `'pharma'` 

Puoi utilizzare la console Lake Formation per creare questo filtro di dati oppure puoi fornire il seguente oggetto di richiesta all'operazione `CreateDataCellsFilter` API.

```
{
     "Name": "restrict-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type='pharma'"},
     "ColumnWildcard": {
         "ExcludedColumnNames": ["customer_name"]
     }
}
```

Puoi creare tutti i filtri di dati di cui hai bisogno per una tabella. A tal fine, è necessaria l'`SELECT`autorizzazione con l'opzione di concessione su una tabella. Per impostazione predefinita, gli amministratori di Data Lake dispongono dell'autorizzazione per creare *filtri di dati* su tutte le tabelle di quell'account. In genere si utilizza solo un sottoinsieme dei possibili filtri di dati quando si concedono le autorizzazioni sulla tabella a un responsabile. Ad esempio, è possibile creare un secondo filtro di dati per la `orders` tabella che è un row-security-only filtro di dati. Facendo riferimento alla schermata precedente, è possibile scegliere l'opzione **Accesso a tutte le colonne** e includere un'espressione di filtro di riga di. `product_type<>pharma` Il nome di questo filtro di dati potrebbe essere. `no-pharma` Limita l'accesso a tutte le righe la cui `product_type` colonna è impostata su «pharma».

L'oggetto di richiesta per l'operazione `CreateDataCellsFilter` API per questo filtro di dati è il seguente.

```
{
     "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"]
}
```

È quindi possibile concedere la licenza `SELECT` sulla `orders` tabella con il filtro `restrict-pharma` dati a un utente amministrativo e `SELECT` sulla `orders` tabella con il filtro `no-pharma` dati a utenti non amministrativi. Agli utenti del settore sanitario, potresti `SELECT` concedere alla `orders` tabella l'accesso completo a tutte le righe e le colonne (nessun filtro per i dati) o magari aggiungere un altro filtro di dati che limiti l'accesso alle informazioni sui prezzi.

 È possibile includere o escludere colonne annidate quando si specifica la sicurezza a livello di colonna e di riga all'interno di un filtro dati. Nell'esempio seguente, l'accesso al `product.offer` campo viene specificato utilizzando nomi di colonna qualificati (racchiusi tra virgolette doppie). Questo è importante per i campi annidati per evitare che si verifichino errori quando i nomi delle colonne contengono caratteri speciali e per mantenere la compatibilità con le versioni precedenti delle definizioni di sicurezza a livello di colonna. 

```
{
     "Name": "example_dcf",
     "DatabaseName": "example_db",
     "TableName": "example_table",
     "TableCatalogId": "111122223333",      
     "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" },
     "ColumnNames": ["customer", "\"product\".\"offer\""]
}
```

**Consulta anche**  
[Gestione dei filtri di dati](managing-filters.md)