Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pertimbangan
Berikut ini adalah pertimbangan untuk bekerja dengan kebijakan RLS:
Amazon Redshift menerapkan kebijakan RLS ke pernyataan SELECT, UPDATE, atau DELETE.
Amazon Redshift tidak menerapkan kebijakan RLS ke pernyataan INSERT, COPY, ALTER TABLE APPEND.
-
Kebijakan RLS dapat dilampirkan ke tabel, tampilan, tampilan pengikatan akhir (LBVs), dan tampilan terwujud (MVs).
Keamanan tingkat baris bekerja dengan keamanan tingkat kolom untuk melindungi data Anda.
Ketika RLS diaktifkan untuk relasi sumber, Amazon Redshift mendukung pernyataan ALTER TABLE APPEND untuk pengguna super, pengguna yang telah secara eksplisit diberikan izin sistem IGNORE RLS, atau peran sys:secadmin. Dalam hal ini, Anda dapat menjalankan pernyataan ALTER TABLE APPEND untuk menambahkan baris ke tabel target dengan memindahkan data dari tabel sumber yang ada. Amazon Redshift memindahkan semua tupel dari relasi sumber ke dalam relasi target. Status RLS dari relasi target tidak mempengaruhi pernyataan ALTER TABLE APPEND.
Untuk memfasilitasi migrasi dari sistem gudang data lain, Anda dapat mengatur dan mengambil variabel konteks sesi yang disesuaikan untuk koneksi dengan menentukan nama dan nilai variabel.
Contoh berikut menetapkan variabel konteks sesi untuk kebijakan keamanan tingkat baris (RLS).
-- Set a customized context variable. SELECT set_config(‘app.category’, ‘Concerts’, FALSE); -- Create a RLS policy using current_setting() to get the value of a customized context variable. CREATE RLS POLICY policy_categories WITH (catgroup VARCHAR(10)) USING (catgroup = current_setting('app.category', FALSE)); -- Set correct roles and attach the policy on the target table to one or more roles. ATTACH RLS POLICY policy_categories ON tickit_category_redshift TO ROLE analyst, ROLE dbadmin;
Untuk detail tentang cara mengatur dan mengambil variabel konteks sesi yang disesuaikan, bukaSET,,SET_CONFIG, MEMPERLIHATKANCURRENT_SETTING, danATUR ULANG. Untuk informasi lebih lanjut tentang memodifikasi konfigurasi server secara umum, buka. Memodifikasi konfigurasi server
penting
Saat menggunakan variabel konteks sesi dalam kebijakan RLS, kebijakan keamanan bergantung pada pengguna atau peran yang memanggil kebijakan. Berhati-hatilah untuk menghindari kerentanan keamanan saat menggunakan variabel konteks sesi dalam kebijakan RLS.
Mengubah pengguna sesi menggunakan SET SESSION AUTHORIZATION antara DECLAREE dan FETCH atau antara pernyataan FETCH berikutnya tidak akan menyegarkan paket yang sudah disiapkan berdasarkan kebijakan pengguna pada waktu DECLAREE. Hindari mengubah pengguna sesi saat kursor digunakan dengan tabel yang dilindungi RLS.
Ketika objek dasar di dalam objek tampilan dilindungi RLS, kebijakan yang dilampirkan ke pengguna yang menjalankan kueri diterapkan pada objek dasar masing-masing. Ini berbeda dari pemeriksaan izin tingkat objek, di mana izin pemilik tampilan diperiksa terhadap objek dasar tampilan. Anda dapat melihat hubungan kueri yang dilindungi RLS dalam output rencana EXPLOW.
Ketika fungsi yang ditentukan pengguna (UDF) direferensikan dalam kebijakan RLS dari relasi yang dilampirkan ke pengguna, pengguna harus memiliki izin EXECUTE atas UDF untuk menanyakan relasi tersebut.
Keamanan tingkat baris mungkin membatasi optimasi kueri. Sebaiknya evaluasi kinerja kueri dengan cermat sebelum menerapkan tampilan yang dilindungi RLS pada kumpulan data besar.
Kebijakan keamanan tingkat baris yang diterapkan pada tampilan yang mengikat akhir mungkin didorong ke tabel federasi. Kebijakan RLS ini mungkin terlihat di log mesin pemrosesan eksternal.
Batasan
Berikut ini adalah batasan saat bekerja dengan kebijakan RLS:
-
Kebijakan RLS tidak dapat dilampirkan ke tabel eksternal dan beberapa jenis relasi lainnya. Untuk informasi selengkapnya, lihat LAMPIRKAN KEBIJAKAN RLS.
-
Amazon Redshift mendukung pernyataan SELECT untuk kebijakan RLS tertentu dengan pencarian yang memiliki gabungan kompleks, tetapi tidak mendukung pernyataan UPDATE atau DELETE. Dalam kasus dengan pernyataan UPDATE atau DELETE, Amazon Redshift mengembalikan kesalahan berikut:
ERROR: One of the RLS policies on target relation is not supported in UPDATE/DELETE.
-
Setiap kali fungsi yang ditentukan pengguna (UDF) direferensikan dalam kebijakan RLS dari relasi yang dilampirkan ke pengguna, pengguna harus memiliki izin EXECUTE atas UDF untuk menanyakan relasi.
Subkueri yang berkorelasi tidak didukung. Amazon Redshift mengembalikan kesalahan berikut:
ERROR: RLS policy could not be rewritten.
Amazon Redshift tidak mendukung datasharing dengan RLS. Jika relasi tidak menonaktifkan RLS untuk datashares, kueri gagal di cluster konsumen dengan kesalahan berikut:
RLS-protected relation "rls_protected_table" cannot be accessed via datasharing query.
Anda dapat mematikan RLS untuk datashares menggunakan perintah ALTER TABLE dengan parameter ROW LEVEL SECURITY OFF FOR DATASHARES. Untuk informasi lebih lanjut tentang menggunakan ALTER TABLE untuk mengaktifkan atau menonaktifkan RLS, buka. ALTER TABLE
Dalam kueri lintas basis data, Amazon Redshift memblokir pembacaan ke relasi yang dilindungi RLS. Pengguna dengan izin IGNORE RLS dapat mengakses relasi yang dilindungi menggunakan kueri lintas basis data. Ketika pengguna tanpa izin IGNORE RLS mengakses relasi yang dilindungi RLS melalui kueri lintas basis data, kesalahan berikut akan muncul:
RLS-protected relation "rls_protected_table" cannot be accessed via cross-database query.
KEBIJAKAN ALTER RLS hanya mendukung modifikasi kebijakan RLS menggunakan klausa USING (using_predicate_exp). Anda tidak dapat mengubah kebijakan RLS dengan klausa WITH saat menjalankan KEBIJAKAN ALTER RLS.
-
Anda tidak dapat melakukan kueri relasi yang mengaktifkan keamanan tingkat baris jika nilai untuk salah satu opsi konfigurasi berikut tidak cocok dengan nilai default sesi:
enable_case_sensitive_super_attribute
enable_case_sensitive_identifier
downcase_delimited_identifier
Pertimbangkan untuk mengatur ulang opsi konfigurasi sesi jika Anda mencoba menanyakan relasi dengan keamanan tingkat baris dan melihat pesan “RLS protected relation does not support session level config on case sensitivity be different from the default value.”
Jika klaster yang disediakan atau namespace tanpa server memiliki kebijakan keamanan tingkat baris, perintah berikut akan diblokir untuk pengguna biasa:
ALTER <current_user> SET enable_case_sensitive_super_attribute/enable_case_sensitive_identifier/downcase_delimited_identifier
Saat Anda membuat kebijakan RLS, sebaiknya Anda mengubah pengaturan opsi konfigurasi default untuk pengguna biasa agar sesuai dengan pengaturan opsi konfigurasi sesi pada saat kebijakan dibuat. Pengguna super dan pengguna dengan hak istimewa ALTER USER dapat melakukan ini dengan menggunakan pengaturan grup parameter atau perintah ALTER USER. Untuk informasi tentang grup parameter, lihat grup parameter Amazon Redshift di Panduan Manajemen Pergeseran Merah Amazon. Untuk informasi tentang perintah ALTER USER, lihatALTER USER.
-
Tampilan dan tampilan yang mengikat akhir dengan kebijakan keamanan tingkat baris tidak dapat diganti oleh pengguna biasa yang menggunakan perintah. BUAT TAMPILAN Untuk mengganti tampilan atau LBVs dengan kebijakan RLS, pertama-tama lepaskan kebijakan RLS yang dilampirkan padanya, ganti tampilan atau LBVs, dan pasang kembali kebijakan. Pengguna super dan pengguna dengan
sys:secadmin permission
dapat menggunakan CREATE VIEW pada tampilan atau LBVs dengan kebijakan RLS tanpa melepaskan kebijakan. -
Tampilan dengan kebijakan keamanan tingkat baris tidak dapat mereferensikan tabel sistem dan tampilan sistem.
-
Tampilan pengikatan akhir yang direferensikan oleh tampilan reguler tidak dapat dilindungi RLS.
-
Relasi yang dilindungi RLS dan data bersarang dari data lake tidak dapat diakses dalam kueri yang sama.