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.
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.
Topik
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 gunakanAllRowsWildcard
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'.
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\""] }