Bagikan melalui


Keamanan tabel temporal

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Database Azure SQL Managed Instance yang lebih baru

Untuk memahami keamanan seperti yang berlaku untuk tabel temporal, Anda harus memahami prinsip keamanan yang berlaku untuk tabel temporal. Setelah Anda memahami prinsip-prinsip keamanan ini, Anda siap untuk menyelami keamanan di sekitar CREATE TABLEpernyataan , ALTER TABLE, dan SELECT .

Prinsip keamanan

Tabel berikut ini menjelaskan prinsip keamanan yang berlaku untuk tabel temporal:

Prinsip Deskripsi
Mengaktifkan/menonaktifkan penerapan versi sistem memerlukan hak istimewa tertinggi pada objek yang terpengaruh Mengaktifkan dan menonaktifkan SYSTEM_VERSIONING memerlukan CONTROL izin pada tabel saat ini dan riwayat.
Data riwayat tidak dapat dimodifikasi secara langsung Ketika SYSTEM_VERSIONING adalah ON, pengguna tidak dapat mengubah data riwayat, terlepas dari izin aktual mereka pada tabel saat ini atau riwayat. Batasan ini mencakup modifikasi data dan skema. 1
Mengkueri data riwayat memerlukan SELECT izin pada tabel riwayat Pengguna dengan SELECT izin pada tabel saat ini tidak secara otomatis memiliki SELECT izin pada tabel riwayat.
Audit mengungkapkan operasi yang memengaruhi tabel riwayat dengan cara tertentu Pengaturan audit dari tabel saat ini tidak diterapkan secara otomatis ke tabel riwayat. Audit perlu diaktifkan secara eksplisit untuk tabel riwayat. Setelah diaktifkan, audit pada tabel riwayat secara teratur mengambil semua upaya langsung untuk mengakses data (terlepas dari apakah berhasil atau tidak).

SELECT dengan ekstensi kueri temporal menunjukkan bahwa tabel riwayat terpengaruh dengan operasi tersebut.

CREATE/ALTER tabel temporal mengekspos informasi bahwa pemeriksaan izin juga terjadi pada tabel riwayat. File audit berisi rekaman tambahan untuk tabel riwayat.

Operasi DML pada tabel saat ini mengungkapkan bahwa tabel riwayat terpengaruh, tetapi additional_information menyediakan konteks yang diperlukan (DML adalah hasil dari SYSTEM_VERSIONING).

1 Jika Anda memiliki izin UBAH pada tabel saat ini dan tabel riwayat, dan Anda menghilangkan kolom dalam tabel saat ini, kolom terkait dalam tabel riwayat juga dihilangkan, bahkan jika SYSTEM_VERSIONING adalah ON.

Melakukan operasi skema

Ketika SYSTEM_VERSIONING diatur ke ON, operasi modifikasi skema dibatasi.

Operasi skema ALTER yang tidak diizinkan

Operasi Tabel saat ini Tabel riwayat
DROP TABLE Batasan Batasan
ALTER TABLE...SWITCH PARTITION SWITCH IN hanya (lihat Partisi dengan tabel temporal) SWITCH OUT hanya (lihat Partisi dengan tabel temporal)
ALTER TABLE...DROP PERIOD Batasan T/A
ALTER TABLE...ADD PERIOD T/A Batasan

Operasi ALTER TABLE yang diizinkan

Operasi Saat ini Riwayat
ALTER TABLE...REBUILD Diizinkan (secara independen) Diizinkan (secara independen)
CREATE INDEX Diizinkan (secara independen) Diizinkan (secara independen)
CREATE STATISTICS Diizinkan (secara independen) Diizinkan (secara independen)

Keamanan pernyataan BUAT tabel temporal

Fitur Membuat tabel riwayat baru Gunakan kembali tabel riwayat yang sudah ada
Izin diperlukan CREATE TABLE izin dalam database

ALTER izin pada skema tempat tabel saat ini dan riwayat sedang dibuat
CREATE TABLE izin dalam database

ALTER izin pada skema tempat tabel saat ini akan dibuat.

CONTROL izin pada tabel riwayat yang ditentukan sebagai bagian CREATE TABLE dari pernyataan yang membuat tabel temporal.
Audit Audit menunjukkan bahwa pengguna mencoba membuat dua objek. Operasi mungkin gagal karena kurangnya izin untuk membuat tabel dalam database, atau karena kurangnya izin untuk mengubah skema untuk salah satu tabel. Audit menunjukkan bahwa tabel temporal dibuat. Operasi mungkin gagal karena kurangnya izin untuk membuat tabel dalam database, kurangnya izin untuk mengubah skema untuk tabel temporal, atau kurangnya izin pada tabel riwayat.

Keamanan pernyataan ALTER temporal table SET (SYSTEM_VERSIONING ON/OFF)

Fitur Membuat tabel riwayat baru Gunakan kembali tabel riwayat yang sudah ada
Izin diperlukan CONTROL izin dalam database.

CREATE TABLE izin dalam database.

ALTER izin pada skema tempat tabel riwayat sedang dibuat.
CONTROL izin pada tabel asli yang diubah.

CONTROL izin pada tabel riwayat yang ditentukan sebagai bagian ALTER TABLE dari pernyataan.
Audit Audit menunjukkan bahwa tabel temporal diubah dan tabel riwayat dibuat secara bersamaan. Operasi ini mungkin gagal karena kurangnya izin untuk membuat tabel dalam database, kurangnya izin untuk mengubah skema untuk tabel riwayat, atau kurangnya izin untuk mengubah tabel temporal. Audit menunjukkan bahwa tabel temporal diubah, tetapi operasi memerlukan akses ke tabel riwayat. Operasi mungkin gagal karena kurangnya izin pada tabel riwayat, atau kurangnya izin pada tabel saat ini.

Keamanan pernyataan SELECT

SELECT izin tidak berubah untuk SELECT pernyataan yang tidak memengaruhi tabel riwayat. Untuk SELECT pernyataan yang memengaruhi tabel riwayat, SELECT izin diperlukan pada tabel saat ini dan tabel riwayat.