Filtraggio dei dati e sicurezza a livello di cella in Lake Formation - AWS Lake Formation

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

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.

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 AthenaEMR, Amazon e Amazon Redshift Spectrum supportano l'esecuzione di query su tabelle annidate gestite da Lake Formation con sicurezza a livello di riga e colonna.

Per le limitazioni, consulta Limitazioni del filtraggio dei dati.

Filtri di dati in Lake Formation

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. AllRowsWildcard API

    Per ulteriori informazioni su ciò che è supportato nelle espressioni di filtro di riga, consulta. Supporto PartiQL nelle espressioni di filtro di riga

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'

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'CreateDataCellsFilterAPIoperazione.

{ "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'SELECTautorizzazione 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'CreateDataCellsFilterAPIoperazione 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\""] }