Keamanan Tabel Temporal

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

Untuk memahami keamanan seperti yang berlaku untuk tabel temporal, penting untuk memahami prinsip keamanan yang berlaku untuk tabel temporal. Setelah Anda memahami prinsip-prinsip keamanan ini, Anda siap untuk menyelami keamanan di sekitar pernyataan CREATE TABLE, 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 dan riwayat
Data riwayat tidak dapat dimodifikasi secara langsung Saat SYSTEM_VERSIONING adalah pengguna AKTIF tidak dapat mengubah data riwayat terlepas dari izin aktual mereka pada tabel saat ini atau riwayat. Ini termasuk modifikasi data dan skema.
Mengkueri data riwayat memerlukan izin SELECT pada tabel riwayat Hanya karena pengguna memiliki izin SELECT pada tabel saat ini tidak berarti bahwa mereka memiliki izin SELECT pada tabel riwayat.
Operasi permukaan audit 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 menangkap semua upaya langsung untuk mengakses data (terlepas dari apakah mereka berhasil atau tidak).

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

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

Operasi DML pada permukaan tabel saat ini yang tabel riwayatnya terpengaruh tetapi additional_info menyediakan konteks yang diperlukan (DML adalah hasil dari system_versioning).

Melakukan Operasi Skema

Ketika SYSTEM_VERSIONING diatur ke AKTIF, operasi modifikasi skema dibatasi.

Operasi skema ALTER yang tidak diizinkan

Operasi Tabel Saat Ini Tabel Riwayat
DROP TABLE Batasan Batasan
UBAH TABEL... BERALIH PARTISI SWITCH IN saja (lihat Partisi dengan Tabel Temporal) BERALIH KELUAR saja (lihat Pemartisian dengan Tabel Temporal)
UBAH TABEL... PERIODE JATUH Batasan -
UBAH TABEL... TAMBAHKAN TITIK - Batasan

Operasi ALTER TABLE yang diizinkan

Operasi Saat ini Riwayat
UBAH TABEL... MEMBANGUN Diizinkan (secara independen) Diizinkan (secara independen)
CREATE INDEX Diizinkan (secara independen) Diizinkan (secara independen)
CREATE STATISTICS Diizinkan (secara independen) Diizinkan (secara independen)

Keamanan Pernyataan CREATE Temporal TABLE

Fitur Buat Tabel Riwayat Baru Gunakan Kembali Tabel Riwayat yang Ada
Izin Diperlukan Izin CREATE TABLE dalam database

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

UBAH izin pada skema tempat tabel saat ini akan dibuat.

Izin CONTROL 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 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 telah dibuat. Operasi mungkin gagal karena kurangnya izin untuk membuat tabel dalam database, karena 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 Buat Tabel Riwayat Baru Gunakan Kembali Tabel Riwayat yang Ada
Izin Diperlukan Izin CONTROL dalam database

Izin CREATE TABLE dalam database

UBAH izin pada skema tempat tabel riwayat sedang dibuat
Izin CONTROL pada tabel asli yang diubah

Izin CONTROL pada tabel riwayat yang ditentukan sebagai bagian dari pernyataan ALTER TABLE
Audit Audit menunjukkan bahwa tabel temporal diubah dan tabel riwayat dibuat secara bersamaan. Operasi mungkin gagal karena kurangnya izin untuk membuat tabel dalam database, karena kurangnya izin untuk mengubah skema untuk tabel riwayat, atau karena 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

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

Lihat juga