Pemfilteran data dan keamanan tingkat sel di Lake Formation - AWS Lake Formation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemfilteran data dan keamanan tingkat sel di Lake Formation

Saat Anda memberikan izin Lake Formation pada tabel Katalog Data, Anda dapat menyertakan spesifikasi pemfilteran data untuk membatasi akses ke data tertentu dalam hasil kueri dan mesin yang terintegrasi dengan Lake Formation. Lake Formation menggunakan pemfilteran data untuk mencapai keamanan tingkat kolom, keamanan tingkat baris, dan keamanan tingkat sel. Anda dapat menentukan dan menerapkan filter data pada kolom bersarang jika data sumber Anda berisi struktur bersarang.

Dengan kemampuan penyaringan data Lake Formation, Anda dapat menerapkan tingkat keamanan data berikut.

Keamanan tingkat kolom

Pemberian izin pada tabel Katalog Data dengan keamanan tingkat kolom (pemfilteran kolom) memungkinkan pengguna untuk hanya melihat kolom tertentu dan kolom bersarang yang dapat mereka akses dalam tabel. Pertimbangkan persons tabel yang digunakan dalam beberapa aplikasi untuk perusahaan komunikasi multi-wilayah besar. Pemberian izin pada tabel Katalog Data dengan pemfilteran kolom dapat membatasi pengguna yang tidak bekerja di departemen SDM untuk melihat informasi yang dapat diidentifikasi secara pribadi (PII) seperti nomor jaminan sosial atau tanggal lahir. Anda juga dapat menentukan kebijakan keamanan dan memberikan akses ke hanya sebagian sub-struktur kolom bersarang.

Keamanan tingkat baris

Pemberian izin pada tabel Katalog Data dengan keamanan tingkat baris (pemfilteran baris) memungkinkan pengguna untuk melihat hanya baris data tertentu yang dapat mereka akses dalam tabel. Pemfilteran didasarkan pada nilai satu atau lebih kolom. Anda dapat menyertakan struktur kolom bersarang saat mendefinisikan ekspresi baris-filter. Misalnya, jika kantor regional yang berbeda dari perusahaan komunikasi memiliki departemen SDM mereka sendiri, Anda dapat membatasi catatan orang yang dapat dilihat karyawan SDM hanya untuk catatan untuk karyawan di wilayah mereka.

Keamanan tingkat sel

Keamanan tingkat sel menggabungkan pemfilteran baris dan pemfilteran kolom untuk model izin yang sangat fleksibel. Jika Anda melihat baris dan kolom tabel sebagai kisi, dengan menggunakan keamanan tingkat sel, Anda dapat membatasi akses ke elemen individual (sel) kisi di mana saja dalam dua dimensi. Artinya, Anda dapat membatasi akses ke kolom yang berbeda tergantung pada baris. Ini diilustrasikan oleh diagram berikut, di mana kolom terbatas diarsir.

Sebuah grid ditampilkan dengan 5 baris dan 6 kolom. Baris dan kolom memiliki header seperti Col1, Col2, Row1, Row2, dan sebagainya. Sel-sel grid dengan koordinat berikut diarsir: R3, C1; R3, C2; R3, C3; R5, C1; R5; C2; R5, C5; R5, C6.

Melanjutkan contoh tabel orang, Anda dapat membuat filter data di tingkat sel yang membatasi akses ke kolom alamat jalan jika baris memiliki kolom negara yang disetel ke “UK”, tetapi mengizinkan akses ke kolom alamat jalan jika baris memiliki kolom negara yang disetel ke “AS”.

Filter hanya berlaku untuk operasi baca. Oleh karena itu, Anda hanya dapat memberikan izin SELECT Lake Formation dengan filter.

Keamanan tingkat sel pada kolom bersarang

Lake Formation memungkinkan Anda untuk menentukan dan menerapkan filter data dengan keamanan tingkat sel pada kolom bersarang. Namun, mesin analitik terintegrasi seperti Amazon Athena, AmazonEMR, dan Amazon Redshift Spectrum mendukung eksekusi kueri terhadap tabel bersarang yang dikelola Lake Formation dengan keamanan tingkat baris dan kolom.

Untuk batasan, lihat Batasan penyaringan data.

Filter data di Lake Formation

Anda dapat menerapkan keamanan tingkat kolom, tingkat baris, dan tingkat sel dengan membuat filter data. Anda memilih filter data saat Anda memberikan izin SELECT Lake Formation pada tabel. Jika tabel berisi struktur kolom bersarang, Anda dapat menentukan filter data dengan menyertakan atau mengecualikan kolom turunan dan menentukan ekspresi filter tingkat baris pada atribut bersarang.

Setiap filter data milik tabel tertentu dalam Katalog Data Anda. Filter data mencakup informasi berikut:

  • Filter nama

  • Katalog IDs tabel yang terkait dengan filter

  • Nama tabel

  • Nama database yang berisi tabel

  • Spesifikasi kolom - daftar kolom dan kolom bersarang (dengan struct tipe data) untuk menyertakan atau mengecualikan dalam hasil kueri.

  • Ekspresi filter baris - ekspresi yang menentukan baris untuk disertakan dalam hasil kueri. Dengan beberapa batasan, ekspresi memiliki sintaks WHERE klausa dalam bahasa PartiQL. Untuk menentukan semua baris, pilih Akses ke semua baris di bawah Akses tingkat baris di konsol atau gunakan AllRowsWildcard dalam API panggilan.

    Untuk informasi selengkapnya tentang apa yang didukung dalam ekspresi filter baris, lihatDukungan PartiQL dalam ekspresi filter baris.

Tingkat penyaringan yang Anda dapatkan tergantung pada bagaimana Anda mengisi filter data.

  • Saat Anda menentukan wildcard “semua kolom” dan memberikan ekspresi filter baris, Anda hanya membuat keamanan tingkat baris (pemfilteran baris).

  • Saat Anda menyertakan atau mengecualikan kolom tertentu dan kolom bersarang, dan menentukan “semua baris” menggunakan wildcard semua baris, Anda hanya membuat keamanan tingkat kolom (pemfilteran kolom).

  • Saat Anda menyertakan atau mengecualikan kolom tertentu dan juga memberikan ekspresi filter baris, Anda membangun keamanan tingkat sel (penyaringan sel).

Tangkapan layar berikut dari konsol Lake Formation menunjukkan filter data yang melakukan pemfilteran tingkat sel. Untuk kueri terhadap orders tabel, ini membatasi akses ke customer_name kolom dan hasil kueri hanya mengembalikan baris di mana product_type kolom berisi 'pharma'.

Jendela filter data berisi bidang-bidang ini, disusun secara vertikal: Nama filter data; Basis data target; Tabel target; Grup tombol opsi dengan opsi Akses ke semua kolom, Sertakan kolom, dan Kecualikan kolom; Pilih kolom (daftar drop-down); Ekspresi filter baris (kotak teks multi-baris). Opsi Kecualikan kolom dipilih, kolom customer_name dipilih untuk pengecualian, dan bidang ekspresi filter baris berisi. 'product_type='pharma'

Perhatikan penggunaan tanda kutip tunggal untuk melampirkan string literal,'pharma'.

Anda dapat menggunakan konsol Lake Formation untuk membuat filter data ini, atau Anda dapat menyediakan objek permintaan berikut ke CreateDataCellsFilter API operasi.

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

Anda dapat membuat filter data sebanyak yang Anda butuhkan untuk sebuah tabel. Untuk melakukannya, Anda memerlukan SELECT izin dengan opsi hibah di atas meja. Administrator Data Lake secara default memiliki izin untuk membuat filter data pada semua tabel di akun itu. Anda biasanya hanya menggunakan subset dari filter data yang mungkin saat memberikan izin pada tabel kepada prinsipal. Misalnya, Anda bisa membuat filter data kedua untuk orders tabel yang merupakan filter row-security-only data. Mengacu pada tangkapan layar sebelumnya, Anda dapat memilih opsi Akses ke semua kolom dan menyertakan ekspresi filter baris dari. product_type<>pharma Nama filter data ini bisa jadino-pharma. Ini membatasi akses ke semua baris yang memiliki product_type kolom diatur ke 'pharma'.

Objek permintaan untuk CreateDataCellsFilter API operasi untuk filter data ini adalah sebagai berikut.

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

Anda kemudian dapat memberikan SELECT pada orders tabel dengan filter restrict-pharma data ke pengguna administratif, dan SELECT pada orders tabel dengan filter no-pharma data untuk pengguna non-administratif. Untuk pengguna di sektor perawatan kesehatan, Anda akan memberikan SELECT di orders atas meja dengan akses penuh ke semua baris dan kolom (tanpa filter data), atau mungkin dengan filter data lain yang membatasi akses ke informasi harga.

Anda dapat menyertakan atau mengecualikan kolom bersarang saat menentukan keamanan tingkat kolom dan tingkat baris dalam filter data. Dalam contoh berikut, akses ke product.offer bidang ditentukan menggunakan nama kolom yang memenuhi syarat (dibungkus dengan tanda kutip ganda). Hal ini penting untuk bidang bersarang untuk menghindari kesalahan yang terjadi ketika nama kolom berisi karakter khusus, dan untuk mempertahankan kompatibilitas mundur dengan definisi keamanan tingkat kolom tingkat atas.

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