Keamanan tabel temporal

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Untuk mengamankan tabel temporal, Anda harus memahami prinsip keamanan yang berlaku untuk tabel tersebut. Setelah Anda memahami prinsip-prinsip ini, Anda dapat menerapkan keamanan pada 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 izin CONTROL pada tabel saat ini maupun tabel riwayat.
Data riwayat tidak dapat dimodifikasi secara langsung Saat SYSTEM_VERSIONING disetel ke ON, pengguna tidak dapat mengubah data riwayat, terlepas dari izin mereka pada tabel saat ini maupun tabel riwayat. Batasan ini mencakup modifikasi data dan skema. 1
Mengkueri data riwayat memerlukan SELECT izin pada tabel riwayat Pengguna yang memiliki izin SELECT pada tabel saat ini tidak otomatis memiliki izin SELECT 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. Anda harus mengaktifkan audit secara eksplisit untuk tabel riwayat. Setelah Anda mengaktifkannya, audit pada tabel riwayat menangkap semua upaya langsung untuk mengakses data, baik berhasil maupun tidak.

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

CREATE/ALTER tabel temporal menunjukkan bahwa pemeriksaan izin juga dilakukan pada tabel riwayat. File audit berisi rekaman tambahan untuk tabel riwayat.

Operasi bahasa manipulasi data (DML) pada tabel saat ini mengungkapkan bahwa operasi tersebut memengaruhi tabel riwayat, tetapi additional_information memberikan konteks yang diperlukan (DML adalah hasil dari SYSTEM_VERSIONING).

1 Jika Anda memiliki ALTER izin pada tabel saat ini dan tabel riwayat, dan Anda menghapus kolom di tabel saat ini, kolom terkait di tabel riwayat juga akan dihapus, meskipun SYSTEM_VERSIONING adalah ON.

Melakukan operasi skema

Ketika SYSTEM_VERSIONING diatur ke ON, operasi modifikasi skema dibatasi.

Operasi yang dilarang ALTER SCHEMA

Pengoperasian Tabel saat ini Tabel riwayat
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION SWITCH IN hanya (lihat Mempartisi dengan tabel temporal) SWITCH OUT hanya (lihat Mempartisi dengan tabel temporal)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Operasi yang diizinkan ALTER TABLE

Pengoperasian Current History
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

Feature Membuat tabel riwayat baru Gunakan kembali tabel riwayat yang sudah ada
Izin diperlukan CREATE TABLE izin akses dalam basis data

ALTER izin akses pada skema tempat Anda membuat tabel saat ini dan tabel riwayat
CREATE TABLE izin akses dalam basis data

ALTER izin pada skema tempat tabel saat ini dibuat.

CONTROL izin pada tabel riwayat yang ditentukan sebagai bagian dari pernyataan CREATE TABLE yang membuat tabel temporal.
Audit Audit menunjukkan bahwa pengguna mencoba membuat dua objek. Operasi ini mungkin gagal karena kurangnya izin untuk membuat tabel di 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 tabel temporal SET (SYSTEM_VERSIONING)

Feature Membuat tabel riwayat baru Gunakan kembali tabel riwayat yang sudah ada
Izin diperlukan CONTROL izin dalam basis data.

CREATE TABLE izin dalam basis data.

ALTER izin pada skema tempat Anda membuat tabel riwayat.
CONTROL izin pada tabel asli yang Anda ubah.

CONTROL izin untuk tabel riwayat yang ditentukan sebagai bagian dari pernyataan ALTER TABLE.
Audit Audit menunjukkan bahwa tabel temporal diubah dan tabel riwayat dibuat secara bersamaan. Operasi ini mungkin gagal karena kurangnya izin untuk membuat tabel di database, tidak adanya izin untuk mengubah skema tabel riwayat, atau tidak adanya izin untuk memodifikasi 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 pernyataan SELECT yang memengaruhi tabel riwayat, Anda memerlukan izin akses SELECT baik pada tabel saat ini maupun tabel riwayat.